# claude-cloak A TUI that displays Claude Code's streams token-by-token — thinking, text, and tool calls — by sitting as a pass-through proxy between Claude Code and the Anthropic API. **No extra usage:** it never issues requests of its own; it observes the SSE stream of requests Claude Code was already making, forwarding bytes verbatim and unbuffered. ``` claude ──ANTHROPIC_BASE_URL──▶ claude-cloak (127.0.0.1:8484) ──▶ api.anthropic.com │ ▼ TUI: live token feed ``` ## Usage ```sh cargo build --release ./target/release/claude-cloak ``` Then point Claude Code at the proxy, either per-shell: ```sh export ANTHROPIC_BASE_URL=http://127.0.0.1:8484 claude ``` or globally in `~/.claude/settings.json`: ```json { "env": { "ANTHROPIC_BASE_URL": "http://127.0.0.1:8484" } } ``` Note: with the global setting, Claude Code can't reach the API while the proxy isn't running. ## Keys | key | action | |---|---| | `q` / `Esc` | quit | | `Tab` / `Shift-Tab` | switch session | | `j`/`k`, arrows, PgUp/PgDn | scroll (disables follow) | | `f` / `G` / `End` | follow live tail | | `g` / `Home` | jump to top | ## Display - **✻ thinking** — dim italic, streamed token-by-token - **text** — rendered as markdown (`tui-markdown`) - **⚙ tool calls** — input JSON pretty-printed on completion, raw fragments while streaming - **meta** — message boundaries with model, context size, stop reason, token counts - **errors** — API/stream errors in red Sessions are keyed by the Claude Code session ID found in request metadata; concurrent requests (subagents) tap independently. `--headless` runs the proxy without the TUI. `CT_PORT` overrides the port (default 8484).