Orbit is a Mac IDE for AI coding agents.

Claude Code, Codex or any ACP agent writes the code, and you review it right in the editor: green for what it added, red for what it took out, Keep or Undo on every block. Built with SwiftUI and AppKit, so it's 37 MB on disk and takes 68 MB of memory; the agents bring their own. Free and open source, for macOS 26.

Version 0.1.0 · 11 MB · Apple silicon · GPL-3.0 · Source

client.ts
import { WeatherError } from "./errors";
import { retry } from "../lib/retry";
import { InMemoryCache } from "../lib/cache";
import type { Coordinates, CurrentWeather } from "./types";
const BASE_URL = "https://api.open-meteo.com/v1/forecast";
export class WeatherClient {
private readonly units: Units;
private readonly cache = new InMemoryCache<CurrentWeather>(10 * 60 * 1000);
constructor(options: ClientOptions = {}) {
this.units = options.units ?? "metric";
}
async current(at: Coordinates): Promise<CurrentWeather> {
const key = `${at.latitude},${at.longitude}`;
const cached = this.cache.get(key);
if (cached) return cached;
const data = await this.request(at, {
current: "temperature_2m,wind_speed_10m",
current: "temperature_2m,wind_speed_10m,weather_code",
});
this.cache.set(key, data.current);
return data.current;
}
}
Nothing to reviewTypeScriptSpaces: 2

It works. Watch the agent's turn, then keep a block, undo another — or press ⌥⌘↩ and ⌥⌘⌫ like in the app.

Review where the code is.

No review tab, no diff in a side panel: an agent's changes appear in the file it changed, whether it edited through its own tools or the shell. Walk them with ⌥⌘↑ and ⌥⌘↓, across files.

Per block. Keep it with ⌥⌘↩, undo it with ⌥⌘⌫. Everything at once: ⇧⌘↩ and ⇧⌘⌫.

Comments for the agent. ⌥⌘/ on a change or on any lines writes one; they wait above the chat and go to the agent as one message.

⌘K, edit this. Tell the agent what to do with the selection, or what to write at the caret; the result lands as an agent change, to keep or undo.

Any agent, several at once.

Claude Code, Codex, Cursor, Gemini, OpenCode and the rest of the ACP registry install from Settings in a click; a JSON file adds any other. Run chats side by side — each in its own clone of the project if you like — rewind one to an earlier message, files and all, and turn its work into a pull request.
+ the ACP registry
  • WeatherClient cache skylineEditing client.ts · 0:42
  • Flaky retry test skyline IsolatedWants to run npm test
  • Docs for the API skylineWorked for 2m · +120 −8
  • Rename units to unitSystem orbitRewound to “Rename it everywhere”

Light enough to forget it's there.

Measured against Zed, VS Code and Cursor on the same Mac, the same afternoon, the same small project. Medians of three runs; agents not counted — they cost the same anywhere. All the numbers, time to the first window too.
37 MB on disk. The text, the windows and the controls are the Mac's own; no browser engine inside to carry.
  1. Orbit37 MB
  2. Zed270 MB
  3. VS Code946 MB
  4. Cursor1,017 MB
68 MB with a project open. Every process the app owns, 15 seconds in; agents aside.
  1. Orbit68 MB
  2. Zed158 MB
  3. VS Code885 MB
  4. Cursor2,429 MB
2 processes. The app and the terminal's shell. Cursor runs 22.
  1. Orbit2
  2. Zed2
  3. VS Code11
  4. Cursor22
0.00 s of CPU in a quiet half minute. All of its processes together, with nobody touching anything.
  1. Orbit0.00 s
  2. Zed0.70 s
  3. VS Code3.69 s
  4. Cursor11.75 s

Open Quickly. ⌘P. File names first, matched letters lit; an empty field lists open tabs.

Find in Project. ⇧⌘F. Searches as you type, with case, word and regex; replace across files.

Terminal. ⌃` under the editor. Your login shell in the project; several shells in a list beside it.

Source Control. Stage, commit, branches, stash, history, blame. ✨ writes the message.

Language servers. Installed from Mason in a click: completion, hover, rename, fixes, formatting.

Tree-sitter. Highlighting for every language Zed knows, with the same grammars.

Multiple carets. ⌥-click, ⌘D for the next match, ⇧⌘L for all of them; each caret types with the full rules.

Command palette. ⇧⌘P. Every command any plugin registers, with its shortcut.

Zed themes. Color themes, icon themes and snippets from Zed's catalog load unchanged.

Settings, like the Mac's. Laid out like System Settings and searchable by option.

Updates itself. Once a day through Sparkle, signed; Check for Updates… looks right away.

Open source. GPL-3.0 on GitHub. Read it, build it with make run, send a fix.

Everything is a plugin.

The explorer, the editor, the review, the agents: each one is a plugin on the same public API, and Settings turns any of them off. An extension is a folder — write one.
~/.orbit/extensions/
my-extension/
  extension.json        # or Zed's extension.toml
  themes/*.json         # color themes
  icon_themes/*.json    # file icons
  snippets/*.json       # VS Code's format
  agents/*.json         # ACP agents
  language_servers.json
  tasks.json            # for Run Task…

Questions?

Answers.
What is Orbit?

A Mac IDE for working with AI coding agents. The agent writes the code in a chat beside the editor; you read its changes where they landed, in the file, and keep or undo them block by block.

It's built with SwiftUI and AppKit, not Electron, and started as its author's daily driver.

Which agents does it run?

Any agent that speaks the Agent Client Protocol: Claude Code, Codex, Cursor, Gemini, OpenCode, Grok and the rest of the ACP registry install from Settings → Agents. Anything else is a JSON file away.

Do I pay for it?

Orbit is free. The agents are the same CLIs you'd run in a terminal, signed in with your own account or key, so they cost what they cost anywhere.

Why does macOS ask before the first launch?

Builds aren't notarized yet, so macOS stops the first launch. Open Orbit once, then click Open Anyway in System Settings → Privacy & Security and confirm. Updates after that install without asking.

Which Macs?

Apple silicon, on macOS 26 Tahoe or later.

How is it different from Cursor or Zed?

Cursor is VS Code with an agent inside: Electron, and its own models. Zed is fast and runs ACP agents too, but draws its own interface. Orbit hosts the agents you already use, in a window that's a Mac app all the way down, and makes reviewing their work the main thing it does.

Does my code leave the Mac?

Not through Orbit: it has no account, no analytics and no server of its own. The agents talk to their providers exactly as they would in a terminal. Privacy.

Can it do what my IDE does?

Much of it: language servers, formatting, Git, a terminal, search. Not a debugger yet, and not every refactoring. The roadmap says plainly what's missing.

Can I extend it?

Everything in Orbit is a plugin on one public API. Today an extension is a folder with themes, icon themes, snippets, agents, language servers or tasks: how to write one.

Something's wrong.

Open an issue on GitHub.

Agents write the code. You decide what stays.

Orbit is free and open source, for Macs with Apple silicon on macOS 26 or later.