Short version: read the code, open an issue or PR, expect honest feedback. Apache-2.0.
- Bug reports. With a reproducer if possible. The 19-day-old codebase is small enough that a clear repro usually unblocks a same-week fix.
- New upstream adapters. If you have a provider with an OpenAI-compatible or Anthropic-compatible API that doesn't quite slot in, an adapter test + a config example is the cleanest contribution shape.
- Docs. If you set up ccg-router and something in the README / docs was wrong or unclear, fix it. We notice docs PRs.
- Tests for paths that aren't covered.
go test ./... -race -count=1should be green onmainat all times; any gap you find is fair game. - Streaming edge cases. v0.2 just shipped streaming passthrough. Bugs around mid-stream upstream errors, client disconnects, weird SSE framing, etc. are interesting to us.
- Hosted-service integrations or telemetry. The whole point is "no hosted control plane".
- Feature flags for behavior the project doesn't have.
- Large refactors without a prior issue to align on scope.
- Cosmetic README rewrites.
git clone https://github.com/XZXY-AI/ccg-router.git
cd ccg-router
# Make your change. Add tests.
go test ./... -race -count=1
go vet ./...
go run golang.org/x/vuln/cmd/govulncheck@latest ./...
git checkout -b your-branch
git commit -m "type: terse subject"
# Open a PR against main.All three pre-flight commands run in CI too — if any fails locally, it'll fail in CI.
Conventional-ish, terse:
feat: streaming passthrough for /v1/messages
fix: dispatcher panics when upstream returns 0-byte body
docs: clarify model_map example
test: cover ledger Window query at midnight UTC boundary
ci: bump Go to 1.25.10 for stdlib vuln fixes
main requires CI green. PRs from external contributors run the test job; once it passes, a maintainer merges.
The two roadmap items below are the explicit "yes, send a PR here" invitations. Other issues are also welcome; the response time on a clean reproducer is usually under 48h.
- v0.3: ledger visualization (#6)
- v0.4: encrypted-at-rest ledger (#7)
Don't be a jerk. Substantive technical disagreement is welcome and useful; personal attacks aren't.
By contributing, you agree your contribution is licensed under Apache-2.0.