Command-first, config-second. If you can do it from inside rick, that's the path documented here — config files only to persist the choice.
"J-j-just read the docs, Morty. It's all in here. Probably."
curl -fsSL \ https://raw.githubusercontent.com/rick-cli/rick/main/scripts/install.sh | bash # installs to ~/.local/bin — then, if needed: export PATH="$HOME/.local/bin:$PATH"
$base = "https://raw.githubusercontent.com/rick-cli/rick/main" irm "$base/scripts/Install-Rick.ps1" | iex # installs rick.exe to %LOCALAPPDATA%\Rick\bin + adds it to user PATH
Grab a binary straight from the latest release: rick-windows-amd64.exe · rick-linux-amd64 / -arm64 · rick-darwin-amd64 (Intel) / -arm64 (Apple Silicon).
git clone https://github.com/rick-cli/rick.git && cd rick go build -o rick ./cmd/rick export ANTHROPIC_API_KEY=sk-ant-... ./rick
ripgrep (rg) — grep/glob shell out to it — and git, which enables snapshot-backed undo/redo.rick [path] # open a session in a directory (default: cwd) rick -p "fix the bug" # send an initial prompt rick -m openai/gpt-5 # pick a model rick -a plan # start in plan mode rick --new # ignore the resumable session rick --yolo # skip all permission prompts (dangerous)
| Key | Action |
|---|---|
| enter | send |
| esc | interrupt a run / clear the input |
| tab | cycle build ⇄ plan (empty input), or complete a slash command |
| @ | fuzzy file picker — inserts the file's contents into the prompt |
| !cmd | run a shell command directly |
| / | slash commands |
| ↑ ↓ | input history |
| pgup pgdn | scroll the transcript |
| ctrl+c | quit |
| Chord | Action |
|---|---|
| ctrl+x h | help |
| ctrl+x m | models |
| ctrl+x t | themes |
| ctrl+x n | new session |
| ctrl+x l | sessions |
| ctrl+x u | undo |
| ctrl+x r | redo |
| ctrl+x d | tool details |
| ctrl+x c | compact |
Every slash command opens an interactive numbered menu — pick by number, arrow keys or mouse. Typed args still work for power users.
| Command | What it does |
|---|---|
| /help | show help |
| /new | start a fresh session |
| /sessions | list / resume saved sessions |
| /models | pick provider + model |
| /themes | switch or install themes |
| /agent | switch agent (build / plan / custom) |
| /compact | summarise the conversation with the small model |
| /undo · /redo | roll the agent's file changes back / forward |
| /details | toggle tool-call detail |
| /thinking | toggle reasoning display |
| /init | generate project instructions |
| /tools | list available tools |
| /mcp | manage MCP servers, live |
| /plugins | manage hook plugins |
| /permissions | permission mode + profile picker |
| /config | show the resolved configuration |
| /update | download + apply the latest release |
| /uninstall | FULL (everything) or PART (binary only) removal |
| /exit | quit |
Drop .rick/commands/<name>.md in your project (or a command block in rick.json). $ARGUMENTS is substituted with whatever follows the command.
Lead with the interactive command — it applies instantly, no restart.
/theme # interactive picker /theme rick-black # switch directly /theme add ./cool.json # install from a file /theme add https://…/x.json # install from a URL /theme list # show everything installed
| Name | Vibe |
|---|---|
| pickle-rick | dark green · the default |
| rick-black | pure black · neon green |
| evil-rick | blood red · dark romance |
| rick-neon | cyberpunk · hot pink |
| synthwave | retro grid · sunset |
Drop JSON files in ~/.config/rick/themes/ or .rick/themes/. A defs block holds reusable colour tokens; each role may be a bare colour or {"dark": …, "light": …}. Persist the active choice via tui.json {"theme": "rick-black"}.
Runtime behaviour: providers, model, permissions, tools, MCP, agents, commands, instructions. Accepts // comments and trailing commas (JSONC).
| # | Layer |
|---|---|
| 1 | built-in defaults |
| 2 | ~/.config/rick/ (%APPDATA%\rick\ on Windows) |
| 3 | $RICK_CONFIG (explicit path) |
| 4 | <project>/rick.json and .rick/rick.json |
| 5 | $RICK_CONFIG_CONTENT (inline JSON — tests / CI) |
A project file overriding permission.edit keeps every default bash pattern — tiers merge, they don't replace.
{ "model": "anthropic/claude-sonnet-4-5-20250929", "small_model": "anthropic/claude-3-5-haiku-20241022", "provider": { "openrouter": { "apiKey": "{env:OPENROUTER_API_KEY}" }, "local": { "baseUrl": "http://localhost:11434/v1" } }, "permission": { "edit": "ask", "bash": { "*": "ask", "go test*": "allow", "git push*": "ask", "sudo*": "deny" } }, "instructions": ["docs/conventions.md"], "mcp": { "docs": { "type": "local", "command": ["npx", "-y", "@modelcontextprotocol/server-filesystem", "."] } } }
{env:VAR} and {file:path} are substituted inside any string value — API keys and long instruction blocks never sit in the file itself.Presentation only: theme, keybinds, diff layout, notifications. Same JSONC rules, same layered precedence as rick.json.
{ "theme": "rick-black", // persist the /theme choice "leader": "ctrl+x", // leader key "diff_layout": "split", // or "inline" "notifications": { "sound": false } }
Set the theme once with /theme <name> and persist it here if you want it everywhere.
Every tool call resolves to allow, ask or deny. Manage it live from /permissions; persist with the permission block in rick.json.
git status && sudo reboot resolves to the strictest level of its parts.allow → ask automatically.| Mode | Behaviour |
|---|---|
| manual | prompt per the rules you set |
| off | never prompt (same as yolo) |
| /yolo | session flag — bypass everything; /yolo off to disable |
git status grants only git status — git push still prompts. Grants also don't cross tool types: a bash approval never covers write or edit.16 built-ins, plus every tool from connected MCP servers (registered as <server>_<tool>).
| Tool | What it does |
|---|---|
| read | read a file (with offsets / limits) |
| write | write a file (refuses un-read targets) |
| edit | exact string replacement, whitespace-tolerant fallbacks |
| bash | run shell commands |
| grep · glob · list | search + enumerate (shell out to ripgrep) |
| apply_patch | atomic multi-file add/update/move/delete |
| todowrite · todoread | task list for the run |
| task | spawn a subagent |
apply_patch applies multi-file patches as one unit — if any hunk fails to match, nothing is written. No half-applied refactors.build (all tools) and plan (edit/write/bash default to ask) ship built in; tab toggles them. Define more in .rick/agents/<name>.md.
--- description: Reviews code for defects mode: subagent model: anthropic/claude-haiku-4-5 temperature: 0.2 tools: write: false edit: false permission: bash: ask --- You are a meticulous code reviewer. Report only real defects.
| Type | Scope |
|---|---|
| general | full tools, no further delegation |
| explore | read-only, fast codebase search |
The agent spawns them with the task tool; you can invoke one directly: @explore where is auth handled. subagent_depth (default 1) caps recursion.
Coordinate multiple rick workers over a chosen topology for parallel or staged work.
| Topology | Shape |
|---|---|
| mesh | everyone talks to everyone — free-for-all coordination |
| star | one orchestrator, workers radiate out |
| ring | each worker hands to the next, circular |
| pipeline | strict stages — output of one feeds the next |
Swarm activity renders in-place in the TUI so you can watch workers spin up, run and settle.
Lead with the live menu — no restart needed.
/mcp # add (name → local/remote → command/URL), toggle, remove — live /plugins # manage hook plugins
Persist servers in the mcp block of rick.json (see §06). Local servers run over stdio, remote over HTTP. Every server tool lands next to the built-ins as <server>_<tool>.
Sessions persist to ~/.local/share/rick/sessions/ (%LOCALAPPDATA%\rick\ on Windows) and resume automatically per directory. /sessions lists them.
A shadow git repository snapshots the work tree before each mutating tool. It lives entirely outside your project and never touches your real history, branches or index. /undo and /redo walk those snapshots.
/compact summarises the conversation with the small model and keeps the last two exchanges verbatim — the run keeps its bearings without ballooning context.
| Command | What it does |
|---|---|
| rick sessions | list saved sessions |
| rick config | show the resolved configuration |
| rick models | list available models |
| rick update | update to the latest GitHub release |
| rick uninstall | choose FULL or PART removal |
| rick version | print version |
Flags for the interactive launcher are in §02.
160+ providers — a curated catalogue plus a generated models.dev snapshot. Anthropic, OpenAI, OpenRouter, local Ollama and many more.
{env:VAR} in rick.json, or interactively with /auth.baseUrl./auth # interactive provider setup (recommended) /models # pick from the live model list
Hand-editing the credential file is the fallback; the interactive flow probes and persists the real model list for you.
cmd/rick/ CLI entrypoint internal/agent/ tool-calling loop, prompts, subagents internal/provider/ Provider interface + anthropic, openai adapters internal/tools/ built-in tools, diff engine internal/permission/ allow/ask/deny engine, glob matching internal/session/ persistence, git-backed snapshots internal/config/ layered config, JSONC, substitution internal/mcp/ MCP client (stdio + http) internal/plugin/ hook dispatcher internal/theme/ theme loader, embedded built-ins internal/tui/ bubbletea model, views, modals