opencode-morph-rotationOpenCode plugin for Morph API key rotation with rate limit handling
2
近 30 天 +1
16
近 7 天 4
25.6
生态多维模型
5 个月前
2026-03-23
快速安装与配置
opencode.json写入当前项目的 opencode.json,只对这个仓库生效。
opencode.json
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-morph-rotation@0.1.0"]
}写入 ~/.config/opencode/opencode.json,对所有项目生效。
~/.config/opencode/opencode.json
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-morph-rotation@0.1.0"]
}若你要在本地改造这个插件,先装到项目里再从本地路径引用。
shell
pnpm add -D opencode-morph-rotationopencode 启动时会通过内嵌运行时自动加载 npm 依赖并缓存至本地目录,无需手动在全局环境执行安装。
OpenCode plugin for automatic Morph API key rotation with rate-limit handling.
Features
- 🔄 Automatic key rotation when rate limited
- 📊 Key health monitoring and status reporting
- ➕ Add/remove keys at runtime via tools
- 🛡️ Auto-disable keys after repeated failures
- 📋
/morph-quotaslash command for quick status
Installation
Add to your opencode.jsonc:
{
"plugin": [
"opencode-morph-rotation@latest"
]
}
Then restart OpenCode.
Setup
1. Add your keys
Use the morph_add_key tool in chat:
Add my Morph key sk-ABC123... with label "account1"
Or manually create ~/.config/opencode/morph-keys.json:
{
"keys": [
{
"key": "sk-YOUR_KEY_1",
"label": "account1",
"enabled": true,
"rateLimitResetTime": 0,
"consecutiveFailures": 0,
"lastUsed": 0,
"addedAt": 1711152000000
}
],
"strategy": "least-recently-used",
"defaultCooldownMs": 60000,
"maxConsecutiveFailures": 5
}
2. Remove MORPH_API_KEY from MCP config
Since the plugin injects MORPH_API_KEY via shell.env, remove any hardcoded key from your MCP server config to avoid conflicts.
Available Tools
| Tool | Description |
|---|---|
morph_quota |
Show status of all keys |
morph_add_key |
Add a new key for rotation |
morph_remove_key |
Remove a key by label |
morph_mark_rate_limited |
Manually mark a key as rate limited |
Rotation Strategies
- least-recently-used (default): Picks the key used longest ago
- round-robin: Cycles through keys in order
- sticky: Stays on current key until it fails
How It Works
- Plugin loads on OpenCode start
- Before each shell/tool execution,
shell.envhook picks the best available key - When a key hits rate limit (429), use
morph_mark_rate_limitedto rotate - Disabled keys re-enable after cooldown period
License
MIT