Rakh is a desktop AI coding agent for local codebases. It combines a React/Vite frontend with a Tauri/Rust backend to give you a multi-tab agent workspace with tool approvals, git worktree isolation, an integrated terminal, durable artifacts, and specialized subagents.
- Multiple independent agent tabs, each with isolated state and chat history
- OpenAI, Anthropic, and OpenAI-compatible provider support
- Safe file edits and shell commands through explicit approval gates
- Global MCP server registry in Settings, with per-run MCP tool discovery
- Automatic git worktree setup before agent-driven code changes
- Built-in subagents for planning, review, security, copy, and GitHub tasks
- Durable artifacts for plans, reports, and other structured outputs
- Structured JSONL logging with per-run traces and backend persistence
- Integrated terminal, voice input, theme system, and session restore
- React 19 + Vite
- Tauri 2 + Rust
- Vercel AI SDK
- Jotai
- xterm.js
- Tailwind CSS 4
- Node.js 20+
- npm
- Rust toolchain
- Tauri system prerequisites for your platform
Install dependencies:
npm installRun the web UI only:
npm run devRun the desktop app in development:
npm run tauri:devStructured logs are written by the desktop runtime to:
- release:
~/.rakh/logs/rakh.log - debug:
~/.rakh-dev/logs/rakh.log
Example:
tail -f ~/.rakh/logs/rakh.log | grep '"tool-calls"'Rakh does not call model APIs until you configure a provider.
You can:
- add an OpenAI, Anthropic, or OpenAI-compatible provider in Settings
- import
OPENAI_API_KEYorANTHROPIC_API_KEYfrom your environment if they are already set
Rakh can also discover tools from globally configured MCP servers.
In Settings -> MCP Servers you can:
- add stdio or streamable HTTP MCP server configs as JSON
- test discovery before saving
- enable
Save returned files as artifactsif you want MCP-returned images or files to be stored in the artifact pane instead of being passed back into model context raw
The model picker is built from the static catalog in
src/agent/models.catalog.json plus any cached model list for
OpenAI-compatible providers.
- Launch the app and open Settings if no provider is configured.
- Add or import a provider.
- Create a new session, choose a project folder, and pick a model.
- Start chatting with the agent.
- Approve edits, commands, or worktree creation when prompted.
Useful built-in slash commands:
/plan/review/security/copywrite/github
Install the launcher from Settings -> Updates -> Command-line launcher.
Once installed:
rakhopens or focuses the desktop apprakh <path>opens the app at that directory; if you pass a file, Rakh uses its parent directoryrakh -a <path>opens the app at that directory and also adds it to your saved projects
The launcher lives under ~/.rakh/bin or ~/.rakh-dev/bin. Install also
tries to add that directory to your PATH automatically. If your terminal is
already open, restart it before using rakh.
Common commands:
npm run dev
npm run build
npm run lint
npm run typecheck
npm run test
npm run test:all
npm run tauri:dev
npm run tauri:buildRun Rust tests directly:
cd src-tauri && cargo testdocs/artifacts.md- durable artifact model and validation flowdocs/logging.md- structured log schema, storage, query APIs, and CLI usagedocs/macos-release-signing.md- Apple signing and notarization credentials for macOS releasesdocs/subagents.md- subagent registry, contracts, and execution modeldocs/tauri-updater-release.md- updater signing, GitHub secrets, and rollout checksdocs/windows-release-signing.md- Windows code-signing options and credentials for releasessrc/DESIGN_SYSTEM.md- UI primitives and token rulessrc/THEMING.md- theme/token implementation notes
src/- React UI, agent runtime, tools, and stylessrc-tauri/src/- Rust commands and desktop integrationdocs/- artifact and subagent documentation