[ docs ] · v0.1.4

Everything that matters.

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."

press / to focus · esc to clear
[01]Installation

one-liners (recommended)

linux · macOS
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"
windows powershell
$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

manual download

Grab a binary straight from the latest release: rick-windows-amd64.exe · rick-linux-amd64 / -arm64 · rick-darwin-amd64 (Intel) / -arm64 (Apple Silicon).

from source

go 1.24+
git clone https://github.com/rick-cli/rick.git && cd rick
go build -o rick ./cmd/rick
export ANTHROPIC_API_KEY=sk-ant-...
./rick
Recommended sidekicks: ripgrep (rg) — grep/glob shell out to it — and git, which enables snapshot-backed undo/redo.
[02]Usage
sh
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)
--yolo bypasses every permission prompt. Great for throwaway sandboxes; a terrible idea anywhere you'd miss your files.
[03]Keybindings
KeyAction
entersend
escinterrupt a run / clear the input
tabcycle build ⇄ plan (empty input), or complete a slash command
@fuzzy file picker — inserts the file's contents into the prompt
!cmdrun a shell command directly
/slash commands
↑ ↓input history
pgup pgdnscroll the transcript
ctrl+cquit

leader key — ctrl+x (configurable)

ChordAction
ctrl+x hhelp
ctrl+x mmodels
ctrl+x tthemes
ctrl+x nnew session
ctrl+x lsessions
ctrl+x uundo
ctrl+x rredo
ctrl+x dtool details
ctrl+x ccompact
[04]Slash commands

Every slash command opens an interactive numbered menu — pick by number, arrow keys or mouse. Typed args still work for power users.

CommandWhat it does
/helpshow help
/newstart a fresh session
/sessionslist / resume saved sessions
/modelspick provider + model
/themesswitch or install themes
/agentswitch agent (build / plan / custom)
/compactsummarise the conversation with the small model
/undo · /redoroll the agent's file changes back / forward
/detailstoggle tool-call detail
/thinkingtoggle reasoning display
/initgenerate project instructions
/toolslist available tools
/mcpmanage MCP servers, live
/pluginsmanage hook plugins
/permissionspermission mode + profile picker
/configshow the resolved configuration
/updatedownload + apply the latest release
/uninstallFULL (everything) or PART (binary only) removal
/exitquit

custom commands

Drop .rick/commands/<name>.md in your project (or a command block in rick.json). $ARGUMENTS is substituted with whatever follows the command.

[05]Themes

Lead with the interactive command — it applies instantly, no restart.

sh
/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

built-in themes (5)

NameVibe
pickle-rickdark green · the default
rick-blackpure black · neon green
evil-rickblood red · dark romance
rick-neoncyberpunk · hot pink
synthwaveretro grid · sunset

your own

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"}.

[06]rick.json

Runtime behaviour: providers, model, permissions, tools, MCP, agents, commands, instructions. Accepts // comments and trailing commas (JSONC).

precedence — later wins, merged key by key

#Layer
1built-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.

example

rick.json
{
  "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", "."]
    }
  }
}
Secrets stay out of config. {env:VAR} and {file:path} are substituted inside any string value — API keys and long instruction blocks never sit in the file itself.
[07]tui.json

Presentation only: theme, keybinds, diff layout, notifications. Same JSONC rules, same layered precedence as rick.json.

tui.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.

[08]Permissions

Every tool call resolves to allow, ask or deny. Manage it live from /permissions; persist with the permission block in rick.json.

how resolution works

  • Bash patterns are globs matched against each sub-command of a compound line — git status && sudo reboot resolves to the strictest level of its parts.
  • The most specific pattern wins; exact matches beat wildcards.
  • File writes outside the project root are upgraded allow → ask automatically.
  • "Allow for this session" grants the pattern for the rest of the run only — nothing is written to disk.

modes

ModeBehaviour
manualprompt per the rules you set
offnever prompt (same as yolo)
/yolosession flag — bypass everything; /yolo off to disable
Scope note: session grants are per pattern. Approving git status grants only git statusgit push still prompts. Grants also don't cross tool types: a bash approval never covers write or edit.
[09]Tools

16 built-ins, plus every tool from connected MCP servers (registered as <server>_<tool>).

ToolWhat it does
readread a file (with offsets / limits)
writewrite a file (refuses un-read targets)
editexact string replacement, whitespace-tolerant fallbacks
bashrun shell commands
grep · glob · listsearch + enumerate (shell out to ripgrep)
apply_patchatomic multi-file add/update/move/delete
todowrite · todoreadtask list for the run
taskspawn a subagent
Atomic patches. apply_patch applies multi-file patches as one unit — if any hunk fails to match, nothing is written. No half-applied refactors.
[10]Agents & subagents

build (all tools) and plan (edit/write/bash default to ask) ship built in; tab toggles them. Define more in .rick/agents/<name>.md.

.rick/agents/review.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.

built-in subagent types

TypeScope
generalfull tools, no further delegation
exploreread-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.

[11]Swarms

Coordinate multiple rick workers over a chosen topology for parallel or staged work.

TopologyShape
mesheveryone talks to everyone — free-for-all coordination
starone orchestrator, workers radiate out
ringeach worker hands to the next, circular
pipelinestrict 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.

[12]MCP & plugins

Lead with the live menu — no restart needed.

sh
/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>.

[13]Sessions, undo & compaction

Sessions persist to ~/.local/share/rick/sessions/ (%LOCALAPPDATA%\rick\ on Windows) and resume automatically per directory. /sessions lists them.

undo is git-backed (but never touches your git)

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.

compaction

/compact summarises the conversation with the small model and keeps the last two exchanges verbatim — the run keeps its bearings without ballooning context.

[14]CLI commands
CommandWhat it does
rick sessionslist saved sessions
rick configshow the resolved configuration
rick modelslist available models
rick updateupdate to the latest GitHub release
rick uninstallchoose FULL or PART removal
rick versionprint version

Flags for the interactive launcher are in §02.

[15]Providers

160+ providers — a curated catalogue plus a generated models.dev snapshot. Anthropic, OpenAI, OpenRouter, local Ollama and many more.

  • Plain API keys via {env:VAR} in rick.json, or interactively with /auth.
  • OAuth device-code flow for ChatGPT and Copilot — no key wrangling.
  • Bring your own OpenAI-compatible endpoint with baseUrl.
sh
/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.

[16]Source layout
text
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
no sections match — try another word