https://github.com/aprilnea/byokey
Turn AI subscriptions into standard API endpoints. OpenAI & Anthropic compatible gateway — for Amp Code, Cursor, Factory CLI, and more.
https://github.com/aprilnea/byokey
ai-gateway amp anthropic-api claude copilot cursor gemini llm oauth openai-api proxy rust
Last synced: 3 months ago
JSON representation
Turn AI subscriptions into standard API endpoints. OpenAI & Anthropic compatible gateway — for Amp Code, Cursor, Factory CLI, and more.
- Host: GitHub
- URL: https://github.com/aprilnea/byokey
- Owner: AprilNEA
- License: other
- Created: 2026-02-20T19:25:29.000Z (4 months ago)
- Default Branch: master
- Last Pushed: 2026-02-26T10:26:20.000Z (4 months ago)
- Last Synced: 2026-02-26T13:58:34.793Z (4 months ago)
- Topics: ai-gateway, amp, anthropic-api, claude, copilot, cursor, gemini, llm, oauth, openai-api, proxy, rust
- Language: Rust
- Size: 796 KB
- Stars: 6
- Watchers: 0
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE-APACHE
- Agents: AGENTS.md
Awesome Lists containing this project
README
# BYOKEY
**Bring Your Own Keys**
Turn AI subscriptions into standard API endpoints.
Expose any provider as OpenAI- or Anthropic-compatible API — locally or in the cloud.
[](https://github.com/AprilNEA/BYOKEY/actions/workflows/ci.yml)
[](https://crates.io/crates/byokey)
[](LICENSE-MIT)
[](https://www.rust-lang.org)
```
Subscriptions Tools
Claude Pro ─┐ ┌── Amp Code
OpenAI Plus ─┼── byokey serve ────────────┼── Cursor · Windsurf
Copilot ─┘ ├── Factory CLI (Droid)
└── any OpenAI / Anthropic client
```
## Features
- **Multi-format API** — OpenAI and Anthropic compatible endpoints; just change the base URL
- **OAuth login flows** — PKCE, device-code, and auth-code flows handled automatically
- **Token persistence** — SQLite at `~/.byokey/tokens.db`; survives restarts
- **API key passthrough** — Set raw keys in config to skip OAuth entirely
- **Deploy anywhere** — Run locally as a CLI, or deploy as a shared AI gateway
- **Agent-ready** — Native support for [Amp Code](https://ampcode.com); [Factory CLI (Droid)](https://factory.ai) coming soon
- **Hot-reload config** — YAML-based with sensible defaults
## Supported Providers

Claude
PKCE
opus-4-6 · sonnet-4-5 · haiku-4-5

Codex
PKCE
o4-mini · o3

Copilot
Device code
gpt-5.x · claude-sonnet-4.x · gemini-3.x

Gemini
PKCE
2.0-flash · 1.5-pro · 1.5-flash

Kiro
Device code
kiro-default
> **Coming soon** — auth implemented, executor in progress:
> Antigravity (Google) · Qwen (Alibaba) · Kimi (Moonshot) · iFlow (Z.ai)
## Installation
**Homebrew (macOS / Linux)**
```sh
brew install AprilNEA/tap/byokey
```
**From crates.io**
```sh
cargo install byokey
```
**From source**
```sh
git clone https://github.com/AprilNEA/BYOKEY
cd BYOK
cargo install --path .
```
> **Requirements:** Rust 1.85+ (edition 2024), a C compiler for SQLite.
## Quick Start
```sh
# 1. Authenticate (opens browser or shows a device code)
byokey login claude
byokey login codex
byokey login copilot
# 2. Start the proxy
byokey serve
# 3. Point your tool at it
export OPENAI_BASE_URL=http://localhost:8018/v1
export OPENAI_API_KEY=any # byokey ignores the key value
```
**For Amp:**
```jsonc
// ~/.amp/settings.json
{
"amp.url": "http://localhost:8018/amp"
}
```
## CLI Reference
```
byokey
Commands:
serve Start the proxy server (foreground)
start Start the proxy server in the background
stop Stop the background proxy server
restart Restart the background proxy server
autostart Manage auto-start on system boot
login Authenticate with a provider
logout Remove stored credentials for a provider
status Show authentication status for all providers
accounts List all accounts for a provider
switch Switch the active account for a provider
amp Amp-related utilities
openapi Export the OpenAPI specification as JSON
completions Generate shell completions
help Print help
```
Command details
**`byokey serve`**
```
Options:
-c, --config Config file (JSON or YAML) [default: ~/.config/byokey/settings.json]
-p, --port Listen port [default: 8018]
--host Listen address [default: 127.0.0.1]
--db SQLite DB path [default: ~/.byokey/tokens.db]
```
**`byokey start`** — Same options as `serve`, plus `--log-file` (default: `~/.byokey/server.log`).
**`byokey login `**
Runs the appropriate OAuth flow for the given provider.
Supported names: `claude`, `codex`, `copilot`, `gemini`, `kiro`,
`antigravity`, `qwen`, `kimi`, `iflow`.
```
Options:
--db SQLite DB path [default: ~/.byokey/tokens.db]
```
**`byokey logout `** — Deletes the stored token for the given provider.
**`byokey status`** — Prints authentication status for every known provider.
**`byokey accounts `** — Lists all accounts for a provider.
**`byokey switch `** — Switches the active account for a provider.
**`byokey autostart `** — Manages boot-time service registration.
**`byokey amp `** — Amp utilities: inject proxy URL into Amp config, or patch Amp to hide ads.
## Configuration
Create a config file (JSON or YAML, e.g. `~/.config/byokey/settings.json`) and pass it with `--config`:
```yaml
port: 8018
host: 127.0.0.1
providers:
# Use a raw API key (takes precedence over OAuth)
claude:
api_key: "sk-ant-..."
# Disable a provider entirely
gemini:
enabled: false
# OAuth-only (no api_key) — use `byokey login codex` first
codex:
enabled: true
```
All fields are optional; unspecified providers are enabled by default and use
the OAuth token stored in the database.
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md) for build commands, architecture details, and coding guidelines.
## License
Licensed under either of [MIT](LICENSE-MIT) or [Apache-2.0](LICENSE-APACHE) at your option.