Recently shipped CLI

FinishIt

Point it at the repo you abandoned months ago. It indexes the evidence, names the exact stuck point, and ships one reviewable PR without touching your default branch.

$ npx @finishit/finishit github.com/you/that-repo-from-2024
Runs with Ollama, Anthropic, or OpenAI No account. No dashboard. No loops.
Local Local SQLite state under ~/.finishit
No No dashboard, signup, or telemetry
One One command creates one branch and one PR
No No code leaves your machine except to the provider you configure

The path

From stale repo to PR in three bounded steps.

01 Index

Reads the repo facts

Git history, TODOs, README context, issues, manifests, and local file signals land in a SQLite memory DB on your machine.

02 Diagnose

Names the stuck point

FinishIt quotes the real unfinished commit or TODO and rejects hallucinated paths or hashes before it explains the next move.

03 Ship

Opens one scoped PR

The fix runs in a git worktree on a finishit/* branch. The default branch stays untouched and tests run when detected.

Provider setup

Use local Ollama first, or bring your cloud key.

FinishIt auto-detects providers in this order: Anthropic key, OpenAI key, then a reachable Ollama server. Passing --model forces a provider.

Ollama

Local

No key required. Run Ollama on localhost, pull a coding model, and force it with --model.

ollama serve
ollama pull qwen2.5-coder:14b
npx @finishit/finishit . --model qwen2.5-coder:14b

Anthropic

Claude

Set ANTHROPIC_API_KEY or pass a claude-* model id. This is the first cloud provider FinishIt checks.

export ANTHROPIC_API_KEY=sk-ant-...
npx @finishit/finishit . --model claude-sonnet-4-6

OpenAI

GPT

Set OPENAI_API_KEY or pass a gpt-* or supported o-series model id.

export OPENAI_API_KEY=sk-...
npx @finishit/finishit . --model gpt-5
Model routing: claude-* uses Anthropic, gpt-* plus supported o-series models use OpenAI, and any other model id is sent to Ollama at OLLAMA_BASE_URL or localhost:11434.

Execution contract

Small surface. Hard boundary.

FinishIt is deliberately narrower than Nexus Prime. It does not run a control plane, schedule agents, or add team memory. It makes one local attempt to finish one repo, then leaves the diff where you can review it.

worktree-isolated execution guarded diagnosis renderer detected test command support pull request footer back to this page

Finish the repo you still think about.

Start with the local path or GitHub URL. FinishIt will tell you what it found before it writes.

Run FinishIt