Ways to contribute
- Bug reports — open a GitHub issue with a minimal reproduction
- Missing API actions — open a feature request describing the AWS behavior you need
- Pull requests — new service implementations, bug fixes, or improvements
- Documentation — clarifications, examples, and corrections are always welcome
- Compatibility tests — add cases to the floci-compatibility-tests project
GitHub Issues
Report bugs or request missing AWS API actions.
GitHub Discussions
Feature ideas, compatibility questions, design tradeoffs — no idea too early.
Slack community
Ask questions, share feedback, and connect with other contributors.
Pull requests
Submit fixes, new service actions, or documentation improvements.
Development setup
Install prerequisites
You need:
- Java 25+ — any distribution works. SDKMAN is a convenient way to install it:
- Maven 3.9+ — the repo includes a Maven wrapper (
./mvnw), so a separate installation is optional. - Docker — required for integration tests that spin up Lambda, RDS, and ElastiCache containers.
Run in dev mode
The Maven wrapper starts Quarkus with hot reload on port 4566:If you prefer your own Maven installation (3.9+), use
mvn instead of ./mvnw.Commit message format
Floci uses Conventional Commits. semantic-release reads these to generate the changelog and version bumps automatically.| Prefix | When to use | Version bump |
|---|---|---|
feat: | New AWS API action or service | minor |
fix: | Bug fix or AWS compatibility correction | patch |
perf: | Performance improvement | patch |
docs: | Documentation only | none |
chore: | Build, CI, dependencies | none |
feat!: / BREAKING CHANGE: | Incompatible change | major |
Pull request checklist
./mvnw testpasses locally- New or updated integration test added for any changed behavior
- Commit messages follow Conventional Commits
- PR is focused — one feature or fix per PR
- Related issues are referenced in the PR description
- If no new tests are included, the PR description explains why
AGENT.md is the canonical agent instructions file for this repository. It contains the full architecture guide, protocol rules, and conventions for adding new services. If your coding agent expects a different filename, create a local symlink rather than copying it:Adding a new AWS service
See Architecture for the full protocol and package conventions. Quick summary:- Create
src/main/java/.../services/<service>/with a Controller, Service, andmodel/package - Pick the right protocol (Query, JSON 1.1, REST JSON, or REST XML)
- Register the service in
ServiceRegistry - Add config entries in
EmulatorConfig.javaandapplication.yml - Add
*IntegrationTest.javatests