Everything around the terminal, inside the terminal.

Phantom is a macOS terminal built on Ghostty's engine. Around it: a sidebar that groups your projects, an editor with language servers, git and worktrees, and the coding agents you already run. One window, no alt-tab.

v0.21.0-beta · macOS 13 or later · Apple silicon and Intel · MIT

0:00 / 4:07

A pass over the whole application, four minutes, no sound. Nothing loads until you press play.

Built on Ghostty

Phantom is a personal fork of Ghostty by Mitchell Hashimoto and its contributors. Everything that makes a terminal a terminal — the multi-threaded core, the Metal renderer, the standards-compliant VT emulation, libghostty — is theirs, and it is untouched here.

This fork adds the application around that engine, and it tracks upstream so it can keep merging. For the engine itself — performance, supported sequences, platform notes — read Ghostty's own documentation.

ghostty.org

What the app adds

01

Tabs that carry the project with them

Group terminals by hand, or point a group at a project folder and every terminal opened underneath it joins on its own.

Each row states where it stands: the branch, a dot when the checkout is dirty, the open pull request for that branch, and a clickable :3000 the moment a dev server binds a port. The port detection reads the process, not a config file, so it works for any framework.

02

The agent's state, on the tab

Claude Code, Codex, OpenCode, Antigravity, Kimi Code and Pi. A row shows whether its session is working, waiting on you, or done — so a dozen agents across a dozen repositories stop being a dozen identical tabs.

Sessions resume where they left off when a tab reopens, and the hooks that report the state install from Settings with one click.

03

An editor in the same pane

Open a file next to the terminal that produced it. Syntax grammars, a minimap, workspace-wide search, format on save, and a grid you can split in any direction.

Language servers arrive from the store rather than the binary, and bring hover, definition, references, rename, completion and diagnostics with them. Markdown, images, PDF, SVG and CSV each open in a viewer of their own.

04

Git, and a worktree for every branch

Status and staging in the sidebar, conflicts resolved in the file itself rather than in a separate tool, split diffs, and a branch review of every commit and file against the base.

Create or adopt a git worktree from the same place, one section per repository. Switch a terminal's worktree and the open editor tabs follow it; a file with no counterpart on the other side opens read-only and says why.

branch review
--- feat/status-dots against main        4 commits, 6 files

    7b4b688  Wire the status dots to the session state
    5f6655d  Group sessions by workspace
    9a1c204  Keep a waiting session at the top
    c31f8ad  Read the state from the hook, not the title

+++ src/lib/session.ts             18 added, 4 removed
+++ src/components/StatusDot.tsx    9 added, 1 removed
+++ src/lib/worktree.ts            21 added, 0 removed
05

Agents can drive the window

Phantom is an MCP server. Twenty-five tools across terminals, groups, the editor, diagnostics, language servers and worktrees: open a file at a line, read a terminal's output, create a worktree, list the diagnostics a server reported.

Every terminal exports the socket, the handshake verifies the peer's process id, and each capability is granted by you in a prompt — scoped to one tab, one group, or everything.

tools/call
{
  "method": "tools/call",
  "params": {
    "name": "open_file",
    "arguments": {
      "path": "/Users/me/atlas-web/src/lib/session.ts",
      "line": 24
    }
  }
}

// -> Opened session.ts in this window's editor.
06

An extension store, and a look of your own

Languages, formatters, themes, icon packs and agents install from a registry, and every download is checked against the sha256 in the index before it is unpacked.

Since 0.19.0 an extension can also draw: a panel in the sidebar or an editor bound to a file name, written in TypeScript. Themes and icon packs come from the same place, and the app's own chrome follows whichever theme is active.

index.json
{
  "id": "typescript",
  "publisher": "phantom",
  "version": "2.1.0",
  "minimumPhantomVersion": "0.17.0",
  "contributes": ["languages", "servers", "grammars"],
  "download": {
    "url": ".../phantom.typescript-2.1.0.zip",
    "sha256": "9f2b…c41d",
    "bytes": 184320
  }
}
25

MCP tools

6

coding agents

13+

macOS version

MIT

license

Download Phantom

A universal .dmg and an Apple-silicon-only one, built and published from this repository on every release. Requires macOS 13 Ventura or later.

First launch

The app is ad-hoc signed and not notarized. On first launch, right-click it and choose Open — or run xattr -cr Phantom.app — instead of double-clicking, or Gatekeeper will refuse it as coming from an unidentified developer.

Updates

Every later version arrives in place through Phantom › Check for Updates, and stays on the build you installed — a universal app never updates into the Apple silicon one, or the other way round. A fresh install checks in the background and installs at the next quit; you can turn that off in Settings.