Skip to content
CHzqbPublic

About

Zero-login gateway: run Claude Code / OpenCode / Aider on Ollama, LM Studio, vLLM or any OpenAI-compatible model. Anthropic<>OpenAI translation, streaming + tool calls, pure Python stdlib.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

Repository files navigation

⚡ KeyDeck

让你的编码 Agent 摆脱账号登录 —— Claude Code、OpenCode、Aider 直接跑在 Ollama / LM Studio / vLLM / 任意 OpenAI 兼容端点上

内置 Anthropic ⇄ OpenAI 双向协议翻译,支持流式与工具调用。 纯 Python 标准库,零第三方依赖,一条命令启动。

English · 简体中文

license MIT python deps status beta

⭐ 如果觉得有用,点个 Star 是对项目最大的支持!


为什么需要 KeyDeck?

你可能遇到过这些场景:

  • 公司/网络环境无法登录 Claude / OpenAI 账号,但 Claude Code 的终端体验又回不去了
  • 手上只有 Ollama / LM Studio 跑的本地模型,想给 coding agent 用,却被各种登录墙和厂商锁定挡住
  • 想在同一个提示词下对比几家模型(Qwen / DeepSeek / GLM)的代码能力,不想装三个客户端
  • 不想为"把 Claude Code 接到本地模型"再搭一套 LiteLLM / one-api 服务

现有方案要么重度绑定厂商账号(Claude Code、Codex 官方链路),要么部署很重(LiteLLM 带一整套依赖)。KeyDeck 是一个单文件即可分发的本地中转:说 Anthropic 协议的进,说 OpenAI 协议的出,双向翻译、流式透传、工具调用完整保留。

┌─────────────────┐   Anthropic API   ┌──────────────┐   OpenAI API    ┌──────────────────┐
│  Claude Code    │ ────────────────► │              │ ──────────────► │ Ollama           │
│  (无需登录)      │ ◄──────────────── │  KeyDeck   │ ◄────────────── │ LM Studio        │
├─────────────────┤   流式 + 工具调用  │  本地代理     │   SSE 流式      │ vLLM             │
│  OpenCode/Aider │ ────────────────► │  零依赖       │ ──────────────► │ DeepSeek/OpenAI… │
└─────────────────┘                   └──────────────┘                  └──────────────────┘

特性一览

特性 说明
🔓 免登录 把 Claude Code 指向本地 relay,厂商账号从此无关
🔁 双向协议翻译 /v1/messages(Anthropic)与 /v1/chat/completions(OpenAI)互转,含 SSE 流式
🛠️ 工具调用保真 tool_use ⇄ tool_calls 完整映射——agentic 编码流程不受损
🧩 多上游聚合 Ollama / LM Studio / vLLM / llama.cpp / DeepSeek / Moonshot / OpenRouter / 任意 OpenAI 兼容端点
⚖️ 一条命令对比多模型 keydeck ask "a::qwen,a::glm" "这段代码有什么问题?" 并发提问、并排看答案
🚫 零依赖 纯标准库实现(Python 3.10+),pipx install 即用,无 LiteLLM
🔌 Anthropic 上游直通 上游也可以是任何 Anthropic 兼容服务(New API / 自建网关)

快速开始

1. 安装

pipx install keydeck        # 或 pip install keydeck
不想安装?直接从源码跑
git clone https://github.com/CHzqb/keydeck && cd keydeck
pip install -e .

2. 配置上游(10 秒)

keydeck init        # 生成 keydeck.toml 示例配置

本地有 Ollama?什么都不用改,默认就指向 http://127.0.0.1:11434/v1。

或者一行环境变量直接开跑:

KEYDECK_BASE_URL=http://127.0.0.1:11434/v1 KEYDECK_MODEL=qwen3-coder:30b keydeck serve

3. 启动 Claude Code(免登录)

keydeck launch claude

它做的事等价于:

ANTHROPIC_BASE_URL=http://127.0.0.1:8787 ANTHROPIC_API_KEY=*** keydeck -m local::qwen3:8b

打开 Claude Code,它正在用你的本地模型思考,而它自己毫无察觉。🎩

4. 多模型对比

keydeck ask "ollama::qwen3:8b,deepseek::deepseek-chat" \
  "用 Python 写一个 LRU 缓存,要求线程安全,说明设计取舍"

并发发出、并排输出,选型 5 分钟搞定。

配置文件

[proxy]
port = 8787
default_provider = "ollama"

[providers.ollama]
type = "openai"          # 上游协议
base_url = "http://127.0.0.1:11434/v1"
model = "qwen3:8b"       # 客户端请求 "default" 时实际使用的模型

[providers.lmstudio]
type = "openai"
base_url = "http://127.0.0.1:1234/v1"

[providers.deepseek]
type = "openai"
base_url = "https://api.deepseek.com/v1"
api_key_env = "DEEPSEEK_API_KEY"   # 密钥只从环境变量读,永不落盘

[providers.my-gateway]
type = "anthropic"                 # 上游也是 Anthropic 协议:直通
base_url = "https://new-api.internal:3000"
api_key_env = "GATEWAY_KEY"

模型前缀路由:任何客户端把模型名写成 provider::model(如 ollama::qwen3:8b)即可指定上游;不写前缀则用 default_provider。Claude Code 里直接 /model ollama::qwen3:8b 就行。

支持的客户端

客户端 接入方式 状态
Claude Code ANTHROPIC_BASE_URL 指向 relay ✅ 流式/工具调用已测;思考块以纯文本呈现
OpenCode / Aider / 任意 OpenAI SDK OPENAI_BASE_URL 指向 relay ✅ 流式/非流式
Codex CLI 需 Responses API(路线图 v0.2) 🚧 见 FAQ
其它 Anthropic SDK 应用 同 Claude Code ✅

诚实声明:v0.1 已通过完整的 mock 上游端到端测试(流式、工具调用、双向翻译),但尚未在所有真实上游/客户端组合上验证。遇到问题请提 issue,带 upstream 日志更好。

FAQ

Q: 这和 LiteLLM 有什么区别? A: LiteLLM 是功能全面的网关(100+ provider、计费、路由策略……也随之而来一整套依赖)。KeyDeck 只做一件事并做到零摩擦:让 coding agent 免登录跑本地模型。单包纯标准库、init 模板专为本地场景设计、launch 一条命令注入环境变量、ask 多模型对比是内置一等公民。

Q: Codex CLI 什么时候支持? A: Codex 走 OpenAI Responses API,需要再做一层翻译,在 v0.2 路线图上。先用 Claude Code / OpenCode / Aider 吧。

Q: 安全吗? A: 默认只监听 127.0.0.1,密钥只从环境变量读取。它不是公网网关,请不要暴露到不可信网络。

Q: 本地模型效果到底怎么样? A: 工具调用保真度经过 e2e 测试,但 agentic 编码体验上限取决于模型本身——推荐 qwen3-coder、deepseek-coder 级别起步。用 ask 先测再All in。

Roadmap

  • v0.2:Responses API ⇄ Chat Completions 翻译(Codex CLI 免登录)
  • v0.2:keydeck launch codex 自动注入 config
  • v0.3:会话粘性多路路由(同一 thread 固定上游)、成本/token 统计面板
  • v0.3:Windows 托盘 / macOS 菜单栏小图标
  • 欢迎 Issue & PR —— 见 CONTRIBUTING.md

开发

git clone https://github.com/CHzqb/keydeck && cd keydeck
python -m pytest tests/ -q          # 单元测试
python tests/test_e2e.py            # 端到端(mock 上游,无网络)

翻译层是纯函数(schemas.py / streaming.py),欢迎加 provider 支持、修 edge case。

许可

MIT — 随便用,回头点个 ⭐ 就行。

Star History

Star History Chart

About

Zero-login gateway: run Claude Code / OpenCode / Aider on Ollama, LM Studio, vLLM or any OpenAI-compatible model. Anthropic<>OpenAI translation, streaming + tool calls, pure Python stdlib.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages