Skip to content

mzkrasner/repforge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

152 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

RepForge

RepForge

Stay sharp while AI writes your code.

MIT License Rust 1.93+ Built with Tauri

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.

How it works

  1. RepForge watches AI session logs from Claude Code and Codex in the background.
  2. It extracts concepts from the code and diffs your AI tools generate — using regex pattern matching with LLM fallback for nuanced extraction.
  3. It stores those concepts in a local SQLite database with spaced-repetition scheduling.
  4. 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
  5. The Tauri menubar app (400 × 500 px popover) surfaces those challenges, tracks attempts, and updates your stats.

Install

Option A: Download a pre-built binary

  1. Download the latest release for your platform from Releases.
  2. macOS: Open the .dmg and 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
  3. Windows: Run the .msi installer or .exe setup.
  4. Linux: Install via .deb, .rpm, or run the .AppImage directly.

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.

Option B: Build from source

Prerequisites

  • 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/

Install dependencies

pnpm install

Run the desktop app

pnpm tauri dev

On 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

Run the CLI

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 configuration

Run tests

cargo test --workspace

The 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.

Config

RepForge reads configuration from:

  • config: ~/.repforge/config.toml
  • database: ~/.repforge/repforge.db

Override the data directory with:

REPFORGE_DATA_DIR=/path/to/data-dir

The current configuration surface focuses on LLM provider selection, model settings, notifications, and challenge-generation preferences.

LLM providers

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.

Project structure

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

Contributing

Useful commands during development:

cargo test --workspace
cargo fmt --check
cargo clippy --workspace --all-targets -- -D warnings
pnpm tauri dev

Git 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.sh

License

Released under the MIT License.

See CONTRIBUTING.md for development setup and contribution guidelines.

About

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.

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages