// CODING AGENTS
Coding agents, anonymous.
A coding agent ships your entire codebase upstream on every request. On Phantom, the upstream never learns who sent it — and on the TEE tier, never sees it at all. OpenAI-compatible: OpenCode, Crush, Aider, and Cline connect with one config block.
// WHY THIS MATTERS
Why this matters
- Agents are the leakiest AI workload. Repo maps, secrets in config, proprietary code — all of it goes to the model provider, tied to your account and card.
- Phantom strips identity on every tier. Upstream sees Phantom, not you. No account, no email, no card — a key bought with crypto.
- TEE tier goes further: prompt content is processed inside attested Intel TDX + NVIDIA CC enclaves. Verify per response via
/v1/inference-attest— don't trust, verify.
// QUICKSTART
Quick start
$ export OPENAI_BASE_URL=https://phantom.codes/v1
$ export OPENAI_API_KEY=sk-your-phantom-key
No key yet? Buy one in 60 seconds — no signup.
// AGENT
▸ OpenCode
~/.config/opencode/opencode.json (global) or opencode.json in the project root:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"phantom": {
"npm": "@ai-sdk/openai-compatible",
"name": "Phantom",
"options": {
"baseURL": "https://phantom.codes/v1",
"apiKey": "{env:OPENAI_API_KEY}"
},
"models": {
"phantom/deepseek-v4-flash": {
"name": "DeepSeek V4 Flash",
"limit": { "context": 1048576, "output": 65536 }
},
"phantom/deepseek-v4-pro": {
"name": "DeepSeek V4 Pro",
"limit": { "context": 800000, "output": 65536 }
}
}
}
}
}
Run opencode, then /models to pick a Phantom model.
// AGENT
▸ Crush
./crush.json in the project, or ~/.config/crush/crush.json:
{
"$schema": "https://charm.land/crush.json",
"providers": {
"phantom": {
"type": "openai-compat",
"base_url": "https://phantom.codes/v1",
"api_key": "$OPENAI_API_KEY",
"models": [
{
"id": "phantom/deepseek-v4-flash",
"name": "DeepSeek V4 Flash",
"context_window": 1048576,
"default_max_tokens": 8192
}
]
}
}
}
// NOTE
type must be "openai-compat" — "openai" is reserved for OpenAI itself. Leave models empty and Crush pulls the whole catalog from /v1/models.
// AGENT
▸ Aider
$ aider --openai-api-base https://phantom.codes/v1 \
--openai-api-key sk-your-phantom-key \
--model openai/phantom/deepseek-v4-flash
The openai/ prefix is Aider's routing hint; the Phantom model ID follows it verbatim. Aider may print an unknown-model warning — cosmetic, it works.
// AGENT
▸ Cline (VS Code)
- Cline settings (gear icon) → API Provider → "OpenAI Compatible"
- Base URL:
https://phantom.codes/v1 - API Key:
sk-your-phantom-key - Model ID:
phantom/deepseek-v4-flash
Continue.dev, OpenHands, Cursor, OpenWebUI and every other OpenAI-compatible client: see the integrations guide.
// WHICH MODEL
Which model
| MODEL | TIER | CONTEXT | $ / M IN·OUT | PICK IT FOR |
|---|---|---|---|---|
phantom/deepseek-v4-flash | TEE | 1M | $0.26 · $0.52 | default: cheap, huge context, fast |
phantom/deepseek-v4-pro | TEE | 800K | $1.95 · $6.83 | hardest problems on the private tier |
phantom/glm-5.2 | TEE | 1M | $1.82 · $5.72 | strong all-rounder, tool-calling |
phantom/qwen3.6-35b-a3b | TEE | 262K | $0.26 · $1.65 | budget agent loops |
anthropic/claude-sonnet-5 | proxy | 1M | $4.50 · $22.50 | frontier quality; vendor sees prompts, not your identity |
x-ai/grok-code-fast-1 | proxy | 256K | $0.30 · $2.25 | cheap frontier-lab coder; same proxy caveat |
// TEE vs PROXY
TEE = prompt content processed in an attested enclave, provably unlogged. Proxy = closed-weight model on vendor infra — the vendor sees prompt content, but never who you are. Full catalog with live pricing: /models.html.
Get a key → /#pricing · Full API docs → /docs.html · Verify attestation → /docs.html#attestation