A lightweight local OpenAI-compatible model API key router
Project description
Auto Model Key Router
一个本地 OpenAI-compatible API 路由器:把多个模型和多个上游 API Key 统一收口到本地服务,自动分流、失败切换、统计调用,并可一键接入 Claude Code / Codex。
主要能力
- 多 Key 路由:同一模型可配置多个 Key,支持
round_robin、priority、only_first。 - 失败切换与冷却:遇到
401/403/429/5xx等可重试错误时自动重试或切换 Key,并持久化冷却状态。 - 统一模型名:客户端固定请求
unified-model,真实模型和固定 Key 可在路由器侧随时切换。 - OpenAI-compatible 代理:支持
/v1/chat/completions、/v1/models,并兼容 Claude Code 的/v1/messages与 Codex 的/v1/responses;可为不同协议模式配置上游额外路径。 - Terminal UI 管理:在 TUI 中配置模型、Key、统一模型、服务注册和客户端接入。
- 访客 Key:安装
visitorextra 后,可用固定访客 Key 暴露受限公共模型。 - 统计与日志:记录本地/访客调用、模型、Key、状态码、token、重试、延迟等指标。
安装
需要 Python >=3.12。
pipx install auto-model-key-router
# 或
uv tool install auto-model-key-router
启用访客 Key 功能:
pipx install "auto-model-key-router[visitor]"
# 或
uv tool install "auto-model-key-router[visitor]"
安装后可使用两个等价命令:
amkr --version
auto-model-key-router --version
快速开始
1. 启动 Terminal UI
amkr
首次启动会在系统缓存目录自动创建配置文件和本地鉴权 Key。你也可以复制示例配置到当前目录:
cp router-config.example.json router-config.json
amkr --config router-config.json
Windows PowerShell 可使用:
copy router-config.example.json router-config.json
amkr --config router-config.json
2. 配置模型与 Key
在 TUI 中进入:
- 模型 Key:添加真实模型和上游 API Key。
- 统一模型:把
unified-model指向一个真实模型,必要时固定到某个 Key。 - 一键配置 → 路由服务:启动或注册本地代理服务。
- 一键配置 → Claude Code / Codex:按需自动写入客户端配置。
3. 调用本地代理
默认服务地址是:
http://127.0.0.1:8000
请求示例:
curl http://127.0.0.1:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer amkr_your-local-api-key" \
-d '{
"model": "unified-model",
"messages": [{"role": "user", "content": "hello"}]
}'
也可以把 model 写成真实模型 ID、模型 alias,或 模型ID[key name] 来显式指定某个 Key。
常用命令
# 打开 TUI
amkr
# 使用指定配置文件打开 TUI
amkr --config router-config.json
# 后台启动 / 查看状态 / 停止
auto-model-key-router --config router-config.json --serve
auto-model-key-router --config router-config.json --status
auto-model-key-router --config router-config.json --stop
# 注册、管理系统服务
auto-model-key-router --config router-config.json --install-service
auto-model-key-router --config router-config.json --service status
auto-model-key-router --config router-config.json --service restart
# 查看配置摘要、日志与统计
auto-model-key-router --config router-config.json --show-config
auto-model-key-router --config router-config.json --show-logs 50
# 管理 unified-model
auto-model-key-router --config router-config.json --show-unified-model
auto-model-key-router --config router-config.json --switch-model gpt-4o-mini
auto-model-key-router --config router-config.json --switch-key auto
配置示例
{
"host": "127.0.0.1",
"port": 8000,
"default_base_url": "https://api.openai.com",
"upstream_routes": {
"https://example.com/tokenplan": {
"anthropic": "anthropic/"
}
},
"request_timeout": 60,
"max_retries": 2,
"key_failure_threshold": 2,
"key_cooldown_seconds": 60,
"local_api_key": "amkr_your-local-api-key",
"unified_model": {
"model": "gpt-4o-mini",
"key": null
},
"models": [
{
"id": "gpt-4o-mini",
"aliases": ["fast-mini"],
"routing_mode": "round_robin",
"keys": [
{"name": "openai-main", "api_key": "sk-your-first-upstream-key"},
{"name": "openai-backup", "api_key": "sk-your-second-upstream-key"},
{
"name": "mimo-tokenplan",
"api_key": "sk-your-third-upstream-key",
"base_url": "https://example.com/tokenplan"
}
]
}
]
}
local_api_key是客户端访问本地 AMKR 的 Key;keys[].api_key是 AMKR 转发到上游模型服务时使用的真实供应商 Key。
文档
- 完整使用教程:从安装、配置、启动、请求到 Claude Code / Codex 接入的完整流程。
- CLI 参考:所有命令行参数与示例。
- HTTP API 参考:代理、健康检查、统计和管理接口。
- 更新日志:版本变更记录。
- 配置示例:可复制修改的完整 JSON 示例。
访客 Key 简介
安装 auto-model-key-router[visitor] 后,可以用固定 Key amkr-visitor 暴露受限公共模型。只有设置了 allow_visitor: true 的上游 Key 才能被访客使用,访客看到的模型名格式为 amkr-{真实模型ID}。
详细限制和示例见 完整使用教程:使用访客 Key。
开发
git clone https://github.com/sparr68/auto-model-key-router.git
cd auto-model-key-router
pip install -e ".[test]"
pytest
安全提示
- 不要把真实上游 API Key 提交到 Git。
local_api_key为空会关闭本地鉴权;仅建议在可信本机环境使用。- 如果监听
0.0.0.0或暴露到局域网/公网,请务必启用本地鉴权并配置防火墙。
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file auto_model_key_router-2.2.3.tar.gz.
File metadata
- Download URL: auto_model_key_router-2.2.3.tar.gz
- Upload date:
- Size: 140.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
79735d123d782cfed5e9d0c8a383d486cdb243879b55ef7588662aac5fb765a7
|
|
| MD5 |
4b0706bafcb821336459bca13081275f
|
|
| BLAKE2b-256 |
62a26456506ce8c2a81a876f65096ced84e9c9ac2e85c9c9918f8fd729ad485d
|
Provenance
The following attestation bundles were made for auto_model_key_router-2.2.3.tar.gz:
Publisher:
publish-pypi.yml on Sparrived/auto-model-key-router
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
auto_model_key_router-2.2.3.tar.gz -
Subject digest:
79735d123d782cfed5e9d0c8a383d486cdb243879b55ef7588662aac5fb765a7 - Sigstore transparency entry: 1892404593
- Sigstore integration time:
-
Permalink:
Sparrived/auto-model-key-router@bf7236d04027825e3440d6e45b39e3396a5b2c32 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/Sparrived
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@bf7236d04027825e3440d6e45b39e3396a5b2c32 -
Trigger Event:
workflow_run
-
Statement type:
File details
Details for the file auto_model_key_router-2.2.3-py3-none-any.whl.
File metadata
- Download URL: auto_model_key_router-2.2.3-py3-none-any.whl
- Upload date:
- Size: 117.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7709605fbd3176c0de751652053cda2f8e8fbbbd6333085a30841cdf0936dc75
|
|
| MD5 |
e35a3c7d5846d88fc0438cea1feded2a
|
|
| BLAKE2b-256 |
50912a1f96bb36d781236e376476c32a7e8842167a129c79b6e145bb02d7f762
|
Provenance
The following attestation bundles were made for auto_model_key_router-2.2.3-py3-none-any.whl:
Publisher:
publish-pypi.yml on Sparrived/auto-model-key-router
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
auto_model_key_router-2.2.3-py3-none-any.whl -
Subject digest:
7709605fbd3176c0de751652053cda2f8e8fbbbd6333085a30841cdf0936dc75 - Sigstore transparency entry: 1892404710
- Sigstore integration time:
-
Permalink:
Sparrived/auto-model-key-router@bf7236d04027825e3440d6e45b39e3396a5b2c32 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/Sparrived
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@bf7236d04027825e3440d6e45b39e3396a5b2c32 -
Trigger Event:
workflow_run
-
Statement type: