FreeCode raises $5MRead the launch announcement

Your AI Coding Assistant

Drive AI coding assistants via browser automation. No API costs. Works with ChatGPT, Claude, Gemini, and Browser.

#Installation

Get Started in Seconds

One command to install FreeCode and start using AI coding assistants.

$ curl -fsSL https://freecode.website/install | bash
No
API Costs
200+
AI Providers
~30s
Install Time
#Mission

FreeCode is a harness that is trying to push the frontier of intelligence. We believe that the next leaps in agent capabilities will come from the harness level. The model is just the intuitive core of an agent, and the harness around it exists to extract as much useful work out of that core as possible. Scaling test time compute via agent swarms, increasing speed through parallelism, solving continual learning through memory. We publish everything publicly, and will remain open source and open research. At the same time, we strive to be a good general purpose dev tool for day to day work.

#Benchmark

Swarms only push intelligence if they scale, and they only scale if each agent costs almost nothing. FreeCode is optimized to the bone so agents stay cheap to spawn, with none of it traded for speed.

Memory footprint (PSS, MB)

Resident memory of the entire process tree (tool + all descendants + process group), summed across process descendants.

freecode107.3 MB
jcode156.4 MB
pi160.3 MB
claude_code229.4 MB
codex237.5 MB
cursor_agent247.4 MB
copilot_cli340.8 MB
antigravity_cli375.2 MB
opencode658.4 MB

Time to ready (seconds)

Startup latency: wall-clock from spawn until input handling is responsive (10 interactive PTY launches each).

freecode0.14 s
claude_code0.57 s
cursor_agent0.79 s
jcode0.95 s
codex4.18 s
pi5.29 s

codex, opencode and copilot_cli hit the 20s timeout without becoming input ready; antigravity_cli never rendered visible.

Memory per session, avg over 10 runs (MB)

Extra proportional memory (PSS) each additional client adds once one is already running. Ten freecode sessions cost about 250 MB, less than one sixth of one Claude Code.

jcode365.9 MB
codex562.2 MB
freecode722.4 MB
pi868.2 MB
copilot_cli1,787.3 MB
claude_code1,894.0 MB
cursor_agent1,991.9 MB
antigravity_cli2,177.9 MB
opencode5,249.1 MB
#Tokens

Tokens are the bill. On a large tool output whose answer is in the tail — a build error at the end, the last grep matches — FreeCode injects the fewest tokens, capturing the full output once and letting the model page the rest instead of re-running the command.

Model-input tokens per large-output turn

Lower is better. Tokens each tool’s harness sends the model to get head + tail of an oversized output. Modeled from each tool’s truncation policy in its own source — not a live API run.

freecode (new)29,313
freecode (old)45,000
claude-code *45,000
pi45,198
opencode45,213

How to read this: FreeCode’s lead is a tighter first-turn cap (30 KB vs opencode/pi’s 50 KB) plus an in-memory output store — frugal by design, not strictly more capable. opencode and pi also have retrieval (file-based), so they avoid the re-run penalty that the head-only tools pay. Rows marked * are unverified from source. Modeled, deterministic, no API calls.

#Freecode Performance

Benchmarks

Every way we measure the agent

Six instruments, each with its own harness, its own data file, and the command that produced it. Nothing here is curated by hand: a run appears on this page by being published, and a loss goes in the headline like a win.

02

Agent comparison

Same bugs, same model, same key, one meter. freecode against other coding agents on SWE-bench Lite, graded by the official harness in Docker, with tokens and cost read off a recording proxy rather than four self-reports.

produced by pnpm bench:agents --isolate --trials 3 · bench:grade · bench:bundle

freecode vs claude-code

MiniMax-M3 · 10 instances · graded · container
freecode
77% resolved · 23/30
claude-code
80% resolved · 24/30

freecode used 60% fewer tokens per trial than claude-code.

freecode vs opencode

MiniMax-M3 · 10 instances · graded · container
freecode
80% resolved · 24/30
opencode
77% resolved · 23/30

freecode used 70% fewer tokens per trial than opencode.

Full matrix, cost scatter, and every caveat

03

Optimization task

An uncontaminatable benchmark: the agent is handed a working, tested primitive, an exhaustive verifier and a deterministic cost model, and told to make it faster. Score is doublings of improvement; time is recorded, never capped. The tasks are jcode bench v1, unmodified, so the numbers sit on the same axis as jcode's published runs.

produced by pnpm bench:jcode --agents freecode,claude-code

float-print

Print a float32 as the shortest decimal string that parses back to the same bits. This is the "shortest round-trip float printing" problem: an active research area (Grisu 2010, Ryu 2018, Dragonbox 2020), and the printing hot path of every serializer, REPL, and JSON encoder.

+0.00+1.00+2.00+3.00+4.00+5.00+6.000m5m10mfreecode +5.77

Running best vs active time. Dashed = a harness gate was on for that run.

#harnessmodelfinalspeedupbestgradesactivedategate
freecodeMiniMax-M3no score+5.77214m2026-09-12failed

json-unescape

Decode JSON string escape sequences. This is the hot path of every JSON parser.

freecode +0.31 · claude-code +1.06

+0.00+0.50+1.000m10m20m30m40m50mclaude-code +1.07freecode +0.31

Running best vs active time. Dashed = a harness gate was on for that run.

#harnessmodelfinalspeedupbestgradesactivedategate
1claude-codeMiniMax-M3+1.062.1x+1.071421m2026-09-12full
2freecodeMiniMax-M3+0.311.2x+0.316452m2026-09-12full

utf16-transcode

Convert UTF-16LE to UTF-8. This is the boundary between JavaScript, Windows, and Java on one side and the rest of the world on the other: every string crossing it pays this function.

freecode +0.44

+0.00+0.500m30m60m1.5h2.0hfreecode +0.44freecode +0.39freecode +0.36claude-code +0.10

Running best vs active time. Dashed = a harness gate was on for that run.

#harnessmodelfinalspeedupbestgradesactivedategate
1freecodeMiniMax-M3+0.441.4x+0.441252.0h2026-09-16full
2freecodeMiniMax-M3+0.391.3x+0.395635m2026-09-12full
3freecodeauto-pokeMiniMax-M3+0.001.0x+0.366030m2026-09-15full
claude-codeMiniMax-M3no score+0.101323m2026-09-12failed

† hit the runner's wall-clock cap; the submission as left was still graded.

Rank is by the official final grade the harness ran after the agent exited, on the submission as left; a run whose final verification failed has no score and sits below the ranked rows. Bestis the highest sample the agent itself saw during the climb and can sit above the final: not every sample runs the full gate. Each row is one run — jcode's own variance note puts run-to-run spread near 0.1, so a gap under that says nothing. Tasks, verifiers and given implementations are the public 1jehuang/jcode-bench; the commit is recorded on every trial.

04

Confidence stepping

The todo tool asks for a confidence score per item, at assignment and again at completion. A low number at assignment is signal; a jump straight to 100 at the end is a claim. When the gate is on, a spike sends the model back to verify instead of accepting it.

produced by pnpm bench:signals

48
items

assigned with a number, then completed

77
mean at assignment

the honest number

87
mean at completion

the claim

10%
spiked

5 rose 40+ in one step · 0 sent back to verify

53
rated only at completion

no prior assessment — a claim, not a step; excluded from the lines

Assignment → completion, per item

Each line is one todo item. Ideally confidence rises in steps as checks pass; a line that jumps straight to the top is the pattern the gate sends back.

00252550507575100100assignmentcompletion100 → 10090 → 10090 → 9590 → 9095 → 9590 → 9585 → 9585 → 9575 → 9575 → 8595 → 9585 → 9585 → 9575 → 7580 → 8099 → 9995 → 9585 → 9590 → 9595 → 9560 → 9555 → 95 · spike85 → 9575 → 9550 → 95 · spike30 → 95 · spike95 → 9590 → 9540 → 5555 → 5555 → 4050 → 5550 → 4055 → 4050 → 5050 → 45100 → 10080 → 95100 → 100100 → 10060 → 100 · spike0 → 100 · spike95 → 10095 → 10095 → 10090 → 9590 → 9090 → 95
stepped spike (+40 in one step) gate sent it back

05

Hill-climbable goals

Agents are at their most capable with a metric to climb. Every goal is rated 0–100 for how measurable its progress is; below the gate, the harness asks for a reframe into something with a check to iterate against.

produced by pnpm bench:signals

245
goals

first rating per item · 1099 ratings with re-ratings · 8 sessions

78.5
mean

median 85

53%
below 90

129 asked to reframe · 0 nudged

20–100
observed range

Ratings by score

Only scores that received a submission are drawn. Agents are at their most capable with a metric to climb; a goal rated below the gate has none yet.

025507510020: 1 rating · below the gate40: 9 ratings · below the gate50: 14 ratings · below the gate55: 31 ratings · below the gate60: 17 ratings · below the gate65: 7 ratings · below the gate70: 10 ratings · below the gate75: 7 ratings · below the gate80: 18 ratings · below the gate85: 15 ratings · below the gate90: 22 ratings92: 3 ratings95: 64 ratings6499: 2 ratings100: 25 ratingsreframe below 90

06

Auto-poke

Persistence is the other half of intelligence: most agent failures are early exits, not wrong answers. When a turn ends with todo items open, the loop can poke the model back to work — capped, and stopped the moment a poke changes nothing. Off by default until this page says it should not be.

produced by pnpm bench:signals · FREECODE_AUTO_POKE=1 to enable

43%
ended with open todos

58 of 135 sessions with a list

0
pokes fired

across 3 sessions with the gate on

pokes followed by work

no pokes yet

items closed after a poke

todo items completed on a later call

Sessions that ended with open todos

Lower is better. The same measure on sessions where auto-poke was off and where it was on — the before/after the default flip waits on.

gate off44%
gate on0%

A session counts as 'gate on' when a poke fired or the loop recorded a skip reason other than disabled. Sessions from before the gate existed count as off — that is the baseline.

Why the loop did not poke

Every stop with a todo list present is recorded, poked or not.

nothing open3
disabled3
#Footer