A terminal that keeps agent sessions as data, not pixels

A terminal built for orchestration. Cavrn keeps the session as structured data, not just pixels. Every turn, tool call, and result an agent draws is typed, agent-readable metadata, so crystl and sibling agents can read and supervise each other. And it's built to run a fleet: many agents at once, most off-screen, all of them light. (Painted fast on the GPU with Metal.)

works withany CLI agent

Cavrn is crystl's terminal engine. Where a normal terminal hands you scrollback (characters on a grid), Cavrn keeps a live, structured model of the session. Every user turn, assistant reply, tool call, and tool result is captured as a typed, timestamped record; a tool call is linked by id to the result it produced; a table an agent draws knows it's a table. It's the difference between a picture of the terminal and data about it.

Because the output is structured, things that used to be impossible become one call. A sibling agent reads your session with crystl screen --json or crystl history --json and gets typed records (turns, tool calls, results), not a screenshot. crystl's history navigator searches every past turn and tool call. A table an agent draws, box-drawing or markdown, is detected on the fly and copied as raw, CSV, or JSON. The phone app re-renders the same model cleanly instead of replaying escape codes. All of it reads from the one structured surface Cavrn keeps.

Cavrn is also built for how you actually run agents: several at once, most of them off-screen. It's painted on the GPU with Metal, but the sharper win is what it skips. An off-screen shard flooding output does almost no render work, and the visible one repaints only the rows that changed. Other terminals make one window fast; crystl keeps a dozen live agents light, so a big fan-out scrolls smoothly while your CPU stays free for the work. It's the default surface for new shards. Read the GPU rendering docs for that side of it.

Why it matters

Output you can read, not just see

Every turn, tool call, and result is captured as typed, timestamped data. crystl and other agents read the structure, not a screenshot of it.

Agents can read each other

crystl screen and crystl history return a sibling shard's session as JSON: typed turns, and tool calls linked by id to their results. That's how one agent supervises another.

Tables become data

A table an agent draws, box-drawing or markdown, is detected on the fly and copied as raw, CSV, or JSON. The structure survives the terminal instead of dying as characters.

Built for a fleet, not a drag-race

One fast window is easy; a dozen live agents is the hard part. Off-screen shards throttle to near-zero render work and the visible one repaints only what changed, painted on the GPU with Metal, so a big fan-out won't tax your Mac.

Dive deeper in the GPU rendering docs

Ready to try it?

Create a free account and download crystl for macOS.

get started getting started guide →

Frequently asked questions

What makes Cavrn different from a normal terminal?
A normal terminal gives you scrollback: characters on a grid. Cavrn keeps a structured model of the session: every turn, tool call, and result as typed, timestamped records, tables detected as data. The output becomes something agents and crystl can read and act on, not just display.
What can read the metadata?
crystl itself (the history navigator, mobile rendering, detected-table copy) and any agent via the CLI. crystl screen --json returns the live grid plus shard state (agent, status, awaiting-input, last output); crystl history --json returns the full typed transcript: user turns, assistant text, and tool calls linked by id to their results.
Is the Metal GPU rendering the main feature?
It's the supporting one. Metal keeps the terminal drawing fast under heavy output, but the point of Cavrn is the structured, agent-readable model underneath. Speed is table stakes; readable structure is the difference.
Do I have to turn it on?
No. Cavrn is the default surface for new shards. Existing shards keep the engine they were created with, so close and reopen one to move it onto Cavrn. xterm.js stays available as a fallback in Settings → Terminal Rendering.
Does it work with any agent?
Yes. Cavrn captures whatever runs in the shard: Claude Code, Codex, or a plain shell. The structured model is built from the output itself, so it doesn't depend on the agent.
Book of Spells
the crystl guild

Crystl's Book of Spells

Master crystl with a grimoire of powerful prompts. Summon heroes, assemble a party, revive shards, and complete epic quests.

open the book →

More features

Gems & Shards

Gems, shards, and the crystal rail keep every project one click away.

Action Panels

See what every agent is doing at a glance.

Agent Activity Panel

One live view of every agent across all your gems: who's working, who's idle, and where tokens are going.

Schedule Agents

Launch a fresh agent at a set time (once, daily, or weekdays). Pick the gem, agent, model, and prompt; crystl fires it on schedule.

Parallel Sessions

Run multiple Claude instances on the same repo in separate git worktrees.

Hero Shards

Summon a single hero as a shard (its own agent, model, and persona) without a quest party.

History Navigator

Browse, jump through, and search every session: conversation and tool calls.

Token Tracking

Track token burn per shard, estimate turns left, and reclaim context window by disabling heavy plugins and skills.

Workbench

A slide-out task list in every project, backed by a WORKBENCH.md the agent reads and writes with you.

Markdown Editor

Render and edit any .md in a side panel. Toggle it from the workbench, and let agents open docs for you from the CLI.

Prompt Integration

Facet Inserts give you one-click access to saved prompts, commands, and shortcuts.

Agent File Editor

Create, edit, and manage CLAUDE.md, rules, skills, and agent config files with a block editor, file chooser, and project optimizer.

Project Optimizer

Scan your project for gaps in agent configuration (missing files, incomplete docs, oversized code, and setup issues) with one-click fixes.

Skills Library

Browse and import agentic skills that teach agents like Claude Code or Codex new tricks: code review, testing, deployment, and more.

Remote Development

Full crystl integration over SSH: approval panels, file relay, and click-to-open on remote machines.

Open Models

Run open models locally or hosted, orchestrate them with frontier agents, and cut token costs.

Agent Orchestration

One agent spawns, supervises, and merges the work of many: a control room for a team of coding agents.

crystl quest

Assemble a party of specialized agents. Each brings unique skills, coordinates in shared chat, and executes in parallel.

Screenshot Bar

Drag recent screenshots into the terminal. Spotlight-powered, always up to date.

Copy Bar

A one-click copy bar under the terminal. Agents stage text, you click Copy. Editable, up to 10 tabs, free.