Documentation
GRaPE Scribe
Install, configure, and work with Scribe. From your first prompt to a complete command reference.
Overview
GRaPE Scribe (scribe) is a terminal-based AI coding agent built by Skinnertopia Lab for AI (SLAI). It connects to GRaPE Chat's backend and uses SLAI-hosted models to read, write, and execute code in your local environment.
Scribe is lighter than Claude Code or GitHub Copilot Workspace — it's a single statically-linked binary with no runtime dependencies. It's designed specifically to work with GRaPE 2.5 models, with optimized prompting, context management, and tool formatting for the best performance on SLAI infrastructure.
The CLI authenticates against your GRaPE Chat account via OAuth. It draws from your SLAI usage pool, which is separate from the GRaPE Chat web app: a rolling 5-hour limit plus a weekly cap. Scribe can also run fully offline with local GGUF models, or against ChatGPT (Codex) or any OpenAI/Anthropic-compatible endpoint.
Installation
Download Scribe from the SLAI downloads page. The installer detects your operating system and architecture and verifies the published SHA256. No account is needed to download.
Linux / macOS
curl -fsSL https://skinnertopia.com/install.sh | shWindows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://skinnertopia.com/install.ps1 | iex"Linux, macOS, and Windows builds support x86_64 and ARM64, including Apple Silicon. After installation, open a terminal in your project and run scribe.
Quick Start
Run scribe in any project directory.
cd ~/my-project
scribeOn the very first run, Scribe walks you through a short guided setup — pick a persona (GRaPE or CRePE) and color scheme, choose a memory preference, and sign in. It auto-detects whether you want hosted, local, or a custom endpoint. After that it opens the interactive TUI; the header shows your model, mode, and context usage.
Interactive Mode
The default mode. Type a message and press Enter. Scribe will reason, call tools, and stream the response back to you.
Key things to know in interactive mode:
- Type
/to open the command palette;/helplists everything. - Reference a file with
@path/to/fileto attach its contents to your prompt. - Insert a newline with
Alt+Enter(macOS/Linux),Shift+Enter/Ctrl+Enter(Windows), orCtrl+Janywhere. - Press
Escto close menus or pull back a queued message; press it twice to cancel a running turn and three times to undo the model's file changes (the status line shows what's next). - Press
Tabto accept a follow-up suggestion, or to autocomplete a slash command. - Use
↑/↓for input history and scrolling;Ctrl+Vpastes an image from the clipboard. - Press
Ctrl+Cto cancel a running turn; press it again to quit (or type/exit). - When subagents are running,
Shift+TabandCtrl+←/→switch focus between them.
One-Shot Mode
Pass -p for a single prompt, or pipe stdin. No TUI is launched — output goes straight to stdout. Great for scripts and CI.
# Inline prompt
scribe -p "Explain what this function does" @src/utils.py
# Pipe stdin (treated as the prompt)
cat error.log | scribe -p "What's causing this error?"
# Write output to a file
scribe -p "Write a README" -o README.md
# JSON output (model, response, thinking, tools[], duration)
scribe -p "List all exported functions in @src/" -output-format json
# Replace YOUR_MODEL_ID with an ID from the /model picker
# Pick a model / mode, skip confirmations, no streaming
scribe -p "Fix the failing test" -model YOUR_MODEL_ID -mode code -bypass -no-streamFlags use single-dash Go style (-p, -model, …); both -p and--p are accepted.
CLI Flags & Subcommands
| Flag | Default | Description |
|---|---|---|
-p <prompt> | — | Run a one-shot prompt (non-interactive). stdin is used if piped. |
-c | false | Continue the most recent conversation. |
-resume <id> | — | Resume a specific saved conversation by its ID. |
-model <id> | config | Override the model for this session. |
-mode <name> | config | Override the agent mode (code, code-review, research, chat, delegator). |
-bypass | false | Skip all permission confirmations (turbo mode). |
-output-format <fmt> | text | One-shot output: text, json, or markdown. |
-o <file> | — | Write one-shot output to a file instead of stdout. |
-no-stream | false | Disable streaming in one-shot mode. |
-no-subagents | false | Disable the subagent tool so this agent does all work itself. |
-version | — | Print the version and exit. |
Scribe also has a few subcommands (run as scribe <name>):
| Subcommand | Description |
|---|---|
onboarding | Re-run the first-time guided setup. |
doctor | Non-interactive diagnostics (git, config, auth, daemon). Add --fix to repair. |
connector | Set up / manage messaging connectors (discord, telegram, slack, whatsapp, github, kith). |
daemon | Control the connector background daemon: run | status | logs | start | stop | restart. |
mcp | Pointer to /mcp inside the TUI for MCP server setup. |
skills | Pointer to /skills inside the TUI. |
Slash Commands
In interactive mode, prefix any command with /. Press Tab to autocomplete. Type /help to see all commands in the TUI.
Session & Status
| Command | Description |
|---|---|
/new | Start a fresh conversation. |
/clear | Clear the visible transcript. |
/exit | Quit GRaPE Scribe (also /bye). |
/status | Overview: rate limits, session spend, and context window. |
/usage | Check your 5-hour and weekly rate limits. |
/spend | Session cost, token spend, and tool reliability. |
/stats | Session statistics (also /tokens, /context). |
/credits | Show your credit balance. |
/whoami | Show current user info. |
/doctor | Run diagnostics on your setup. |
/config | Open config.toml (/config show to print it); /reload re-reads it. |
/version | Print the GRaPE Scribe version. |
Model & Mode
| Command | Description |
|---|---|
/model | Switch models mid-session (/sort reorders the picker). |
/thinking_mode | Change the thinking/reasoning mode. |
/work_effort | Change the model work-effort level. |
/show_thinking | Toggle whether model thinking is visible. |
/mode | Set agent mode: code, code-review, research, chat. |
/plan | Enter read-only Plan mode: explore and write a plan, no edits. |
/goal | Work continuously in Code mode until a goal is achieved (auto-reviewed). |
/fallback | Configure model fallback: cheapest | fastest | specific <model> | prompt | off. |
/compact | Summarize and compact the conversation to free up context. |
Tools & Permissions
| Command | Description |
|---|---|
/tools | Manage built-in and MCP tools. |
/permissions | Change tool permission mode: lenient, turbo, babysitting. |
/mcp | View or add MCP servers. |
/skills | List, add, or remove skills (/skill <name> invokes one). |
/local | Set up, update, or add offline GGUF models. |
/memory | Manage universal memory: on | off | add | edit | clear. |
/alert | Set completion alerts: both | sound | notify | none. |
/hotkey | Bind a slash command to an F-key. |
Files & Git
| Command | Description |
|---|---|
/init | Co-author a .grape.md project file (add "quick" for a template). |
/repo | Create a git repo here to enable subagents and Delegator mode. |
/diff | Show uncommitted git changes. |
/commit | Stage all changes and commit with an AI-generated message. |
/log | Show recent git log (/tree shows the directory tree). |
/cd <path> | Change the working directory. |
/edit <file> | Open a file in your default text editor. |
/test | Run tests / /build build (from scribe-exec.yaml). |
/export | Export to Markdown/HTML (/copy copies the last reply). |
History & Undo
| Command | Description |
|---|---|
/history | View and resume past conversations. |
/resume | Load a saved session (also /load, /sessions; add all to browse every one). |
/save | Save a checkpoint (also /checkpoint). |
/fork | Branch the conversation into a new independent session. |
/search | Search the transcript (/search all <query> across all conversations). |
/undo | Undo the AI's file changes this session (/redo to redo). |
/retry | Resend the last message. |
/forget <n> | Remove the last N messages from context. |
UI, Themes & Reporting
| Command | Description |
|---|---|
/theme | Change persona & color scheme (/scheme creates a custom one). |
/keybinds | Show all keybindings (also /keys). |
/suggest | Toggle follow-up prompt suggestions (Tab to accept). |
/redraw | Force a full screen repaint if the display gets corrupted. |
/alias | Create, list, or delete prompt aliases. |
/login | Sign in (/login codex for ChatGPT); /logout signs out. |
/bug | Report a bug straight to SLAI (also /report, /feedback). |
/help | List every available command. |
Built-in Tools
Scribe ships with a set of built-in tools the model can invoke automatically. You can toggle individual tools with /tools or via the enabled_tools section of config.toml.
| Tool | Key | Description |
|---|---|---|
| Bash | bash | Run shell commands in a persistent shell (state persists across calls); supports timeouts and background jobs. Governed by the command-policy engine and optional sandbox. |
| Set Env | set_env | Set session environment variables injected into every bash command. |
| Read File | read_file | Read a file from disk. |
| Write File | write_file | Atomically create or overwrite a file, with a live line-count preview. Tracked for undo. |
| Apply Patch | apply_patch | Apply changes — auto-detects both the *** Begin Patch envelope and plain unified diffs. |
| List Directory | list_directory | List directory contents, respecting .grapeignore. |
| Grep Search | grep_search | Fast content search (ripgrep → grep → pure-Go fallback); optional semantic backend. |
| Web Search | web_search | Search the web. Always enabled (hosted for signed-in users, keyless fallback otherwise). |
| View Image | view_image | View/analyze an image (screenshot, diagram) with vision models. |
| Todo | todo | The agent's task list, shown in the TUI and viewable with /todo. |
| Skill | skill | List / show / install / remove agent skills (playbooks). |
| Ask Question | ask_question | Ask you a question mid-task (interactive TUI only; disabled for subagents). |
| Subagent | subagent | Spawn and manage parallel subagents in isolated git worktrees (requires git). |
| MCP tools | mcp_<server>_<tool> | Any tools exposed by connected MCP servers; always require permission. |
config.toml
Configuration lives at ~/.config/grape/config.toml (%APPDATA%\grape\config.toml on Windows). Everything is optional. Edit it with /config, tweak single values with/set <key> <value>, or reload with /reload. The config directory also holdshistory/, skills/, models/, connectors/,auth.json, and your global GRAPE.md memory.
# ~/.config/grape/config.toml
# ── Model & backend ─────────────────────────────────────────────────────────
backend = "grape_chat" # grape_chat | local | codex | custom
model = "" # empty = auto-select first SLAI model
mode = "code" # code | code-review | research | chat | delegator
personality = "grape" # grape | crepe
thinking_mode = "medium" # minimal | low | medium | high | auto | xtra-hi
work_effort = "auto"
show_thinking = false
# ── Sampling ────────────────────────────────────────────────────────────────
temperature = 0.6
top_k = 20
top_p = 0.95
min_p = 0.0
repeat_penalty = 1.0
max_tokens = 64000
# ── Behavior ────────────────────────────────────────────────────────────────
permission_mode = "lenient" # lenient | turbo | babysitting
color_scheme = "grape" # grape | crepe | ocean | sunset | monochrome | forest | neon | rose
auto_save = true
compact_threshold = 0.8 # compact when context reaches 80% full
alert_mode = "both" # both | sound | notify | none
fallback_mode = "" # "" | cheapest | fastest | <model>
# ── Local models (offline GGUF) ──────────────────────────────────────────────
local_context_size = 32768
local_server_port = 39281
local_gpu_layers = -1 # -1 = auto
# ── Tools (all default true; web_search is always forced on) ──────────────────
[enabled_tools]
bash = true
read_file = true
write_file = true
apply_patch = true
list_directory = true
grep_search = true
web_search = true
view_image = true
todo = true
skill = true
subagent = true
ask_question = true
# ── MCP servers (also add from the TUI with /mcp) ─────────────────────────────
# [mcp_servers]
# my-server = "http://localhost:8080"scribe-exec.yaml
Place a scribe-exec.yaml in your project root to tell Scribe how to build and test your project. It powers /build, /test, and auto-verification after edits. (The legacy filename grape-exec.yaml is still read as a fallback.)
# scribe-exec.yaml — place in the repo root; Scribe reads it automatically.
build:
run: npm run build
working_dir: ./frontend
test:
run: pytest tests/ -v
env:
DATABASE_URL: postgresql://localhost/test_db
lint:
run: ruff check . && black .When you say "run the tests" — or when auto-verify is on — Scribe runs the command defined here instead of guessing.
Agent Modes
Switch modes with /mode <name>, -mode, or the mode config key.
| Mode | Best For | Behavior |
|---|---|---|
| code | Writing, editing, and debugging code | Action-oriented. Reads before editing and verifies with builds/tests when practical. Default. |
| code-review | Reviewing changes (alias: review) | Strict, evidence-driven review. Proposed edits are made in an isolated review worktree instead of applied directly. |
| research | Exploring topics or unfamiliar codebases | Leans on web_search and file reads; synthesizes findings with depth. |
| chat | Q&A, discussion, brainstorming | Conversational; uses tools only when needed. |
| delegator | Large, multi-part jobs | Delegation-first "tech lead": fans work to parallel subagents with a code-review gate. Requires a git repo. |
| plan | Planning without touching code | Read-only Plan mode (/plan): explores and writes only plan docs, runs no edits or shell. |
/goal runs Code mode continuously until a goal is met (with an automatic review pass). A secretary mode also exists but is only available through messaging connectors, not the CLI.
Permission Modes
Permission modes control how aggressively Scribe can take autonomous actions. Change with /permissions or pass --bypass on the command line.
| Mode | Description |
|---|---|
| lenient | Asks for confirmation before destructive operations (e.g. rm, git reset --hard, DROP TABLE). Everything else runs freely. Default. |
| babysitting | Asks for confirmation before any potentially risky action. Provides more guidance and oversight. |
| turbo | Skips all confirmations. Everything runs immediately. Use in automated pipelines or when you trust the model fully. |
Subagents & Delegator
For big jobs, Scribe can spin up parallel subagents, each in its own isolated git worktree with its own model and mode, then merge their work back. This needs a git repo — run /repo to create one (Scribe uses a private scratch repo when you're not in a project). Nesting is bounded (max depth 2, up to 4 in parallel). Disable it for a run with -no-subagents.
Delegator mode (/mode delegator) leans into this: it plans, fans work out to subagents, and gates their changes through a code review before merging. While subagents run, useShift+Tab or Ctrl+←/→ to switch focus, Esc to return to the head agent, and /attach to watch one live.
Local Models
Scribe can run fully offline against local GGUF models via llama.cpp. Start with /local setup to download the runtime and a model; /local install <build> <backend> adds more, and/local folder points at your own GGUF files.
The local server defaults to port 39281 with a minimum 32k context; set GPU offload withlocal_gpu_layers and context with local_context_size in config. Switch to local any time with /model or backend = "local".
Skills
Skills are reusable playbooks (a SKILL.md plus optional scripts) the agent can load on demand. Manage them with /skills (list / add / remove) and invoke one explicitly with/skill <name> [request]; the agent can also load them itself via the skill tool.
Install from the built-in registry, a Git URL, or a local path. Project-specific skills live in.grape/skills/ and take precedence over global ones in ~/.config/grape/skills/.
MCP & Connectors
MCP: add Model Context Protocol servers with /mcp (or the mcp_serversconfig). Scribe can import your existing Codex (~/.codex/config.toml) and Claude Code (.mcp.json) servers. Their tools appear as mcp_<server>_<tool> and always require permission.
Connectors: run Scribe from a chat app — Discord, Telegram, Slack, WhatsApp, Kith, and a GitHub PR-review bot — through a background daemon. Set one up with scribe connector setup <platform>(or /connector), then manage the daemon with scribe daemon start|stop|status or/daemon. Each connector has its own working directory and optional OS sandbox.
Themes & Personas
Scribe ships two personas — GRaPE and CRePE — and eight built-in color schemes:grape (default), crepe, ocean, sunset,monochrome, forest, neon, and rose.
Change them with /theme; build your own with /scheme (six colors plus an optional terminal background). Which persona is active also follows how you launched the binary:grape forces GRaPE, crepe forces CRePE, and scribe keeps your saved choice.
Memory
Scribe keeps an always-on universal memory file at ~/.config/grape/GRAPE.md. Manage it with/memory (on | off | add | edit | clear) — it can also remember things on its own and consolidate them over time.
For per-project context, run /init to co-author a .grape.md file in the repo root (an AGENTS.md is used as a fallback). A .grapeignore controls which files the tools may read.
Conversation History
Conversations are saved automatically (when auto_save = true) under~/.config/grape/history/ and grouped by project. Sessions are crash-safe — if Scribe exits unexpectedly, it offers to recover the live session for that directory on next launch.
# Continue the most recent conversation
scribe -c
# Resume a specific conversation by ID
scribe -resume abc123
# Inside the TUI
/history # browse & resume past conversations
/resume # load a saved session (also /load, /sessions)
/search all foo # full-text search across every conversationSave named checkpoints with /checkpoint (or /save), branch a conversation into an independent copy with /fork, and rename the current one with /rename. History is local only — it is not synced to GRaPE Chat.
File Attachments
Prefix a file path with @ anywhere in your message to inline the file contents into the prompt. Both absolute and relative paths work.
# Attach a file
Review @src/auth.py for security issues
# Attach multiple files
Compare @old/api.py and @new/api.py
# Combine with a question
Why is @logs/error.log showing database timeouts?Scribe replaces the @path reference with the file contents before sending to the model; large files are truncated with a notice. You can also paste an image straight from the clipboard with Ctrl+V, or point view_image at an image file.
Multi-line Input
Enter sends your message. To type a literal newline, use Alt+Enter (macOS/Linux),Shift+Enter or Ctrl+Enter (Windows), or Ctrl+J on any platform. The input is a full multi-line editor — arrow keys move by visual row, and Ctrl+U clears the line.
Keybindings
See the full, live list (including any custom hotkeys) with /keybinds. Bind an F-key to a command with /hotkey save <key> </command>.
| Key | Action |
|---|---|
Enter | Send message / select menu item |
Alt+Enter | Newline (Windows: Shift/Ctrl+Enter; universal: Ctrl+J) |
Esc | Close menu / detach; ×2 cancel a running turn; ×3 undo the model's file changes |
Tab | Accept follow-up suggestion, else autocomplete a slash command |
Shift+Tab | Cycle focus: head agent → subagents → head |
Ctrl+← / Ctrl+→ | Switch between subagents |
↑ / ↓ | Menu nav / cursor movement / input history / scroll |
PgUp / PgDn | Half-page scroll; Home / End jump to top / bottom |
Ctrl+C | Cancel a running turn; press again to quit |
Ctrl+S | Toggle select/copy mode (drag-select the transcript) |
Ctrl+L | Clear the screen; Ctrl+U clears the input line |
Ctrl+V | Paste an image from the clipboard |
F1 | Help (F2–F12 are bindable custom hotkeys) |
Authentication
On first launch, Scribe opens your browser to the GRaPE Chat OAuth page (app id scribe-cli) and listens on a local callback port; if the browser flow can't be used it falls back to email/password in the terminal. Tokens are stored in ~/.config/grape/auth.json and refreshed automatically — you won't need to sign in again unless you run /logout.
Sign in any time with /login. Use /login codex to sign in with ChatGPT (Codex), which can be held alongside your GRaPE Chat session. You can also add your own OpenAI/Anthropic-compatible endpoints (keys are kept in your OS keychain).
Scribe talks to the SLAI Internal API (X-SLAI-App-Token) rather than the public developer API, which gives it access to SLAI-exclusive models and features.
Credits & Limits
Scribe draws from your SLAI usage pool, which is separate from the GRaPE Chat web app and shared with other SLAI apps and the developer API. It has two limits, both of which must have credit for a request to run: a rolling 5-hour limit and a weekly cap.
Check them with /usage (remaining, caps, and reset times for both windows) or /status(usage + session spend + context). /credits shows your balance. To keep the TUI uncluttered, credits aren't shown in the header — you'll just get a heads-up when you're running low.
Opting in to prompt logging ("improve the model", in GRaPE Chat settings) grants +30% usage. For a higher limit, email [email protected] with your GRaPE Chat username.

