jcode README

The project's README from github.com/1jehuang/jcode. As one markdown file: README.md.

jcode

Latest Release License: MIT Platforms Last Commit GitHub Stars Discord

The most RAM efficient harness
The most intelligent harness

1jehuang/jcode | Trendshift

jcode YC launch video

Website · Docs · SDK · Benchmarks · Features · Install · Quick Start · Further Reading · Contributing


Installation

# macOS & Linux
curl -fsSL https://jcode.sh/install | bash
# Windows 11 (PowerShell 5.1+)
irm https://jcode.sh/install.ps1 | iex

Need Homebrew, source builds, provider setup, or want an agent to set it up for you? Jump to detailed installation.

Updating

Run /update in the TUI to download the latest stable release in the background and reload with your session preserved. From a terminal, use jcode update, then restart the client. Both commands use the same update policy, including for dev builds.

Older or equal release versions are skipped. For a development build, Jcode also compares the running binary's Git commit with the release tag. Builds ahead of, identical to, or diverged from the release are preserved. If ancestry cannot be verified locally or through GitHub, the update stops rather than risking a downgrade. The displayed dev patch includes a commit-count offset, so it is not used as a release version comparison.

This is the default features.update_channel = "stable" behavior. An explicit "main" channel still opts into source-branch updates. Use /rebuild or the self-dev build workflow to rebuild your own checkout.


Performance & Resource Efficiency

jcode is built to be as performant and resource efficient as possible. Every metric is optimized to the bone, which is important for scaling multi-session workflows. Here we sample a few metrics to show the difference: RAM usage and boot up.

RAM comparison

1 active session
Tool PSS Comparison
jcode (local embedding off) 27.8 MB baseline
jcode 167.1 MB 6.0× more RAM
pi 144.4 MB 5.2× more RAM
Codex CLI 140.0 MB 5.0× more RAM
OpenCode 371.5 MB 13.4× more RAM
GitHub Copilot CLI 333.3 MB 12.0× more RAM
Cursor Agent 214.9 MB 7.7× more RAM
Claude Code 386.6 MB 13.9× more RAM
Antigravity CLI 243.7 MB 8.8× more RAM
10 active sessions
Tool PSS Comparison
jcode (local embedding off) 117.0 MB baseline
jcode 260.8 MB 2.2× more RAM
pi 833.0 MB 7.1× more RAM
Codex CLI 334.8 MB 2.9× more RAM
OpenCode 3237.2 MB 27.7× more RAM
GitHub Copilot CLI 1756.5 MB 15.0× more RAM
Cursor Agent 1632.4 MB 14.0× more RAM
Claude Code 2300.6 MB 19.7× more RAM
Antigravity CLI 1021.2 MB 8.7× more RAM

Time to first frame

Tool Time to first frame Range Comparison
jcode 14.0 ms 10.1–19.3 ms baseline
Antigravity CLI 383.5 ms 363.1–415.4 ms 27.4× slower
pi 590.7 ms 369.6–934.8 ms 42.2× slower
Codex CLI 882.8 ms 742.3–1640.9 ms 63.1× slower
OpenCode 1035.9 ms 922.5–1104.4 ms 74.0× slower
GitHub Copilot CLI 1518.6 ms 1357.4–1826.8 ms 108.5× slower
Cursor Agent 1949.7 ms 1711.0–2104.8 ms 139.3× slower
Claude Code 3436.9 ms 2032.7–8927.2 ms 245.5× slower

Measured on this Linux machine across 10 interactive PTY launches.

Time to first input

(time until typed probe text appears on the rendered screen; Antigravity uses its internal input-ready log marker because the sign-in screen suppresses probe echo.)

Tool Time to first input Range Comparison
jcode 48.7 ms 30.3–62.7 ms baseline
Antigravity CLI 383.7 ms 363.4–415.7 ms 7.9× slower
pi 596.4 ms 373.9–955.2 ms 12.2× slower
Codex CLI 905.8 ms 760.1–1675.7 ms 18.6× slower
OpenCode 1047.9 ms 931.1–1116.9 ms 21.5× slower
GitHub Copilot CLI 1583.4 ms 1422.8–1880.0 ms 32.5× slower
Cursor Agent 1978.7 ms 1727.3–2130.0 ms 40.6× slower
Claude Code 3512.8 ms 2137.4–9002.0 ms 72.2× slower

Measured on this Linux machine across 10 interactive PTY launches. Antigravity CLI was unauthenticated for this run; its sign-in screen rendered normally and emitted an internal CLI ready for user input marker, but did not echo the typed probe.

Additional clients / memory scaling

Tool Extra PSS per added session Comparison
jcode (local embedding off) ~9.9 MB baseline
jcode ~10.4 MB 1.1× more RAM
pi ~76.5 MB 7.7× more RAM
Codex CLI ~21.6 MB 2.2× more RAM
OpenCode ~318.4 MB 32.2× more RAM
GitHub Copilot CLI ~158.1 MB 16.0× more RAM
Cursor Agent ~157.5 MB 15.9× more RAM
Claude Code ~212.7 MB 21.5× more RAM
Antigravity CLI ~86.4 MB 8.7× more RAM
versions tested for this corrected memory rerun:
jcode performance demonstration

jcode performance demonstration


Memory (Agent memory)

Jcode embeds each turn/response as a semantic vector. Every turn does queries a graph of memories to efficiently find related memory entries via a cosine similarity check. The embedding hits are fed into the conversation, or optionally uses a memory sideagent which verifies the memories are relevant, and potentially does more work for information retreival before injecting into the conversation. This results in a human like memory system which allows the agent to automatically recall relevant information to the conversation without actively calling memory tools or being a token burner. ot To have memories which are retrieved, they must also be extracted and stored. Every so often (semantic drift, K turns since last extraction, session end, etc), memories are extracted via a memory sideagent, and put into the memory graph.

The harness also provides explicit memory tools to allow the agent to actively search or store the memory without relying on a passive background process. The harness also provides session search for traditional RAG on previous sessions.

Memories are automatically consolidated every so often via the ambient mode. This reorganizes, checks for staleness and conflicts, etc

jcode memory demonstration

jcode memory demonstration


UI: Side panels, Diagrams, Info Widgets, rendering, scrolling, alignment

The side panel is a place for auxiliary information. Tell your jcode agent to load a file into the side panel and see it update in real time, or tell your agent to write directly to the side panel, or use it as a diff viewer. The side panel (and chat) is able to render mermaid diagrams inline. image

To make this possible, I created a new mermaid rendering library to render diagrams 1800x faster. It has no browser or Typescript dependency. See https://github.com/1jehuang/mermaid-rs-renderer

To show you important information without taking space away from the screen that could be used for responses, I developed info widgets. Info widgets will only ever take up the negative space on the screen to show you information, and will get out of the way if there isn't any.

Jcode can render at over a thousand fps. Your monitor will not have the refresh rate to show you, but this means you will not have silly flicker problems.

The custom scrollback implementation of jcode allows it to do much more than a native scrollback. However, it is a terminal-level limitation that I cannot have smooth, partial line scrolling with a custom scrollback. To fix this, I made my own terminal. Handterm https://github.com/1jehuang/handterm implements a native scroll api, and also happens to be very efficient. This is a work in progress. Scrolling is still well implemented for normal terminals.

Jcode is left-aligned by default. You can switch to centered mode with the Alt+C hotkey, with the /alignment command, or in the config.

To disable emoji globally in TUI and CLI output, set emoji = false under [display] in ~/.jcode/config.toml, or launch with JCODE_NO_EMOJI=1. Jcode replaces emoji with compact ASCII markers while preserving other Unicode text.


Swarm

Spawn two or more agents in the same repo, and they will automatically be managed by the server to allow native collaboration. When agent A edits a file that agent B has read (code shifting under its feet), the server notifies agent B. Agent B can ignore it if it is not relevant, or it can check the diff to make sure that it doesn't conflict. Each agent has messaging abilities, capable of DMing just one agent, broadcasting to all other agents hosted by the server, or just agents working in that repo. This allows you to spawn multiple sessions in the same repo, and have all conflicts automatically resolved.

jcode swarm demonstration

jcode swarm demonstration

Agents are also able to spawn their own swarms autonomously. They have a swarm tool which allows them to spawn in their own teamates to accomplish tasks in parallel. Doing so turns the main agent into a coordinator and the spawned agents into workers. Groups of agents, their messaging channels, their completion statuses, etc are all automatically managed. This can be done headlessly or headed.


OAuth and Providers

jcode works with subscription-backed OAuth flows and many provider integrations, so you can use the models you already pay for and still fall back to direct API providers when needed.

Supported built-in login flows

For custom OpenAI-compatible endpoints, jcode now prompts for the API base and supports local localhost servers without requiring an API key.

The native OpenAI providers use Responses WebSocket v2 with opportunistic background prewarming and HTTPS fallback. See OpenAI WebSocket transport for behavior, controls, and verification.

Config-file setup for self-hosted endpoints and MCP

If you prefer to configure things by editing files instead of using the login UI, jcode supports both a custom OpenAI-compatible endpoint config and MCP config files.

OpenAI-compatible providers

Many hosted services speak the standard OpenAI /v1/chat/completions API. jcode talks to them through one shared OpenAI-compatible provider, so you can use almost any such endpoint without waiting for a dedicated integration.

There are two ways to set one up:

Useful environment overrides for these endpoints:

For details on self-hosting,

jcode (1jehuang/jcode)

Searching Database…

20.9K ·GitHub
What is this?jcode is a high-performance coding agent harness written in Rust — a terminal-based AI coding agent that connects to LLM providers like Claude, OpenAI and Gemini and drives coding work from your TUI.
Is this a terminal app, or does it run in a browser?It runs in your terminal: jcode is a TUI client you launch from the shell, with slash-commands like /update and /model. There is also an SDK for programmatic use.
How do I install and update it?Install via Homebrew or build from source, then log in with jcode login --provider claude (or openai, gemini, copilot...). Updates ship through /update in the TUI or jcode update in a terminal.
Do I need API keys, or can I use subscriptions I already have?Subscriptions work: OAuth login for Claude, ChatGPT/Codex, Gemini, Copilot or Azure, plus built-in profiles for openrouter, deepseek, kimi and more. Any OpenAI-compatible endpoint works too — local LM Studio and Ollama servers need no API key at all.
Any rough edges I should know about?Smooth partial-line scrolling is impossible with a custom scrollback, so the author is writing his own terminal (Handterm) to fix it — a work in progress, though scrolling is well implemented on normal terminals.
Why did the author build another coding agent instead of using Claude Code?The README frames jcode as the most RAM-efficient and most intelligent harness: every metric is optimized for scaling multi-session workflows. The memory graph, swarm mode and custom mermaid renderer all serve that goal.
Is there an SDK for building on top of it?Yes — the README links to an SDK alongside docs and benchmarks, and CI publishes a TypeScript SDK, so you can drive jcode programmatically rather than only through the TUI.
How mature is the project?Young but popular: the repository was created in January 2026 and already counts over 20k GitHub stars. Parts like the Handterm terminal are still works in progress, so expect fast-moving dev builds.
What are similar projects?Raven, oh-my-pi, ruflo, oh-my-openagent, dscode, maki, mixdog, brigade
Creator
1jehuang
Size
451.3 MB
Stars
20.9K
Age
9mo
Commits · 90 Days