⚡ 0.9 — SELF-VERIFYING: AUDITED BRANCHES, BENCHMARKS, COST TRACES

Terminal-native coding agent. Race Claude vs GPT vs Gemini across parallel worktrees and keep what passes. Ghost-text completion, a headless daemon, hash-anchored patching and sessions that never run out of context. Pure Python, one dependency.

offset-terminal ~/project
Welcome to offset REPL v0.9.0
Type /help for commands.
❯
OPEN SOURCE
AGPL-3.0

BUILT DIFFERENT

Everything your IDE agent can't do.

SPECULATIVE BRANCHING

Spawn multiple reasoning paths simultaneously. Evaluate outputs. Merge the best result instantly.

/FLOW WORKFLOWS

Define multi-step pipelines. Let the agent orchestrate its own tools and verification steps.

12+ MODELS

Anthropic, OpenAI, Google Antigravity, Groq, Ollama. Switch instantly or race them head-to-head.

PURE PYTHON

No JS runtime. No heavy browser engines. Just clean, raw Python and a brutally fast terminal UI.

CODE INTELLIGENCE

A real LSP client. Follows imports, re-exports and shadowing, so it finds the callsites grep misses and renames without breaking them.

REAL DEBUGGING

Breakpoints, stepping, live variables over DAP. The agent reads actual program state instead of adding print statements and guessing.

BROWSER AGENT

Drives real headless Chromium. Reads the accessibility tree, clicks, and reports console errors — so front-end work is verified, not assumed.

SEARCH THAT KNOWS CODE

BM25 over an incremental symbol index. Ask for getUserAuth and it finds get_user_authentication, then tells you what imports it.

GITHUB NATIVE

/pr writes and opens it. /fix-ci finds the failing check and excerpts the actual error out of megabytes of log. /review prints before it posts.

SURVIVES THE TERMINAL

Background agents outlive the window. Tasks resume mid-pipeline after a restart. Sessions reopen where you left them. It updates itself.

GHOST TEXT

Dim completions ahead of the cursor, from commands, paths and your own history. A 40 ms deadline: a slow suggestion is absent, never a stutter.

PATCHES THAT REFUSE

Edits anchored to the hash of a region and its surroundings. If the file moved, the patch is refused — never applied to the wrong place.

ARCHITECT + CODERS

One model plans a dependency graph, others build it in parallel waves. Two units touching one file are serialised before anything runs.

SESSIONS THAT DON'T END

History is summarised automatically before a turn would overflow the window. 60,566 tokens to 8,351 — with every original still on disk.

HALTS HALLUCINATIONS

The stream is watched as it arrives. A generation that loops, or claims to have edited a file that isn't there, is stopped with its evidence named.

FREE SNAPSHOTS

Copy-on-write workspace isolation via btrfs, zfs or APFS — probed by trying it, not guessing. Falls back to a real copy and says so.

LOOPBACK BRIDGE

Code the agent runs can call the agent's own tools — over an authenticated socket, with the permission system still in force.

MULTIPLAYER

/collab shares one session with other humans. One driver at a time, and the second is told who has it rather than silently queued.

MCP MARKETPLACE

Find, install and remove MCP servers. Installing records a server — it never executes one — and anything unofficial is untrusted until you say so.

BRANCHES GET AUDITED

/spec now scores security too. A branch that passes every test and adds an eval loses to a clean one with a bigger diff. One high-severity finding zeroes the criterion — it is never averaged away.

BENCHMARKS THAT ADMIT DOUBT

Twelve runs, a discarded warmup, median and spread. If the samples overlap the verdict is indistinguishable and it is dropped from the ranking. Inventing a 3% winner is worse than no benchmark at all.

WHERE THE MONEY WENT

/cost by model, day or session. /trace for the last turn's span tree. An unknown price reports as unknown, never as zero — a confident zero is an answer nobody re-checks.

GITLAB, FIRST CLASS

Issues, merge requests, pipelines and job logs. Self-hosted via GITLAB_HOST. The token goes in a header — never argv, never a query parameter.

ISSUE TO PULL REQUEST

/issue 42 reads it, restates it, plans, branches, implements, tests and opens the PR. Checkpointed at every stage, so /issue resume survives a closed laptop.

WATCH IT FROM YOUR PHONE

/monitor start serves one self-contained page: current turn, jobs, spend. Loopback by default, bearer token on every route, compared with compare_digest — and no static file route at all.

ANOTHER MACHINE'S CORES

/remote run executes on a registered box's daemon over SSH. The heavy work happens where the cores are; the transcript arrives here.

1831 TESTS

Every feature here is defended by tests that fail on a plausible bug, not on a typo. One dependency, three Python versions, ARM64 included.

0 AGENT TOOLS
0 COMMANDS
0 DEPENDENCIES
0 PASSING TESTS
YOUR TERMINAL IS THE IDE ★ YOUR TERMINAL IS THE IDE ★ YOUR TERMINAL IS THE IDE ★

BRANCHING SANDBOX

Adjust concurrent model runners and race them.

4

FAQ

How is this different from Cursor? +
Cursor is an IDE fork. Offset is a terminal-native agent that forks your git repository into multiple background worktrees, races different AI models (Claude, GPT-4, Gemini) simultaneously, runs your local test suite on all of them, and auto-merges the winner. No GUI. No Electron. Just your terminal.
Does it work with local Ollama models? +
Yes. Offset supports 12+ providers including local offline Ollama nodes, Claude, GPT, Gemini, DeepSeek, Google Antigravity, and OpenRouter. Run completely offline with Llama, Mistral, or Phi.
What is speculative branching? +
Offset forks your git repo into isolated worktrees, sends the same prompt to multiple AI models in parallel, runs your test suite against each result, and merges the branch that passes. You get the fastest correct answer, every time.
Is it really free? +
Offset Lite is free and open-source (AGPL-3.0). Bring your own API keys for any supported provider. Offset Plus adds Speculative Branching, the multi-model /flow pipeline, persistent tasks and the GitHub workflow.
Can I use it from my editor? +
Yes. offset daemon runs it headless, so an editor talks to it whether or not a terminal is open — and --listen host:port reaches it across an SSH hop. There is a VS Code extension and a zero-dependency TypeScript client for writing your own.
What happens when a session gets long? +
Nothing. History is summarised automatically before a turn would overflow the model's window, so a session does not die at the point it holds the most work. Nothing is destroyed — the original entries stay on disk and stay reachable in /tree.

CHOOSE YOUR TIER

LITE

$0/forever
  • Full Terminal REPL + ghost text
  • 12+ Model Support, discovered live
  • Code intelligence & debugger
  • Browser agent & code search
  • Hash-anchored patching
  • Sessions that never run out of context
  • Multiplayer (/collab)
  • MCP marketplace (/market)
  • Headless daemon + VS Code
  • Plugins, snapshots, self-update
DOWNLOAD FREE

PLUS

$15/mo
  • Speculative Branching (/spec)
  • Multi-Model Pipeline (/flow)
  • Persistent tasks (/task)
  • GitHub workflow (/pr, /fix-ci)
  • Priority Cloud Inference
GET PLUS

STAY IN THE LOOP

Get notified about new models, features, and releases. No spam. Ever.

↑ TOP