What Is kiro-rs?
kiro-rs is one of the best API Compatibility Proxies tools for developers and platform teams that need a self-hosted Claude-compatible gateway. Built by ZyphrZero in Rust, it converts Anthropic Claude API requests into Kiro API calls, handles OAuth token refresh, and supports Opus 4.7, Opus 4.6, and Sonnet 4.6 with 1M context windows.
Quick Overview
| Attribute | Details |
|---|---|
| Type | API Compatibility Proxies |
| Best For | Developers and teams that want a self-hosted Claude-compatible gateway for Kiro |
| Language/Stack | Rust, JSON config, SSE, OAuth token refresh, Docker |
| License | N/A (not listed in scraped text) |
| GitHub Stars | N/A as of Feb 2026 |
| Pricing | Open-Source |
| Last Release | v0.4.0+ — date not listed |
Who Should Use kiro-rs?
- Platform teams that need one Anthropic-shaped endpoint for multiple apps, scripts, and agent runtimes without rewriting clients.
- Indie hackers shipping Claude-based workflows who want local control over API keys, regions, retry policy, and proxy routing.
- Ops-heavy teams that manage several upstream credentials and need priority failover, balanced distribution, and token writeback.
- Teams building on Claude-compatible clients such as Claude Code Canvas or Claude Context Mode can point those clients at kiro-rs and keep the same request shape.
Not ideal for:
- Teams that only need a direct Kiro integration for a single private app and do not want an extra gateway hop.
- Groups that cannot self-host a Rust service, manage config files, or secure API keys and refresh tokens.
- Buyers who want a hosted SaaS with an SLA instead of owning the runtime, logs, and upgrade path.
Key Features of kiro-rs
- Anthropic API compatibility — kiro-rs accepts Claude-style requests on
/v1/messagesand supports the Claude Code-compatible/cc/v1path. That lets existing SDKs and agents keep their request semantics while the proxy handles upstream translation. - SSE streaming — the service emits Server-Sent Events for token-by-token output, which is what most Claude clients expect for interactive completions. This matters for long responses and tool use because the client does not need to wait for a full buffer.
- Automatic token refresh — kiro-rs refreshes OAuth tokens on its own and can write refreshed values back when you run multiple credentials. That removes a lot of manual token churn in long-lived self-hosted setups.
- Multi-credential routing — you can configure several credentials and choose either
priorityfailover orbalanceddistribution. The service retries a single credential up to 3 times and a request up to 9 times, which is useful when one upstream account is rate-limited or temporarily unhealthy. - Extended thinking and tool use — kiro-rs supports Claude thinking mode, function calling, and built-in WebSearch translation. That keeps agentic flows intact instead of forcing you to strip features down to plain text generation.
- Region and proxy isolation — global and per-credential
authRegionandapiRegionsettings let you separate authentication from request routing. Per-credential HTTP or SOCKS5 proxies also take precedence over the global proxy, which is useful when different upstream accounts must exit through different networks. - Admin UI and usage telemetry — the optional web admin panel manages credentials, balance checks, and client-key distribution through
csk_*keys. From v0.4.0+ it also records usage in rolling JSONL files and shows model, token, and credential breakdowns in a dashboard.
kiro-rs vs Alternatives
| Tool | Best For | Key Differentiator | Pricing |
|---|---|---|---|
| kiro-rs | Self-hosted Claude-compatible access to Kiro | Kiro-specific translation, token refresh, multi-credential routing, admin UI | Open-Source |
| LiteLLM | Teams that need one gateway for many model providers | Broader provider coverage and OpenAI-compatible routing across vendors | Open-Source |
| OpenRouter | Teams that want a hosted model marketplace | No infrastructure to run and a large catalog of models behind one API | Paid |
| Custom Rust proxy | Strict internal workflows that need full source-level control | You own every mapping, retry rule, and auth edge case | Open-Source / DIY |
Pick kiro-rs when the upstream is specifically Kiro and you want Anthropic-shaped clients to keep working without adapter code. Pick LiteLLM when the gateway must span multiple providers and the Kiro-specific behavior is not the main requirement.
Use OpenRouter when you do not want to run infrastructure at all and you are fine with a hosted service. If you only need debugging around this gateway boundary, pair kiro-rs with OpenTrace so you can inspect request timing, upstream retries, and token flow without instrumenting every client.
How kiro-rs Works
kiro-rs sits between Claude-compatible clients and Kiro upstream APIs, then rewrites request and response payloads so the caller still sees an Anthropic-shaped interface. The core design is a Rust service with file-based configuration, explicit region settings, and a credential pool that handles auth, retries, and token refresh without moving logic into the client.
The proxy makes a few deliberate trade-offs. It keeps the request path simple, pushes credential state into config.json and credentials.json, and uses a TLS backend that can switch between rustls and native-tls when environment constraints force it. If you are fronting multiple apps, that separation lets you tune regions, proxies, and fallback order per credential instead of baking those decisions into application code.
cargo build --release
./target/release/kiro-rs -c /path/to/config.json --credentials /path/to/credentials.json
curl http://127.0.0.1:8990/v1/messages -H 'Content-Type: application/json' -H 'x-api-key: sk-kiro-rs-qazWSXedcRFV123456' -d @request.json
The first command builds the Rust binary, the second starts the proxy with explicit config files, and the third verifies that the gateway accepts a Claude-style request. If token refresh fails or requests return errors, the project notes that switching tlsBackend to native-tls often fixes certificate and proxy-chain issues.
If you need higher throughput or fewer upstream stalls, the optional Redis cache can sit beside the proxy to speed prompt reuse. That setup is closest to how you would deploy a local API gateway for agents, especially if downstream clients include Claude Code Canvas or Claude Context Mode.
Pros and Cons of kiro-rs
Pros:
- Keeps Claude-compatible clients unchanged because the proxy preserves Anthropic request shapes.
- Supports streaming, tool use, and extended thinking, so agent workflows keep their interactive behavior.
- Handles token refresh and writeback, which reduces manual maintenance in multi-account deployments.
- Supports per-credential proxies and region overrides, which is useful in mixed network environments.
- Includes an admin panel with credential management, client-key distribution, and usage dashboards in v0.4.0+.
- Can run in Docker with prebuilt multi-architecture images, which lowers the setup cost for ARM and x86 hosts.
Cons:
- You still own the infrastructure, secrets, logs, and upgrade path because this is self-hosted software.
- The project is Kiro-specific, so it is less useful than a general-purpose gateway when you need many model vendors.
- TLS backend selection can be annoying in some environments, especially when certificate chains or HTTP proxies are involved.
- The admin UI requires a front-end build step if you compile from source, which adds one more toolchain dependency.
- Long outputs can surface write-failed or session-stall issues, so token limits and output size need real tuning.
Getting Started with kiro-rs
The fastest path is to build the binary, create the config files, and start the proxy on a local port. If you want the admin panel embedded into the build, compile the front-end first, then run the Rust release build and point the process at your config files.
cd admin-ui && bun install && bun run build
cargo build --release
./target/release/kiro-rs -c /path/to/config.json --credentials /path/to/credentials.json
After startup, kiro-rs listens on the configured host and port, then exposes /v1/messages for Claude-compatible clients. You will also need a valid apiKey in config.json, and if you want the admin dashboard you should set adminApiKey before exposing the service beyond localhost.
For Docker, the repository documents a minimal deployment that mounts a persistent data/ directory and auto-generates initial secrets on first boot. That route is easier if you want repeatable upgrades, prebuilt binaries, and a single state directory that you can back up with tar.
Verdict
kiro-rs is the strongest option for self-hosting a Claude-compatible gateway to Kiro when you need token refresh, multi-credential failover, and admin control in one Rust binary. Its main strength is that it preserves existing Anthropic clients; its main caveat is that you now own the proxy and its operational overhead. Use it when Kiro is the upstream and you want control, not a hosted abstraction.



