Your Claude, learned locally.
when the quota runs out, your model keeps working — in your style, on your machine, offline.
Footprint watches your Claude Code sessions, fine-tunes a small local model on how you and Claude work, and serves it OpenAI-compatible. Cursor, OpenCode, and Codex CLI keep going in the same style — fully offline.
$ npm install -g footprint-traceYour GitHub is the account — we collect nothing. Signing in creates a private footprint-vault repo in your account. API keys and synced context live there; footprint runs no database and never sees your data.
[ SYSTEM // MODULES ]
A model that already knows your project.
trained on your sessions, not the whole internet.
Learns your style
LoRA fine-tunes a small model on how you and Claude actually work in your projects — not a generic assistant.
SRC ~/.claude/projects · ADAPTER LoRA
Private by default
Transcripts and trained weights are gitignored and never leave your machine. No upload, no telemetry.
NET TX 0 B · TELEMETRY NONE
Fully offline
Once trained, everything runs locally. No network, no quota, no rate limit between you and your code.
UPLINK NONE · QUOTA ∞
OpenAI-compatible
Serves at http://127.0.0.1:8399/v1. Point Cursor, OpenCode, or Codex CLI at it and keep going.
PORT 0x20CF · PROTO openai/v1
Cross-platform
MLX backend on Apple Silicon, PyTorch everywhere else — macOS, Linux, and Windows all supported.
MLX arm64 · TORCH cuda/cpu
No tracer needed
Claude Code already logs every session. Footprint reads those transcripts — nothing to instrument.
READS *.jsonl · HOOKS 0
Four commands, start to finish.
From your first traced session to a running local model.
Trace
Arm a marker so only sessions from now on become training data.
Collect
Parse transcripts into chat-format examples — prompts, replies, tool calls.
Train
LoRA fine-tune a small model in about ten minutes on your machine.
Install
An always-on local server, wired into OpenCode with a /footprint command.
Keep coding when Claude clocks out.
spin up your own model in about ten minutes.