Repository navigation
Releases
One Code 0.7.0
One Code on pi 1.5.0, with very large instruction files kept from filling the context window.
Install
npm i -g @one-ai/one-code
On Windows without Node.js:
powershell -c "irm https://raw.githubusercontent.com/IsuruMaduranga/one-code/master/install.ps1 | iex"
Instruction files take at most half the context window
CLAUDE.md, AGENTS.md and ONECODE.md ride the first message of every session, so a compaction can never free their space. A very large file, or several large ones together, used to leave every request nearly full or over the limit.
- Instruction files may now take at most half the model's context window together. Past that, the largest file is left out, then the next largest, until the rest fit. The model gets a short note in its place naming the path and size, and reads the parts it needs.
- You are told when it happens: at startup, before the next prompt when a model switch or a compaction moves a file across the line, when a nested CLAUDE.md is attached on a read, and in
/doctor./memoryopens the file to trim it. - Nested instruction files share the same half with the top-level files and with the nested files already in the conversation.
- Auto mode leaves out the same files the agent does. The classifier sees a note that the file exists and that leaving it out grants no permission.
pi 1.5.0
The app now pins pi 1.5.0. The extension package supports pi from 1.0.0, and the tested range runs through 1.5.
- Hints follow your keybindings. Collapsed-output trailers, the startup key hints and the hidden-thinking label name the key you bound for each action, and drop the hint when the action has no key. On an older pi they keep today's text.
- Your terminal knows when One Code is waiting for you. The question panel and plan approval now report a waiting state to the terminal, as pi's own dialogs already did.
- Function keys with modifiers are read the way pi 1.5.0 reads them in the panels.
- The bundled model catalogs are refreshed.
One Code 0.6.0
One Code on pi 1.4.0, with every request now built from the session itself, so sessions keep their prompt cache through compactions, reloads, forks and resumes.
Install
npm i -g @one-ai/one-code
On Windows without Node.js:
powershell -c "irm https://raw.githubusercontent.com/IsuruMaduranga/one-code/master/install.ps1 | iex"
pi 1.4.0
The app now pins pi 1.4.0. The extension package supports pi from 1.0.0, and the tested range runs through 1.4.
pi 1.4.0 changes how OpenAI Responses requests declare their tools for GPT-5.4 and later (on openai, openai-codex, github-copilot and opencode). One Code now reads where a request declares its tools from the request itself, so the same session works on pi 1.0 through 1.4.
- No repeated system prompt. Without the fix, every request after the first repeated the system prompt on these models.
- Tools loaded through
tool_searchstay declared, in the main session and in forks. - A session started on pi 1.3 continues on 1.4 with its tools and cached prefix unchanged.
Requests built from the session
One Code now records each request as it went to the provider and builds the next one by appending to it. The request is a function of the session branch, so lifecycle events no longer change what the model already saw or break the prompt cache.
- Compaction,
/tree,/reload,--resume,/fork,/clearand model switches keep the permission mode, plan, loaded tools, file read state,/loopstate and running agents the branch recorded. - Skill toggles and model switches no longer re-cache the conversation. The skills, tools and servers announced at the top of the session stay frozen until the next compaction, which rebuilds them. A tool or server that arrived mid-session is still named after a compaction.
- Forks read the parent session's cache, get their own copy of the plan file, and hear when the parent's permission mode changes.
- An entered worktree survives
/clearand/new. - Subagents' injected tools stay deferred, and the model is told when a tool it used is gone.
- Side calls (
/btw, the recap, the classifier) see only the selected branch.
Also in this release
UserPromptSubmithook context stays on its prompt. It no longer rides a later request when its own request fails or another prompt is queued.- A requested bypass mode is refused in a session that cannot grant bypass, and plan exit offers bypass back only when the session can grant it.
- Skills marked user-only are refused to the model.
- The bundled model catalogs are refreshed for pi 1.4.0 and again at the bump.
- The app no longer shows pi's changelog after a pi version bump.
Verified
The unit suite (5,728 tests), the bundled-app smoke and the prompt-cache checks on Anthropic, OpenAI, OpenAI Codex and OpenRouter pass on this release. Live runs on pi 1.4.0 covered tool_search loads and forks on GPT-6.1, a session continued from pi 1.3.0, and the permission, subagent, workflow, plan, hook and lifecycle harnesses.
Both packages ship 0.6.0 in lockstep; the Homebrew formula moves to 0.6.0.
One Code 0.5.0
One Code on pi 1.3.0, with contributor docs and a clearer plan approval dialog.
Install
npm i -g @one-ai/one-code
On Windows without Node.js:
powershell -c "irm https://raw.githubusercontent.com/IsuruMaduranga/one-code/master/install.ps1 | iex"
pi 1.3.0
The app now pins pi 1.3.0. The extension package still supports pi from 0.84.3, and the tested range runs through 1.3.
- A resumed session keeps the tools it loaded. A tool loaded through
tool_searchstays callable after--continue, and the first resumed request reads the whole cached prefix. - Opus 5 and Haiku 5.5 run their side calls with thinking off. The recap, the web reader, the session title and the auto-mode classifier send thinking disabled on those two models. Replayed requests keep their captured thinking settings, so they still read the session's cache.
- GPT-6 on an OpenAI API key keeps the cache across a thinking-level change. pi carries the level in
configuration_updateinput items, and forks pass them through.
Model catalogs
The bundled model catalogs are refreshed: 76 new models and 16 removed ones. Gemini 4 Argon is a workhorse model. With the new prices, Nemotron 3 Ultra and the Sakana models move from cheap to workhorse, and Gemini 2.5 Computer Use moves to cheap.
Also in this release
- The plan approval dialog shows its choice keys (←/→, 1-4, enter, esc) directly under the choices, where they no longer get lost above a long plan.
- Contributor docs under
docs/dev/: getting started, architecture diagrams, extension rules and testing, with a rewrittenAGENTS.md.
Verified
The unit suite, the bundled-app smoke and the prompt-cache checks on Anthropic, OpenAI, OpenAI Codex and OpenRouter pass on this release. It was also run by hand on Ubuntu 24.04 and Windows Server 2025, installed over 0.4.1.
Both packages ship 0.5.0 in lockstep; the Homebrew formula moves to 0.5.0.
One Code 0.4.1
A same-day follow-up to 0.4.0, which carries the release notes.
Install
npm i -g @one-ai/one-code
Fixed
- The
@one-ai/one-codenpm page is current again. The app's README had not changed since 0.2.0: it named the Homebrew formulaone-code(renamed toonecodein 0.3.0, so the copied command failed), and said nothing about native Windows or theinstall.ps1installer. It now mirrors the repository README's install section and feature summary.
No code changes. Both packages ship 0.4.1 in lockstep; the Homebrew formula moves to 0.4.1.
One Code 0.4.0
The Windows release, with a batch of Claude Code parity work behind it.
Install
npm i -g @one-ai/one-code
On Windows without Node.js:
powershell -c "irm https://raw.githubusercontent.com/IsuruMaduranga/one-code/master/install.ps1 | iex"
Native Windows
- One Code runs on native Windows in Claude Code's shape. The
powershelltool is on by default on Windows and is the primary shell when active; Git Bash stays alongside when it exists, andCLAUDE_CODE_USE_POWERSHELL_TOOL/CLAUDE_CODE_GIT_BASH_PATHbehave as they do in Claude Code.PowerShell(...)permission rules work, with a read-only allowlist and a deterministic pre-gate for auto mode. - Windows path spellings. Git Bash
/c/…and/tmp/…forms in bash command lines, drive-relative paths refused in the read-only check,~expanded with forward slashes. - npm
.cmdlanguage servers start throughcmd.exe, so TypeScript and friends work from an npm global install; a shimmed server's whole process tree is killed on shutdown. - Hooks are detached properly on Windows so an exiting parent never waits on them.
- Keys and chrome. Permission modes cycle with
alt+mon Windows and WSL (pi's key table takesctrl+qthere), and the mode badge's pause icon is a single cell. - An installer script.
install.ps1finds Node ≥ 22.19 or downloads the newest Node LTS for the CPU, verifies it againstSHASUMS256.txt, installs the app, fixes the user PATH, and points at Git for Windows when git is missing. - Verified live on CI. A real model drives the bash and PowerShell tools end to end on
windows-latestandubuntu-lateston every push touching shell code. A new guide page, Windows, says what is and isn't verified.
Claude Code parity
/btwasks a side question answered from the live conversation context, shown in a scrollable overlay that never enters the transcript.- Slash commands are visible to the model. Local commands leave Claude Code's
<local-command-caveat>and breadcrumb blocks, so a/clearor a model switch is no longer invisible to it. - Sessions are named automatically the way Claude Code names them, in the terminal title and the session picker.
- Harness notifications use Claude Code's wire shape (
<task-notification>, the subagent hand-back frames) instead of One Code's own prose frame. - Prompt caching on Anthropic. The tools array stays byte-stable across
tool_searchloads, so loading a deferred tool no longer busts the cached prefix. - Footer. Counts pi's cache-warming usage in the total, and shows the worktree's path and branch during a worktree session.
Doctor and update notice
- The Homebrew update hint waits until brew can actually install the release (Homebrew passes
--min-release-age=1), and names the renamedonecodeformula. - The doctor reports the shell tools in its Dependencies section and reads transcripts with one-line read-only commands.
pi
- The app pins pi 0.86.1; the extension package's tested range now covers 0.86.x.
Fixes
- Subagent cancellation status is preserved across hand-back review; saved model choices are validated.
- Subagent model selection and the retry menus' default model only pick image-capable models.
- The compaction clamp estimate counts the system prompt and tools.
- The shell tools inherit pi's strict JSON-schema sampling.
- Hand-back reasons are bounded and non-terminal statuses rejected.
- A skill's command turn runs in one-shot mode.
- LSP: a global-only TypeScript install is refused up front with the install line, and servers are keyed on the resolved path.
Homebrew
- The
onecodeformula is bumped to 0.4.0. A freshbrew install isurumaduranga/one-ai/onecoderesolves about a day after the npm publish because of Homebrew's minimum-release-age guard.
One Code 0.3.1
A small follow-up to 0.3.0.
Install
npm i -g @one-ai/one-code
Fixes
onecode doctorno longer crashes. The doctor CLI resolved@earendil-works/pi-aiwith a bare alias that rewrote the/compatsubpath to a dead path, so the command failed the moment its dependency probe loadedpi-web-search. The CLI now aliases pi-ai the way pi's own loader does. The app smoke test runsonecode doctorso this cannot regress unnoticed. Interactive/doctorand web search were unaffected.
Homebrew
- The tap formula is renamed to
onecodeand bumped to 0.3.1, matching the installed command. Install withbrew install isurumaduranga/one-ai/onecode. A freshbrew installresolves about a day after the npm publish because of Homebrew's minimum-release-age guard.
Docs
- The README and the whole user guide were rewritten in a plainer, more conversational voice, and every guide page now links back to the index.
One Code 0.3.0
This release renames the project to One Code and lands everything built since 0.1.4. The command is now onecode, all state lives in ~/.onecode, and the bundled app ships as the scoped package @one-ai/one-code; the pi package stays one-code-extension. Both packages ship in lockstep at 0.3.0.
Install
npm i -g @one-ai/one-code # recommended — the bundled onecode app
pi install npm:one-code-extension # or install onto your own pi
Highlights
- Auto permission mode is the default, matching current Claude Code: a deterministic shell pre-gate, a git-recoverability check for in-project destruction, and Claude Code's two-stage LLM classifier running its ruleset verbatim.
/doctorsetup checkup andonecode doctor, with model presets you can apply.- Model tiering by model generation (from models.dev release dates), plus an optional measured capability floor for subagent, classifier, and reader picks when an Artificial Analysis key is set.
- Subagents (
Agent/SendMessage) with a live agent panel, worktree isolation, and two-way messaging; workflows (ultracode) run fan-out scripts in a worker thread with a runaway-loop watchdog. - MCP client with a
/mcpmanager panel and OAuth, and plugins with a/pluginsmarketplace. - Compaction, an LSP diagnostics watcher, and command hooks bridged into subagents.
- Pinned pi upgraded to 0.85.1; broad hardening of untrusted-input surfaces and permission confinement.
Notes
- Requires Node ≥ 22.19.
- Homebrew: the formula is being renamed to
onecode; a freshbrew installresolves ~24h after publish because of Homebrew's--min-release-ageguard.
One Code 0.1.4 — true fullscreen, clean exit
The bundled app now runs the full Claude Code terminal experience: a full-screen (alt-screen) TUI by default on first run, and a clean exit — quitting restores your terminal to exactly what preceded the session, leaving only the one-line resume hint. (pi's stock quit path repaints the transcript into scrollback; the app reaches pi-tui's preserve-screen exit instead. An upstream proposal to make this a pi setting is queued.)
Opt out anytime with "tuiMode": "regular" in ~/.one-code/agent/settings.json. On your own pi (the extension package), fullscreen remains opt-in: pi --tui-mode fullscreen — with pi's stock exit behavior until the upstream change lands.
npm: @one-ai/one-code@0.1.4 · one-code-extension@0.1.4 (lockstep) · Homebrew: brew install isurumaduranga/one-ai/one-code
One Code 0.1.2 — first public release
First public release of One Code — the Claude Code experience on any model you want.
One Code brings the whole Claude Code workflow — subagents, ultracode workflows, skills, MCP, plan mode, hooks, a real permission system, project memory, full .claude/ compatibility — to any provider: Anthropic, OpenAI, Gemini, a local Ollama model, or a gateway like OpenRouter. It is built as a set of extensions for the pi coding agent — no forks, so upstream improvements land as a version bump.
Install
The bundled app (recommended — ships its own pinned pi, keeps state isolated in ~/.one-code, coexists with any existing pi):
npm install -g @one-ai/one-code
cd your-project && one-codeOr via Homebrew (installs Node for you too):
brew install isurumaduranga/one-ai/one-codeAs a pi package, on your own pi install:
pi install npm:one-code-extensionTry it free
You need one model-provider key; two providers hand out free models today:
- OpenCode Zen — free model
deepseek-v4-flash-free - OpenRouter — free models carry a
:freesuffix;nvidia/nemotron-3-ultra-550b-a55b:freeis genuinely good (in-app OAuth supported:/login→ "Sign in with OpenRouter")
Release contents
- npm
@one-ai/one-code0.1.2— the app:one-codecommand, pi0.84.1pinned, isolated state, One Code update notifications - npm
one-code-extension0.1.2— the pi package: 32 extensions, two themes, bundled agent catalog; tested against pi 0.83–0.84 with a startup warning outside that range
Versions are lockstep: both packages share one version per release, and the app pins the extension at exactly its own version.
Requires Node ≥ 22.19 on the npm route. Platforms: macOS and Linux (WSL works the same way); native Windows is untested best-effort for now.