Caret
v0.2.0 · macOS, Windows, Linux · MIT

A Cursor-class AI code editor with a Rust core.

Tauri 2 + Rust on the backend, React 19 + Monaco in the system WebView. No bundled Chromium, no Node at run time. Bring your own keys; nothing leaves your machine except model calls.

$curl -fsSL https://raw.githubusercontent.com/Fast-Editor/Caret/main/scripts/install.sh | sh

Coming from T3 Code or Cursor? See the feature comparison.

Caret on Product Hunt
~110 MB
Rust core RSS, idle with a workspace open
~330 ms
first paint
8 ms
quick open
33 ms
project search

Why Caret

Cursor proved what an AI-native editor should feel like. Caret keeps that feel and swaps the runtime: one Rust process and the operating system's WebView instead of a bundled browser and Node extension hosts.

AreaElectron editorsCaret
UI runtimeBundled Chromium, 150–300 MB baselineOS WebView (WKWebView, WebView2, WebKitGTK)
BackendNode.js extension hostsOne Rust process (tokio), mimalloc
Searchripgrep subprocessgrep + ignore crates in-process, the ripgrep engine
IndexSeparate indexertantivy, memory-mapped, optional embeddings
Terminalnode-ptyportable-pty with bounded ring buffers
Gitgit CLI or libgit2 via Nodelibgit2 in-process for reads, git CLI for network

Numbers measured on the release build; method and details in Performance.

Everything the agent needs, in one process

Completions, inline edits, an agent with real tools, a code index, MCP, external agents, a debugger and a safety layer, all talking to the same Rust core.

Tab
Multi-line ghost-text completions from any configured model, partial accept, next-edit prediction, context from recent edits, open files and diagnostics.
⌘K everywhere
Inline edit or generate with a streaming diff you accept or reject. Quick questions on a selection. In the terminal, natural language becomes a shell command.
Agent pane
Agent, Ask, Plan and Debug modes with streaming tool calls, approvals, checkpoints, per-file review, queued messages, context summarisation and live cost.
@-mentions
Files, folders, code, codebase search, git diffs and commits, web, docs, terminals, lint errors, past chats, rules, MCP resources, skills and images.
Rules and knowledge
.caret rules, .cursorrules, AGENTS.md and CLAUDE.md, memories, hooks, slash commands, skills, subagents and plans.
Codebase index
Ignore-aware walker, language-aware chunking, BM25 with tantivy plus optional embeddings via Ollama or any OpenAI-compatible endpoint, hybrid retrieval.
MCP
stdio, streamable HTTP and SSE servers from .caret/mcp.json or Cursor's config, with tools, resources, prompts, per-tool enable and logs.
External agents
Run Claude Code, Codex, Cursor, Grok Build, Gemini CLI, OpenCode, Pi or any Agent Client Protocol agent per chat, with its model, effort and permission mode in the composer.
Auto routing
A managed Lynkr sidecar scores each request and picks one of your own models per tier, with session pins and fallback. Every reply shows which model answered.
Command safety
Every agent shell command is parsed and classified before it runs. Destructive commands always ask, blocked ones never run, approved ones run under Seatbelt or bubblewrap.
Run and Debug
A Debug Adapter Protocol client with breakpoints, stepping, variables, watch and a debug console for Node, TypeScript and Python, launch.json compatible.
Semantic terminal
Command blocks, program status, clickable paths, ghost-text suggestions from history and the model, a fix-it chip on failed commands, and cross-session history search.
Editor and LSP
Monaco with split groups, diff editor, breadcrumbs and outline, plus a lean LSP client for TypeScript, Rust, Python, Go, C and C++, Java and more.
Source control
Commit UI with AI messages, branches, history, stashes, worktrees, git gutter and blame, and a Bugbot-style review of the working tree, staged changes, a branch or a commit.
Cursor compatible
Reads .cursor rules, mcp.json, hooks, commands, skills, agents and ignore files, so existing projects work unchanged.

Bring the agent you already pay for

Pick Claude Code, Codex, Cursor, Grok Build, Gemini CLI, OpenCode, Pi or any Agent Client Protocol agent per chat. The agent runs locally with its own login; its streaming text, tool calls, permission prompts, checkpointed diffs and terminals all flow through Caret's review bar and approval cards.

How external agents work

Or route among your own models

Auto mode runs a managed Lynkr sidecar that scores every request and picks one of your configured models per tier, from simple to reasoning, with session pins and fallback. Keys stay in Caret; every reply shows which model answered.

Auto routing

Download

Installers for every platform are built by CI from the release tag. After the first install, updates arrive from inside the app.

macOS 12 or later
One line installs the right build and clears the quarantine flag, so there is no Gatekeeper dialog. Updates then arrive from inside the app.
$curl -fsSL https://raw.githubusercontent.com/Fast-Editor/Caret/main/scripts/install.sh | sh
Homebrew 7 or later: brew tap fast-editor/caret && brew trust fast-editor/caret && brew install --cask caret

Builds are ad-hoc signed until a Developer ID is configured. A .dmg downloaded in a browser is quarantined, so macOS says the app is damaged: run xattr -dr com.apple.quarantine /Applications/Caret.app once, or choose Open Anyway under Privacy & Security.

Release v0.2.0, published Nov 8, 2026. Checksums and signatures are in the release notes.

Questions