Skip to main content
Yanked

This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.

Forge

A local-first AI development environment. A tuned local model (qwen2.5-coder via Ollama) does the high-volume implementation work; Claude plans and verifies. Zero token cost and full privacy during execution.

Status: Pre-1.0. MVP complete (phases P1–P5). The full local loop works end-to-end; packaged distribution (Homebrew / PyPI / Docker) is the remaining work. See ROADMAP.md.

The workflow

Claude (plan → tasks.json) → Forge (execute, local, $0) → Claude (verify diff)

Claude is better at thinking; the local model is better at doing at scale. Forge is the execution layer between them. It indexes your codebase, answers questions with that code (and your decisions) in context, drives a Claude-produced plan task-by-task, and hands the diff back for review.

Tolvi is the substrate

Forge runs standalone. But it runs best with Tolvi, the per-repo engineering-knowledge vault. Tolvi is the engine oil. A local model that knows what the code is makes plausible changes; a model that also knows why the codebase is the way it is (the decisions and rejected alternatives captured in a Tolvi vault) makes changes that respect intent. When a vault/ exists in your repo, Forge feeds it into the model's always-on context.

Already have a Tolvi vault? If your vault lives outside the repo (e.g. a standalone Tolvi setup with a shared ~/vaults/my-project/ directory), point Forge at it with the FORGE_VAULT env var instead of symlinking:

export FORGE_VAULT=~/my-vault/my-project
forge chat -m "how does sign-in work?"

Add it to your shell profile or a per-project .envrc (via direnv) so it's always set when working in that repo.

You may not need it. A solo dev on a greenfield repo, or a team without a decision vault, gets full value from Forge's code retrieval alone. Tolvi is the multiplier, not the dependency.

Install

Install the CLI from PyPI, then bring up the local models:

pipx install tolvi-forge
# or: pip install tolvi-forge

forge detect-hardware   # picks the model tier your RAM can run
forge start             # pulls the Ollama models and builds forge-coder on first run
forge doctor            # diagnose any missing pieces

pipx is recommended over pip for CLI tools: it installs Forge into its own isolated environment rather than your active virtualenv, avoiding dependency conflicts with whatever else you have installed. No Homebrew formula yet; Forge's dependency tree (ChromaDB, tree-sitter, tiktoken) doesn't fit Homebrew's typical vendored-resource packaging model well, so PyPI is the primary distribution channel.

For a fully guided setup (hardware detection, model pulls, and the Continue.dev + MCP editor configs written for you) install from source:

git clone https://github.com/tolvi-labs/forge && cd forge
bash setup/bootstrap.sh

The installer detects your hardware, pulls the right Ollama models, builds the forge-coder model, installs the CLI into a dedicated Python 3.12 venv, writes the Continue.dev + MCP configs, and symlinks forge into ~/.local/bin (adding it to PATH in your shell profile if needed).

forge start is also the command to use after a reboot or in a fresh shell: it starts Ollama in the background and leaves it running. forge stop shuts down that server (only if Forge started it).

VS Code (Continue.dev): optional keystroke assist

Forge's real surface is the batch loop above: a frontier model plans, the local model executes a whole task set, and you review the diff. This section is the other altitude: opt-in, in-editor assistance for when you want a local model at your cursor. It runs entirely on your hardware, so treat it as best-effort: on a laptop, local autocomplete will not match a cloud tool's latency, and that is a hardware reality rather than a defect Forge is hiding. Reach for the batch loop when you want the local model's real strength; reach for this only when you want a quick local completion or edit without leaving the editor.

Bootstrap writes the Continue config to ~/.continue/config.yaml automatically. To finish the setup:

  1. Install the Continue extension in VS Code.
  2. Open the Continue panel (sidebar). It will pick up ~/.continue/config.yaml on first load.
  3. Confirm Ollama is running (ollama list should show forge-coder and qwen2.5-coder:7b).

The config wires four models automatically:

  • Chat / Edit / Apply → qwen2.5-coder:7b (fast, best for everyday coding questions)
  • Chat (Deep) → forge-coder (qwen3-coder:30b, long context, switch to this for architecture or multi-file work)
  • Autocomplete → qwen2.5-coder:7b (best-effort; latency tracks your hardware)
  • Embeddings → nomic-embed-text

MCP tool integrations (git, github, jira, gcloud, firebase, context7, sequential-thinking, playwright) are configured for Claude Code, not Continue.dev. See mcp/servers.json. Wiring MCP servers into Continue.dev injects tool definitions that cause smaller models to emit tool-call JSON instead of answers.

Quickstart

forge index .                       # index this repo (incremental, respects .gitignore)
forge search "auth token refresh"   # inspect what retrieval returns
forge chat -m "how does sign-in work?"   # ask, with CAG+RAG (and your Tolvi vault) in context

# Claude → Local → Claude
forge plan load tasks.json          # load a Claude-produced plan (schema-validated)
forge agents run --apply            # the local model implements every task, one commit each on forge/<feature>
forge verify                        # export the diff + manifest for Claude to review

Commands

Command What it does
forge start / stop Bring Ollama up + ensure models/forge-coder then show status; stop the server (only if Forge started it)
forge detect-hardware Detect RAM, GPU and architecture, and write the hardware profile that picks the model tier
forge status / doctor [--json] Active model/context/profile; environment diagnostics. --json emits machine-readable output for tools
forge index [--watch] Tree-sitter chunk + embed a repo into a local ChromaDB index
forge watch Live TUI dashboard: auto-discovers active plans, loop phase, inference rate, context fill
forge search / chat Semantic retrieval; chat with CAG+RAG context (Tolvi vault included)
forge plan load/next/complete/status Drive a Claude tasks.json in dependency order by hand; complete commits only the task's own files
forge verify Export the diff since plan baseline + manifest for Claude's review
forge outcome / forge report Record a completed task's outcome (rework churn + local tokens, auto-filled) and pool the dogfooding metrics: acceptance, churn, tokens, trust
forge profile list/set Choose the stack profile that shapes the context window
forge agents run --apply [--json] The local model implements each task of the loaded plan from its real file contents and plan context; edits that stay in the task's files and pass the review agent are committed as [id] title on a forge/<feature> branch, and results go to results.json (--json prints them). Without --apply, it only prints proposals for a tasks.json

Measuring the local-model gate

Forge can tell you whether the local model is actually pulling its weight, as a byproduct of the normal plan loop. With --apply, the model's work is already committed per task on the forge/<feature> branch, so review the branch, fix what it got wrong, and record each task's outcome:

forge agents run --apply        # one commit per approved task; rejected tasks are recorded automatically
# ...you review the branch diff and fix anything the model got wrong...
forge outcome task-001          # auto-fills rework churn + local tokens; prompts for accepted/trust/type

Rework is your change on top of the model's last commit, counted on the files each task edited last, so a later task's edits to a shared file never count against an earlier one. Run forge agents run --apply again on the branch to retry rejected or skipped tasks; it resumes rather than starting over. Driving tasks by hand works too: forge plan complete task-001 commits that task's files, and forge outcome must then run before forge plan next touches the same files, because the working-tree delta on the task's files is what it counts as your rework. When you want the picture across a plan, or across every plan and repo, pool it:

forge report          # this plan: acceptance rate, median churn, tokens, mean trust
forge report --all    # pooled across all plans, broken down by task type

Acceptance rate is the "is the local model good enough" number, and rework churn is whether fixing its output eats the token savings.

How it works

  • Index: Tree-sitter AST chunking across 9 languages (with a line-based fallback), local embeddings via nomic-embed-text, a ChromaDB store with file-checksum incremental re-indexing.
  • Context: a hybrid CAG + RAG window: stable always-on context (manifests, README, the Tolvi vault) plus the top semantically-relevant code chunks (hard-capped to avoid lost-in-the-middle), tuned per stack profile.
  • Workflow: tasks.json is the Claude↔Forge handoff contract; Forge validates it, keeps each task's plan context, has the local model edit with SEARCH/REPLACE blocks it applies and checks itself, commits each approved task on its own branch, and exports a verifiable diff.
  • Editors & tools: Continue.dev (VS Code, primary) and Cursor against the same Ollama backend; a pre-wired, npm-verified MCP layer (git, github, jira, gcloud, firebase, context7, sequential-thinking, playwright) configured for Claude Code.

Everything runs locally. No code leaves the machine during execution. Architecture and design notes live in docs/.

License

Apache 2.0.

Metadata

Release files for tolvi-forge 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tolvi-forge 0.3.0
File Size Uploaded Provenance
tolvi_forge-0.3.0.tar.gz 270.6 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for tolvi-forge 0.3.0
File Interpreter ABI Platform
tolvi_forge-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 326.8 kB

Release files / tolvi_forge-0.3.0.tar.gz

Download URL tolvi_forge-0.3.0.tar.gz
Size 270.6 kB
Tags Source
SHA-256 checksum
How to use checksums
31cf57844087fa1c130135ddb1a12f042fb0067abb6d30283bac32c9dc7ec9f3
BLAKE2b-256 checksum
How to use checksums
6e884f812c4933d55fe5dfe3103fa2fbce7149258f3fa72d7dc4d6c3ec6bb81b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.

Transparency log

Release files / tolvi_forge-0.3.0-py3-none-any.whl

Download URL tolvi_forge-0.3.0-py3-none-any.whl
Size 56.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f6529600c29e3469417492518fe437149fbf76476b0325538b2b8a9b411cb77a
BLAKE2b-256 checksum
How to use checksums
9925b25056d375ea066092f25702ff146031cfb527e138fdd4b86b5a18a1113b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.

Transparency log

Security for tolvi-forge 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for tolvi_forge-0.3.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page