Agents
Crush
Charm's terminal agent, as an OpenAI-compatible provider.
Easy setup
Copy this prompt into Crush itself or any coding agent you use, such as Claude Code, Codex or Cursor. It adds Lyber to Crush's settings, keeps your key out of every file, and checks the connection without spending credit.
Set up Crush on this computer to use Lyber, an OpenAI-compatible API.
Lyber:
- Base URL: https://lyber-paid-acceptance-gateway-production.up.railway.app/v1
- Models: minimax-m3.1-flash-abliterated (default; 1,048,576-token context, 32,768-token output) and deepseek-v4.1-flash-1017-abliterated (1,048,576-token context, 262,144-token output)
- API key: in the LYBER_API_KEY environment variable. Never print it, never write it into a file, and never ask me to paste it into this chat.
Do this:
1. Open ~/.config/crush/crush.json. If it exists, copy it to ~/.config/crush/crush.json.bak first, then merge these settings into it and keep everything else. If it doesn't exist, create it with exactly this:
{
"$schema": "https://charm.land/crush.json",
"providers": {
"lyber": {
"name": "Lyber",
"type": "completions",
"base_url": "https://lyber-paid-acceptance-gateway-production.up.railway.app/v1",
"api_key": "$LYBER_API_KEY",
"models": [
{ "id": "minimax-m3.1-flash-abliterated", "name": "MiniMax M3.1 Flash", "context_window": 1048576, "default_max_tokens": 32768 },
{ "id": "deepseek-v4.1-flash-1017-abliterated", "name": "DeepSeek V4.1 Flash 1017", "context_window": 1048576, "default_max_tokens": 262144 }
]
}
},
"models": {
"large": { "provider": "lyber", "model": "minimax-m3.1-flash-abliterated" },
"small": { "provider": "lyber", "model": "deepseek-v4.1-flash-1017-abliterated" }
}
}
2. If Crush isn't installed, tell me to run: npm install -g @charmland/crush
3. If LYBER_API_KEY isn't set in my shell, tell me to add export LYBER_API_KEY="…" to my shell profile myself and open a new terminal.
4. Check the key without spending credit. This should print 200:
curl -s -o /dev/null -w "%{http_code}\n" https://lyber-paid-acceptance-gateway-production.up.railway.app/v1/models -H "Authorization: Bearer $LYBER_API_KEY"
5. Tell me what you changed and how to start Crush on Lyber: crush
Don't send a chat request through Lyber unless I ask.Manual setup
1. Install Crush
npm install -g @charmland/crush2. Put your key in your environment
Add this to your shell profile (~/.zshrc or ~/.bashrc) and open a new terminal.
export LYBER_API_KEY="lyber_prepaid_…"3. Add Lyber to ~/.config/crush/crush.json
Keep any settings already in the file; add these beside them.
{
"$schema": "https://charm.land/crush.json",
"providers": {
"lyber": {
"name": "Lyber",
"type": "completions",
"base_url": "https://lyber-paid-acceptance-gateway-production.up.railway.app/v1",
"api_key": "$LYBER_API_KEY",
"models": [
{ "id": "minimax-m3.1-flash-abliterated", "name": "MiniMax M3.1 Flash", "context_window": 1048576, "default_max_tokens": 32768 },
{ "id": "deepseek-v4.1-flash-1017-abliterated", "name": "DeepSeek V4.1 Flash 1017", "context_window": 1048576, "default_max_tokens": 262144 }
]
}
},
"models": {
"large": { "provider": "lyber", "model": "minimax-m3.1-flash-abliterated" },
"small": { "provider": "lyber", "model": "deepseek-v4.1-flash-1017-abliterated" }
}
}4. Start Crush
crushNotes
$LYBER_API_KEYis read from your environment when Crush starts.- The small model handles titles and summaries on the other Lyber model, so it never waits for the large one.
- Crush sends 26 tools of its own. Lyber accepts up to 32 per request, so add MCP servers sparingly.