// 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)

  1. Cline settings (gear icon) → API Provider → "OpenAI Compatible"
  2. Base URL: https://phantom.codes/v1
  3. API Key: sk-your-phantom-key
  4. 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

MODELTIERCONTEXT$ / M IN·OUTPICK IT FOR
phantom/deepseek-v4-flashTEE1M$0.26 · $0.52default: cheap, huge context, fast
phantom/deepseek-v4-proTEE800K$1.95 · $6.83hardest problems on the private tier
phantom/glm-5.2TEE1M$1.82 · $5.72strong all-rounder, tool-calling
phantom/qwen3.6-35b-a3bTEE262K$0.26 · $1.65budget agent loops
anthropic/claude-sonnet-5proxy1M$4.50 · $22.50frontier quality; vendor sees prompts, not your identity
x-ai/grok-code-fast-1proxy256K$0.30 · $2.25cheap 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