Stay sharp while AI writes your code.
RepForge is a local-first desktop companion for AI-assisted coding. It watches your coding sessions, extracts the underlying computer science concepts, and turns them into short review challenges so you keep building skill while tools like Claude Code and Codex accelerate the implementation work.
Everything runs on your machine: session logs, configuration, SQLite storage, and the challenge pipeline stay local by default.
- RepForge watches AI session logs from Claude Code and Codex in the background.
- It extracts concepts from the code and diffs your AI tools generate — using regex pattern matching with LLM fallback for nuanced extraction.
- It stores those concepts in a local SQLite database with spaced-repetition scheduling.
- It generates bite-sized challenges in four formats:
- Conceptual — multiple-choice questions about CS fundamentals
- Trace — read code and predict the output
- Code writing — implement a function in a syntax-highlighted editor, graded by a sandboxed test harness
- Bug spot — find and describe the bug in a code snippet
- The Tauri menubar app (400 × 500 px popover) surfaces those challenges, tracks attempts, and updates your stats.
- Download the latest release for your platform from Releases.
- macOS: Open the
.dmgand drag RepForge to your Applications folder. Before launching for the first time, remove the quarantine flag (required for unsigned apps):xattr -cr /Applications/RepForge.app
- Windows: Run the
.msiinstaller or.exesetup. - Linux: Install via
.deb,.rpm, or run the.AppImagedirectly.
Note: RepForge is a menubar app — it lives in your system tray (top of the screen on macOS, system tray on Windows/Linux), not in the Dock or taskbar. Look for the RepForge icon in your menu bar after launching.
- Rust toolchain
- Node.js + pnpm
- Tauri system prerequisites for your platform
If you have not set up Tauri before, install the platform dependencies first: https://v2.tauri.app/start/prerequisites/
pnpm installpnpm tauri devOn startup, RepForge will:
- create
~/.repforge/if needed - open
~/.repforge/repforge.db - seed demo data into an empty database so the UI has something to show
- start the background watcher and challenge generator
cargo run -p repforge -- watch # start the watcher daemon
cargo run -p repforge -- challenge # present the next challenge
cargo run -p repforge -- stats # show your stats
cargo run -p repforge -- concepts # show detected concepts
cargo run -p repforge -- config # open or edit configurationcargo test --workspaceThe test suite includes 360+ tests: unit tests across all crates, integration tests that call real LLM providers (Claude CLI, Codex CLI, Anthropic API, OpenAI API), and sandbox execution tests. Full integration coverage requires the local CLIs and API credentials described in AGENTS.md; the pre-commit hook runs only library unit tests, while the full suite runs before push.
RepForge reads configuration from:
- config:
~/.repforge/config.toml - database:
~/.repforge/repforge.db
Override the data directory with:
REPFORGE_DATA_DIR=/path/to/data-dirThe current configuration surface focuses on LLM provider selection, model settings, notifications, and challenge-generation preferences.
RepForge can resolve an LLM provider from local tools or environment configuration.
Implemented backends:
- Claude CLI
- Codex CLI
- Ollama
- Anthropic API
- OpenAI API
If no provider is available, the app still starts, but challenge generation and some grading paths are limited.
repforge/
├── assets/ # README assets
├── crates/
│ ├── challenges/ # Challenge generation, grading, submission flow
│ ├── cli/ # Shared CLI commands
│ ├── db/ # SQLite schema, queries, seed data, migrations
│ ├── llm/ # Provider detection and LLM backends
│ ├── repforge-types/ # Shared domain types and config structs
│ ├── sandbox/ # Local code execution for code-writing challenges
│ ├── spaced-rep/ # Spaced repetition scheduling and priority scoring
│ └── watcher/ # Session log parsing and concept extraction
├── docs/
│ └── spec.md # Product spec and architecture notes
├── prompts/ # Prompt templates for extraction, generation, grading
├── src/ # Svelte frontend
└── src-tauri/ # Tauri app backend and tray integration
Useful commands during development:
cargo test --workspace
cargo fmt --check
cargo clippy --workspace --all-targets -- -D warnings
pnpm tauri devGit hooks under .githooks/ enforce quality locally — pre-commit runs formatting, clippy, library unit tests, and lint checks; pre-push runs the full test suite including integration tests. Enable them with:
./scripts/setup-hooks.shReleased under the MIT License.
See CONTRIBUTING.md for development setup and contribution guidelines.