NewThe alpha is out for Apple Silicon

The editor that
keeps up with you.

A native macOS editor drawn on the GPU straight from Metal and CoreText. Persistent terminals, workspaces, Git and Claude Code built in. A native editor, with local history, MCP tools and data grids.

Apple SiliconmacOS 14+Signed & notarizedFree & open source

crc editing a Rust file: syntax colours, indent guides, a Git mark in the gutter and the project sidebar.crc with a terminal panel open under the editor, running zsh in the project folder.The same Rust file in crc's light appearance.crc's home screen with Start actions, recent folders and a short list of keys.

Native editor screenshots above; the feature illustrations below are schematic. See the handbook for current controls.

0.8msviewport p99, alpha.1 benchmark
measurement and scope
14crates in the whole
dependency tree
<30MiBapp bundle size gate
checked on every bundle build
0accounts required by crc
or app telemetry
Claude Code, inside

An agent that edits
where you can see it.

Type claude in any crc terminal and it connects to the window by itself, or press ⌘⇧C for a Claude tab. Edits proposed through the IDE bridge open as diffs you accept or reject.

  • Context without copy-paste. Claude sees the file and selection you are on, and the language server diagnostics.
  • IDE diffs. Accept with ⌘↩, reject with Esc.
  • Direct file writes. Clean tabs reload. Hooks in crc-started Claude tabs keep copies for review in Source Control.
  • Local only. The bridge listens on 127.0.0.1 behind a random token readable by you alone.
How the bridge works →
Completion that learns

It tells you why
it guessed that.

The best guess appears as ghost text at the caret; the alternatives sit in one row of chips under the line. A single line explains the pick: where it is defined, how often it is used, how often you chose it after the same receiver.

Language serverProject index (SQLite)Nearby wordsPaths & importsYour own history

History stays on your Mac. Go > Forget Completion History clears it.

Terminal and Git

Your shell and your repo,
one keystroke away.

Terminal sessions run your login shell in the project folder on an xterm-compatible emulator written for crc. Source Control stages whole files, hunks or selected lines, commits, switches branches, fetches, pulls and pushes.

The terminal panel under the editor, with a zsh prompt in the project folder.
24-bit colourscroll regions, alternate screen, bracketed paste
⌘-click a pathsrc/main.rs:42:7 in any output opens that line
Hunk stagingstage or unstage one change at a time
Blame in the status linewho changed the caret's line, and when
Performance

A tenth of a frame.
In a 100 MiB file.

At 120 Hz a frame lasts 8.333 ms. Measured on 2026-09-24 for alpha.1, buffer edit through GPU completion took 0.803 ms at p99 with the caret halfway through 2.7 million lines. This excludes event delivery and display scanout; results vary by machine.

Editor viewportp99, keystroke to GPU completion
0.803 ms
With toolbar, sidebar, tabs, statusnative chrome in the benchmark
1.009 ms
One frame at 120 Hzthe budget
8.333 ms
$ cargo run --release --offline --example frame_latency -- --chrome
01

One draw call per frame

Every glyph is an instance of one quad. A screen of text is a single drawPrimitives.

02

Only what you can see

Layout works on visible lines. File loading, indexing and background parsing have separate costs.

03

A persistent rope

Our own B-tree. Cloning is O(1), which makes undo snapshots and background parsing cheap.

04

Metal and CoreText

The OS's own text shaping and GPU API, reached directly. No browser engine in between.

Everything else

Everything an editor needs.
Nothing it doesn't.

Open Quickly, and every command

⌘P fuzzy-finds any file. Type > in the same box to run any menu command.

Split panes

Up to four, each with its own tabs. ⌘\

Multiple cursors

⌘D for the next match, Option-click for anywhere.

HTTP requests from .http files

The JetBrains and VS Code REST Client format, with environments. ⌘↩ sends the request under the caret; the response opens in a tab.

Language servers

Definition, hover, references, rename, format and signature help. Found where you installed them.

Files you can trust

Ordinary saves use atomic replacement; mode, links and symlink targets are preserved. UTF-8, UTF-16, Windows-1252 and line endings are kept. Save guarantees and limits.

Markdown, rendered

Styled where you write it, with a rendered preview beside it on ⌘E from the Markdown Preview extension. Images, PDFs and media open in Quick Look.

Folding, word wrap and the rest

Fold a block or the whole file, wrap long lines, go to symbol, find and replace with regex, comment toggle, line move and duplicate, Emacs motions, full Unicode with emoji and CJK, session restore.

Workspaces and persistent sessions

Folder and worktree workspaces, terminals that survive an app restart, repository status and remote SSH sessions. Workspaces and Agents mode.

Git and local history

Walk a file's Git commits and local versions, restore text as one undoable edit, and keep undo across restarts when the file still matches. History and limits.

MCP tools, directly

Connect installed servers, browse tools and run saved calls. A separate read-only MCP server exposes the disk project and index to agents. MCP support.

Data grids and SQL

Edit CSV and TSV. With DuckDB installed, query saved files and preview Parquet, JSONL and SQLite in bounded read-only grids; export results as CSV. Supported formats.

Highlighting via tree-sitter, compiled from vendored C

RustPythonTypeScriptTSXJavaScriptJSXGoCC++HTMLCSSJSONTOMLYAMLShell
Keyboard first

Your hands
never leave the keys.

macOS conventions where they exist, the bindings every editor shares where they don't, and the Emacs motions your fingers already know.

All keyboard shortcuts →
⌘POpen any file
⌘P>Run any menu command
⌘⇧FFind in project
⌘DNext occurrence as a cursor
⌘⇧CClaude Code tab
⌃`Terminal panel
⌘⌥GSource Control
⌘\Split right
F12Go to definition
F2Rename symbol
⌥ZWord wrap
Supply chain

Read, not trusted.

Cargo runs build scripts and proc macros with no allowlist and no minimum release age. So crc keeps its tree small enough to read, and CI fails if that changes.

14crates, every one pinned to an exact version
1build script, read line by line
0proc macros anywhere in the tree
Adding tree-sitterCratesBuild scriptsProc macros
As the crates.io crate29101
As vendored C, crc's own build.rs010

Signed with a Developer ID and notarized. Grammars pinned by checksum. GitHub Actions pinned by commit. Read the dependency review →

An honest alpha

What it doesn't do yet.

Used every day by its author. Passing tests are not a stability guarantee; limits are documented alongside the features.

Every known limit →
  • macOS on Apple Silicon only. No Intel build, no Linux or Windows plans.
  • A fixed set of grammars. No SQL highlighting in the alpha.
  • No minimap.
  • A file lives in one pane at a time.
  • Updates are announced, not installed. Nothing downloads itself.
  • Extensions have limited capabilities. Text commands and restricted previews, without arbitrary file, network or process access. See them →

Try the alpha.

Seventeen megabytes. Opens without a Gatekeeper warning. Drag it to Applications and open a folder.

$ open -a crc .