From your sessions to a local model.
no tracer, no upload — footprint reads logs claude already wrote.
Your 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.
trace → chat with claude → collect → train → install → /footprint
- 01
Claude Code already logs everything
Every session — your prompts, Claude's replies, and tool calls — is written to ~/.claude/projects. Footprint reads those transcripts directly, so there's no tracer or wrapper to install.
- 02
trace marks a starting line
footprint trace arms a marker so only sessions from that point on become training data. Skip it (or delete the marker) to train on your entire history instead.
- 03
collect parses transcripts into examples
Each assistant turn becomes a chat-format training example within a ~6k-character context window. Tool calls are encoded so the model learns your workflow, not just prose.
- 04
train runs a LoRA fine-tune
A small base model (Qwen2.5-Coder-1.5B by default) is LoRA fine-tuned on your examples — about ten minutes, MLX on Apple Silicon or PyTorch + PEFT everywhere else.
- 05
install serves it, always on
A launchd / systemd / Task Scheduler agent runs the server at 127.0.0.1:8399, starts at login, and restarts on crash. It also wires up OpenCode with a /footprint command.
- 06
Any OpenAI-compatible tool plugs in
Point Cursor, OpenCode, or Codex CLI at the local URL. When your Claude quota runs out, they keep working in the same style — fully offline.
- 07
Connect GitHub — your account, your storage
Sign in with GitHub (OAuth on the web, device flow in the CLI) and footprint creates a private footprint-vault repo in your own account. API keys are stored there as hashes, and footprint sync push/pull moves your context between devices through it. footprint has no database and collects nothing — delete the repo and every trace of your account is gone.