Most AI coding tools compete on the model. jcode competes on everything around it.
Written in Rust by solo developer Jesse Huang and released under MIT, jcode is a terminal coding agent that has crossed 12k GitHub stars in roughly six months. Its pitch is unusual: it does not train a model, fine-tune one, or claim a benchmark win on SWE-bench. It claims that the harness — the runtime that holds context, manages sessions, calls tools, and renders the UI — has been leaving enormous amounts of performance on the table.
The numbers it publishes make that case bluntly.
The benchmark that started the conversation
| Metric | jcode | Claude Code | Ratio |
|---|---|---|---|
| Time to first frame | 14.0 ms | 3,436.9 ms | 245x |
| Time to input ready | 48.7 ms | ~3.5 s | 72x |
| Memory, single session | 27.8 MB | 386.6 MB | 13.9x |
| Memory, 10 sessions | 260.8 MB | 3,237.2 MB (OpenCode) | 12.4x |
The 27.8 MB figure is with embeddings disabled; with the semantic memory system on, a session sits closer to 167 MB — still under half of Claude Code's baseline. Cursor Agent lands at 1,949 ms to first frame, GitHub Copilot CLI at 333 MB per session.
The obvious objection is that startup time is vanity. It is not, and the reason is behavioural. A 3.4-second cold start is long enough that you stop opening a second agent to check something in parallel. At 14 ms, spawning an agent costs less than opening a file, so you do it constantly. The performance number is really an argument about workflow, and it is the same argument git worktrees for parallel agents makes from a different direction.
Memory as a graph, not a scratchpad
The architectural piece worth studying is how jcode handles memory.
The dominant pattern in 2026 is a markdown scratchpad — CLAUDE.md, AGENTS.md, a /remember command — plus a retrieval tool the model can call when it thinks it needs history. Both halves have costs. The scratchpad grows until it eats the context window. The retrieval tool burns tokens on every speculative lookup, and the model has to decide to look, which it frequently does not.
jcode replaces both with an automatic pipeline:
- Every conversation turn is embedded as a vector and written into a memory graph.
- On each new turn, the graph is queried by cosine similarity for related memories.
- A separate verifier subagent checks the retrieved hits before they are injected into context.
- A background consolidation pass reconciles stale or conflicting facts.
No /remember calls, no tool-use tokens spent on lookups, no model discretion about whether to check. The verification step is the part most home-grown RAG memory layers skip, and it is the one that matters — semantic similarity retrieves things that are related far more often than things that are true right now. A fact that was correct forty turns ago ("the auth handler lives in middleware.ts") becomes an active liability once you have moved it.
This is a meaningfully different bet from the one described in persistent agent memory for enterprise: jcode is treating memory as an always-on infrastructure layer rather than a tool the agent opts into.
Append-only context, and why prompt caches punish you
A quieter optimisation in jcode's design is append-only context engineering.
Anthropic, OpenAI and Google all price cached input tokens at a steep discount — often around a tenth of the uncached rate. The cache is prefix-based: it holds as long as the beginning of your prompt is byte-identical to the previous request. Change one character near the top and the entire cache is invalidated and re-billed.
Most harnesses invalidate constantly without realising it. They re-sort a tool list, refresh a timestamp in the system prompt, compact the conversation mid-session, or re-render an MCP tool schema after a server reconnects. Each of those quietly turns a cheap request into a full-price one.
jcode's response is to make the context strictly append-only, and to cache MCP tool schemas on disk so that a background server reconnection never rewrites the prefix. MCP servers connect asynchronously while the agent is already running rather than blocking startup. It even warns you before a request that will hit a cold Anthropic cache.
If you are building your own agent loop, this is the single most transferable idea here. The rule is simple: never mutate anything that appears before the newest turn. Add to the end, or pay full price. We covered the economics of this in more depth in AI API cost optimization.
Swarm: agents that notice each other
Running several agents in one repository normally ends one of two ways — you isolate them into worktrees, or they overwrite each other's work.
jcode's swarm mode takes the shared-repo path and adds coordination. A background server tracks which files each agent has read and which it has written. When agent A edits a file that agent B has open, B is notified and checks the diff before continuing. Agents can also message each other directly, broadcast to the group, or spawn their own subordinate worker teams.
This is closer to the multi-agent orchestration model than to naive parallelism, and it is a genuinely hard problem: without conflict awareness, N parallel agents in one repo produce roughly N times the merge pain. Worth stressing that this is coordination, not transactional safety — you should still be committing between meaningful steps.
Getting it running
# macOS / Linux
curl -fsSL https://jcode.sh/install | bash
# Windows (PowerShell 5.1+)
irm https://jcode.sh/install.ps1 | iex
# Homebrew
brew tap 1jehuang/jcode && brew install jcodeOr build from source, which takes a few minutes:
git clone https://github.com/1jehuang/jcode.git
cd jcode && cargo build --releaseAuthenticate against whichever provider you already pay for:
jcode login --provider claudeThe commands that matter day to day:
jcode # interactive TUI
jcode run "fix the failing auth test" # one-shot, non-interactive
jcode --resume fox # resume a named session
jcode serve # background server
jcode connect # attach a client to itProvider routing and the escape hatch
jcode speaks to Claude, OpenAI, Gemini, GitHub Copilot, Azure, Alibaba, OpenRouter, DeepSeek, Mistral, Groq, Perplexity, Fireworks, Ollama, LM Studio and any OpenAI-compatible endpoint — 30+ in total, via OAuth or API key.
Adding your own gateway is a few lines of TOML in ~/.jcode/config.toml:
[providers.my-api]
type = "openai-compatible"
base_url = "https://llm.example.com/v1"
api_key_env = "JCODE_PROVIDER_API_KEY"The practical consequence is vendor optionality. When a subscription hits its rate limit, /account swaps to another one mid-session; when a provider has an outage, you re-point at a different one instead of stopping work. That is the same resilience argument we made in multi-model fallback strategy, implemented at the harness layer instead of the application layer.
For teams in Tunisia, Saudi Arabia and the wider MENA region, that routing layer has an extra dimension: it makes it trivial to run cheaper open-weight models through Groq or a local Ollama instance for routine work, and reserve frontier models for the tasks that actually need them.
The parts that deserve scepticism
Nothing here is free.
The benchmarks are self-published. They measure resource usage and startup latency — real, verifiable properties — not task success rates. jcode does not make your model better at fixing bugs. It makes the wrapper around the model cheaper and faster.
Self-dev mode is a loaded gun. jcode can edit its own source, rebuild the binary, and hot-reload mid-session. It is a genuinely impressive demo of recursive self-improvement in practice, and it is also an agent with write access to the thing constraining the agent. Treat it as a lab feature.
One maintainer, six months old. Twelve thousand stars is momentum, not stability. Version 0.56.0 shipped on 24 July 2026 and the release cadence is fast, which cuts both ways.
Terminal-only. There is no IDE integration in the way Cursor or Windsurf provide it. A native iOS app is announced; nothing else is.
Why this matters beyond one tool
The interesting claim in jcode is not the 245x. It is the implication behind it.
For two years the industry has treated the harness as plumbing — a thin shim between a terminal and an API, where any inefficiency was rounding error next to inference cost. jcode's measurements say the shim was costing 3.4 seconds of startup, 360 MB of RAM per session, and an unknown but substantial pile of re-billed cache misses. Those are not rounding errors when your workflow depends on running ten agents at once.
Whether or not jcode itself becomes the tool you use, the pattern it demonstrates is the one to internalise: append-only context, verified automatic memory, and conflict-aware parallelism. Those three ideas belong in any agent loop you build in 2026, harness of choice notwithstanding.
The repository is 1jehuang/jcode. It costs nothing to try, and about fourteen milliseconds to find out.