A native macOS window for coding agents: Swift and SwiftUI, one pane of glass with the conversation on it. It runs the agents you already have, Claude Code, Codex, Cursor, Copilot, OpenCode and others, each through its own CLI and the login you made for it in Terminal, and a few model APIs by a key kept in your Keychain.
OriCode isn't made or endorsed by Anthropic or by any other agent's maker. Claude, Claude Code and the Claude logo are Anthropic's trademarks, and every other agent's name and logo belong to its maker.

- macOS 26 or newer on Apple silicon
- Claude Code, installed and logged in: run
claudein Terminal once. Every other agent is optional and turned on in Settings › Agents. - Node 24 or newer, which runs the app's engine
- For pull requests, GitHub's CLI, signed in:
brew install gh, thengh auth login. Everything else works without it. - To build it: Xcode 26 or newer with its Metal Toolchain (
xcodebuild -downloadComponent MetalToolchain), and XcodeGen (brew install xcodegen)
Download OriCode's zip from the latest release, unzip it, and drag OriCode into Applications. From then on it updates itself.
OriCode is signed but not notarized by Apple, so the first time you open a copy you downloaded, macOS stops it and says Apple couldn't check it for malicious software. Once it's in Applications, clear the flag the download put on it, in Terminal, and open it as usual:
xattr -dr com.apple.quarantine /Applications/OriCode.appSome versions of macOS also offer Open Anyway in System Settings › Privacy & Security after that first try. Updates come through OriCode itself and shouldn't ask again.
OriCode checks GitHub for a newer release once a day, or when you choose OriCode › Check for Updates…. When there is one, a circle with an arrow appears beside the title at the top of the window. Click it to download the update, and again to restart into it.
Settings › Agents lists them all. Turn one on and OriCode looks for its CLI the way it looks for Node, or you choose the binary yourself, and its row says whether it's signed in or gives the one Terminal line that would sign it in. An agent that's off is never looked for.
These come in through their own binary and keep their own login, which OriCode never reads:
- Claude Code, through Anthropic's Claude Agent SDK and the
claudeon your Mac - Codex, through
codex app-server, logged in withcodex login - Cursor, through
cursor-agent acp, logged in withcursor-agent login. On Cursor's Free plan the model menu offers only Auto, the one model Free runs. - GitHub Copilot, through
copilot --acp, logged in withcopilot login. A GitHub account without a Copilot plan says so, with GitHub's line for getting Copilot Free. - OpenCode, through
opencode acp. Its free models need no login, and the keys you gaveopencode auth loginstay OpenCode's. - Grok Build, through
grok agent stdio, logged in withgrok login - Devin, through
devin acp, logged in withdevin auth login - Pi, through
pi --mode rpc, logged in withpiand then /login. Pi never asks before it runs a tool, so its threads say they run unsupervised. - Antigravity, through
agy, on a Gemini API key from Google AI Studio that you keep under Antigravity in Settings › Agents, with"modelProvider": "gemini"in~/.gemini/antigravity-cli/settings.json. Its Google account login is off, as below.
These run by an API key you type into Settings › Agents. It's kept in your login Keychain and handed only to the process that calls that API:
- Z.ai, DeepSeek, OpenRouter and Meta run inside Claude Code, pointed at each maker's Anthropic-compatible endpoint. The key takes the place of your Claude login in that thread's process, so your Claude subscription is never sent to them, and Claude's plan usage, limits and fast mode don't show on those threads. They need Claude Code installed, not logged in.
- Command Code runs its own
cmd, headless, with your Command Code key, or with the logincmd loginmade.
A thread offers only what its agent can do: no effort rail on an agent without levels, no permission tiles on one that never asks, no usage glass where the agent reports none.
Claude Code is what OriCode was built on. Codex, Cursor and OpenCode have run real threads in it. Copilot's check has run against the real CLI, on an account without a plan. Grok Build, Devin, Pi, Command Code, Antigravity and the four model APIs are built to their makers' protocols and tested against stand-ins, and haven't had a real turn yet, so expect rough edges there.
Some agents can sign in with an account whose maker keeps that login to its own apps. OriCode offers each of those off, under the maker's own sentence and a link to its terms, and you can turn one on in Settings › Agents. Until you do, the models behind it show dimmed in the model menu.
- Antigravity with a Google account. Google's terms call reaching Antigravity through third-party software with its Google login a breach that can get the account suspended, and Google suggests an API key for third-party agents instead.
- Pi signed into claude.ai. Anthropic doesn't let third-party apps offer claude.ai login or route requests through Free, Pro or Max plans.
- Pi signed into xAI. xAI's terms couldn't be read when this was built, so the switch quotes nothing and links to them.
- Pi signed into Meta. Meta says a Muse Code credential is for Muse Code only.
A thread's model is its head, and its rays are the models it sends workers out on, any agent's. The model page picks the head, and its Rays line under the models picks the rays from every ready agent's models the model menu shows: Opus as the head with GPT-6-Luna as its ray, say. The model button shows each ray's mark beside the head's name. With rays picked, OriCode tells the head which it has, in its own instructions rather than your prompt, so it hands them the parts of a task that suit them without being asked. With none, the head works alone.
OriCode serves the head a few tools of its own over MCP: start a worker on one of its rays with a task, see how it's doing, read what it brought back, message it, stop it, and merge its work. A worker that edits can work in a worktree of its own, on an oricode/ray-… branch, and a merge brings its changes in staged, where the review says which worker changed what.
Each worker is a ray on the thread's mark, in its agent's colour, around a dot in the head's: a Claude head with Codex rays is an orange dot with white rays, and a Codex head with Claude rays the other way round. ⌘I lists them with their agent, model, step, time and cost, their cost counts toward the thread's, and Stop on the head stops them too. Heads may start workers, in Settings › Agents, turns it all off.
Claude Code, the model APIs inside it, Codex, and the ACP agents that take MCP over HTTP, such as OpenCode, Cursor and Copilot, can be heads. Pi, Command Code and Antigravity take no MCP tools, so they can only be workers. So far a Claude head with a Codex worker and an OpenCode worker has run for real, and an Opus head that sent its GPT-6-Luna ray a task nobody had told it to hand out.
The model menu lists each agent's models under its name and its maker's logo, drawn in the colour its maker draws it in on a dark background, white where the maker's mark is black or white, which the effort rail and the thread's mark take too. Claude's logo is Anthropic's. The logos of OpenAI (Codex), Anysphere (Cursor), GitHub (Copilot), OpenCode, xAI (Grok Build), Cognition (Devin), Pi, Google (Antigravity), Z.ai, DeepSeek, OpenRouter, Meta and Command Code belong to their makers, as each agent's name does. OriCode shows them only to mark each agent's models, none of those makers made or endorsed it, and THIRD_PARTY_NOTICES.md says where each came from.
make run # builds OriCode Molten, the Debug app, and opens it beside OriCode
make app # builds Release and copies it to /Applications
make test # the engine's protocol tests and the Swift unit testsThe app never sees an agent's password or token. It starts a Node process, engine/, which starts each agent's own CLI and asks it whether it's signed in; it never reads a file or a keychain item that holds a login. Claude Code runs through the Claude Agent SDK, and the SDK runs the claude on your Mac, signed in however you signed it in.
The one credential OriCode keeps is a model API's key. The app writes it to your login Keychain and never reads it back, and the engine reads it only as it starts the process that calls that API, into that process's environment alone. What you do in OriCode counts against your own plans and keys, under each maker's terms, Anthropic's included.
App/ is the Swift app and engine/ the TypeScript engine it speaks newline-delimited JSON with, and project.yml generates the Xcode project through XcodeGen.
MIT, in LICENSE. The code and marks OriCode builds on are listed in THIRD_PARTY_NOTICES.md.