ccft: an agentic self improvement tool. A streaming flytrap that sits between Claude Code and api.anthropic.com, mutates the request system prompt to your preferences, and writes a per-response token ledger — all while preserving Claude's token-by-token streaming UX byte-for-byte.
Three design properties:
- One artifact, one location. The binary at
~/.local/bin/ccftis everything. No install dir, no rsync. - Streaming is preserved. A custom
Bodywrapper taps the upstream SSE chunk-by-chunk. Tokens reach the client at the same cadence as direct. - Tiny resident footprint. ~6 MB on disk, ~4 MB resident at idle.
Service auto-start runs on macOS (launchd) and Linux (systemd-user). On Windows,
ccft installsets up the binary + CA + config; auto-start isn't wired yet — runccft runmanually.
Prebuilt binary from the latest release:
# macOS (universal aarch64 + x86_64)
curl -L https://github.com/adiled/ccft/releases/latest/download/ccft-macos-universal -o /usr/local/bin/ccft
# Linux (x86_64)
curl -L https://github.com/adiled/ccft/releases/latest/download/ccft-linux-x86_64 -o /usr/local/bin/ccft
chmod +x /usr/local/bin/ccft
ccft install
ccft trust --applyOr build from source (brew install rust):
make install
ccft trust --applyccft install provisions the CA, default config, plist, and launchd unit. ccft trust --apply writes HTTPS_PROXY + NODE_EXTRA_CA_CERTS into ~/.claude.json (with backup). Full lifecycle in docs/install.md.
TUI — ccft at a tty opens a full-screen dashboard: brainrot chart (bot/driver vibes over time), heat-by-time bars, recent-traffic ledger, sessions/perf overlays. Range dial keys: t y h w W a.
Ledger — every request gets a JSONL line at ~/.local/share/ccft/ledger.jsonl with input/output tokens, cache hits, latency, model, session id, and ccft's own processing time. Schema in docs/reference.md.
Dev mode — ccft dev runs in foreground on port 7179 with an isolated config + ledger. No need to bootout the production daemon. Details in docs/install.md#dev-mode.
Config — three knobs in ~/.config/ccft/ccft.json: system_override (extra system prompt), pain (false trims Claude Code's bloat blocks), ledger (write JSONL). See docs/reference.md#config.
Architecture — hudsucker (hyper-1.x + tokio + rustls), host-gated to api.anthropic.com only. Other CONNECT requests pass straight through, so gh, git, npm, pip keep working from any subprocess. See docs/architecture.md.
- Install / uninstall / lifecycle / dev mode
- Config / ledger schema / file layout / CLI reference
- How it works / TUI / dependencies
MIT — see LICENSE.