63 lines
1.8 KiB
Markdown
63 lines
1.8 KiB
Markdown
# 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).
|