Skip to content

Releases: vasic-digital/claude-code-router

v0.4.2 — transport + hot-reload + load/soak live suites

Choose a tag to compare

@milos85vasic milos85vasic released this 19 Jul 18:09

Three more LIVE end-to-end suites: test/livetls (HTTP/2 over TLS + Alt-Svc h3 + real HTTP/3-over-QUIC + no-TLS-http3 error), test/livereload (config hot-reload detected/rejected/honest-boundary live), test/liveload (500 concurrent requests with exact metric equality, in-flight quiesce, cache-under-load, 200 streams, 44k-request soak, zero errors). Plus a free-port retry so heavy port churn does not spuriously fail. Tests only; no gateway behavior change.

v0.4.1 — metrics polish + live e2e harness

Choose a tag to compare

@milos85vasic milos85vasic released this 19 Jul 17:53

Metrics-attribution polish (per-attempt gen_ai upstream, native tokens, semantic Stats) + a comprehensive LIVE end-to-end harness (test/live): builds ccr, starts a fake upstream + ccr serve subprocess on loopback, drives real HTTP + scrapes /metrics across 9 scenarios (translation, streaming, OpenAI facade, error mapping, cache HIT, fallback, semantic, config validate/show). Plus v0.4.x docs + LIVE_TESTING.md. Full suite green under -race. No behavior change to served responses.

v0.4.0 — /metrics + semantic cache wired

Choose a tag to compare

@milos85vasic milos85vasic released this 19 Jul 17:13

Observability + semantic cache tier now WIRED live: a /metrics endpoint on the management server (RED + gen_ai token/cache counters, secret-free labels, live-proven), an opt-in semantic response-cache tier (Cache.semantic), and Router.think activation. Plus exhaustive verification suites (fuzzers) across cache/metrics/logging/proxy. All opt-in additions default OFF/inert; existing configs byte-identical. Reviewed; full suite green under -race. See CHANGELOG.md.

v0.3.0 — response cache + cross-provider fallback

Choose a tag to compare

@milos85vasic milos85vasic released this 19 Jul 16:16

Response cache and cross-provider fallback are now WIRED and live (both opt-in, default OFF — existing configs unchanged). Plus a semantic cache tier (opt-in), a self-contained Prometheus metrics package, and a deterministic local embedder. Reviewed by 3 focused task-reviews + a final whole-branch review; full suite green under -race incl chaos/security/mutation/helixqa. See CHANGELOG.md.

v0.2.0 — multi-protocol gateway

Choose a tag to compare

@milos85vasic milos85vasic released this 19 Jul 14:54

Multi-protocol gateway: OpenAI-compatible inbound facade (POST /v1/chat/completions) + Anthropic-native passthrough, reusable path->protocol classifiers, Router.Think/LongContext routing, config hot-reload, and access logging with secret redaction. All upstream test-port GAP skips closed (0 remaining); full suite green under -race incl. chaos/security/mutation/helixqa. See CHANGELOG.md.

v0.1.0 — Claude Code Router in Go

Choose a tag to compare

@milos85vasic milos85vasic released this 19 Jul 10:45

First release.

A clean-room Go reimplementation of @musistudio/claude-code-router (MIT). No upstream source was copied; the wire formats, CLI grammar, configuration layout and default ports are reproduced deliberately so existing installations keep working. Upstream attribution is retained in NOTICE.

Why

A 26MB static binary with zero Node dependencies, replacing a Node 22+ runtime requirement.

What works

Area Detail
Gateway Gin; HTTP/3+QUIC (opt-in, TLS-required); brotli → gzip → identity
Endpoints POST /v1/messages (non-streaming + SSE), GET /health, GET /ready
Translate Anthropic ↔ OpenAI: system prompts, content blocks, tool_use/tool_result, cleancache
Router default/background routing, explicit provider/model selector, failure classification, fallback chain
Proxy verbatim endpoint; HTTP(S)_PROXY/NO_PROXY and authenticated upstream proxies
CLI start, ui, serve, web, stop, profile grammar, --gateway-host/--gateway-port

Compatibility

  • Loads an existing ~/.claude-code-router/config.json unchanged — verified against a real 20-provider config.
  • ccr --help contains ccr start/ccr serve, so claude_toolkit's identity guard accepts this binary.
  • ccr <unknown> prints Profile "<unknown>" was not found or is disabled. and exits 1, matching Node.

Verification

  • 12 packages green under go test -race
  • scripts/preflight.sh — 5/5 (gofmt, vet, build, race, secret scan)
  • Mutation harness: killed=6, survived=0
  • HelixQA: 96 schema-validated cases; chaos: 12 scenarios; security: 14 tests
  • Live-socket verified: /health, /ready, brotli 91B→33B decoded over the wire

Known limitations

  • Inbound auth (RequireAPIKey) exists but is not installed on any route — enabling it by default would break existing callers.
  • The fallback/retry classifiers are not yet driven by a retry loop; proxy.Client.Do makes one attempt.
  • Vision/image content blocks return an explicit error rather than being silently dropped.
  • One upstream GAP deliberately unported: ambiguous bare-model resolution would let a request bypass Router.default.

🤖 Generated with Claude Code