baker —
full reference.
Every command, option, and example. All commands require a connected instance — run baker connect first.
Installation
# Once you have access: $ npm install -g @openbaker/cli # or via Homebrew: $ brew install openbaker
baker instance
Set up and manage OpenBaker instances. This is the entry point for all instance work — choosing hosted vs. self-hosted, running Docker setup, creating your admin account, and connecting the CLI. Running baker with no args on a fresh install triggers this automatically.
Subcommands
| baker instance new | Guided setup. Choose hosted or self-hosted, then follow the prompts. |
| baker instance status | Check reachability and version of the currently connected instance. |
Hosted setup
Connects to app.openbaker.org. Requires an invite token from your early access invite email.
$ baker instance new ? What type of instance? Hosted ? Paste your invite token: ············ ✓ Connected to app.openbaker.org
Self-hosted — local Docker
Pulls the image, generates docker-compose.yml, starts the container, creates your admin account. Requires Docker to be installed and running.
$ baker instance new ? What type? Self-hosted ? Where? This machine ? Port: 3000 ✓ Docker found ✓ Image pulled (ghcr.io/mykeyma3/open-baker:latest) ✓ Config written ~/openbaker-instance/docker-compose.yml ✓ Instance started on :3000 ? Your name: Mike ? Email: me@example.com ? Password: ············ ✓ Connected
Self-hosted — remote server
For a Linux VPS. Baker gives you a one-line install script to run on the remote machine, then asks for the token it prints.
$ baker instance new ? What type? Self-hosted ? Where? Remote server ? Instance URL: https://baker.yourserver.com Run this on your server: $ curl -fsSL https://openbaker.org/install.sh | bash ? Admin token (from script output): ············ ✓ Connected to baker.yourserver.com
baker connect
Connect to an existing OpenBaker instance using a URL and token. Use this when the instance is already running — skips the setup flow. Config is written to ~/.baker/config.json.
Syntax
$ baker connect [--url <url>] [--token <token>] [--profile <name>]
Options
| --url | Instance URL. Prompts if not provided. |
| --token | Auth token. Prompts if not provided. Get one from your invite or the instance admin panel. |
| --profile | Named config profile. Allows multiple instances. Defaults to default. |
Example
$ baker connect Instance URL: https://app.openbaker.org Token: ············ ✓ Connected — Mike / app.openbaker.org
baker chat
Open an interactive AI session with your connected instance. Uses the workspace's context and history. Type /help inside the session for in-chat commands.
Syntax
$ baker chat [--workspace <name>] [--model <model-id>] [--file <path>] [--no-history]
Options
| --workspace | Workspace to use. Defaults to the active workspace. |
| --model | Override model for this session only. |
| --file | File path to include as context at session start. Coming in v0.1.1. |
| --no-history | Start a fresh session without loading prior context. |
In-chat commands
| /help | List available in-chat commands. |
| /models | List available models on the connected instance. |
| /tasks | Show open tasks in the current workspace. |
| /clear | Clear session context without ending the chat. |
| /exit | Exit the session. |
Example
$ baker chat --workspace dev --model gpt-4o ✓ Workspace: dev — 12 sessions, 3 open tasks Model: gpt-4o · /help · /models · Ctrl+C to exit baker › what did we work on last session? Baker: Last session focused on the auth module...
baker ask
One-shot AI questions from the terminal. Pipe-friendly — send a question, get an answer, done. The fastest way to use Baker without opening a full session. Pipe in code, diffs, logs, SQL — anything.
Syntax
$ baker ask "<question>" [options] $ cat <file> | baker ask "<question>" $ git diff | baker ask "<question>" --raw
Options
| -m, --model <id> | Model to use. E.g. gpt-4o, claude-sonnet-4-20250514. |
| -w, --workspace <id> | Include workspace context in the question. |
| -s, --system <prompt> | System prompt / role instruction for this call. |
| --raw | Plain response only — no decoration. Perfect for piping to files. |
| --no-color | Strip all ANSI color. Useful in CI logs. |
Examples
# Ask a quick question $ baker ask "how do I fix a segfault in C" # Review code before committing $ git diff | baker ask "review for security issues" # Analyze a log file $ cat error.log | baker ask "what went wrong" # Use a specific model $ baker ask "explain this error" --model claude-sonnet-4-20250514 # Generate a migration and save to file $ baker ask "write a migration for user preferences" --raw > migration.rb # Set a role $ baker ask --system "You are a senior Ruby dev" "refactor this" -w 3 # Optimize a query $ echo "SELECT * FROM users WHERE email LIKE '%@%'" | baker ask "optimize this"
baker tasks
Create, list, update, and complete tasks in a workspace. Tasks persist across sessions. Use them to track work or have AI generate follow-ups during chat.
Syntax
$ baker tasks <subcommand> [options]
Subcommands
| list | List all tasks. Accepts --status open|done|all and --workspace <name>. |
| add "<text>" | Add a task. E.g. baker tasks add "Fix login redirect". |
| done <id> | Mark task complete by numeric ID or fuzzy title match. |
| delete <id> | Delete a task permanently. |
| clear | Remove all completed tasks from the current workspace. |
Example
$ baker tasks list #1 OPEN Fix login redirect bug — dev workspace #2 OPEN Write auth unit tests — dev workspace #3 DONE Update README — dev workspace $ baker tasks done 1 ✓ Task #1 marked complete
baker notes
Create, view, and manage notes from the terminal. Notes are synced to your OpenBaker instance and available in the web app. Great for capturing context, decisions, and references without leaving the terminal.
Syntax
$ baker notes [list] $ baker notes get <id> $ baker notes create --title "<title>" [--body "<body>"] [--project <id>] $ baker notes delete <id>
Subcommands
| list | List all notes. Alias: baker n. |
| get <id> | Show a note with full body content. |
| create | Create a new note. Accepts --title, --body, --project. |
| delete <id> | Delete a note permanently. |
Example
$ baker notes #1 Backup Runbook Infrastructure 2d ago #2 API Key Security Model Aestimor 5d ago #3 Deployment Checklist OpenBaker 1h ago $ baker notes get 3 ◈ Deployment Checklist Pre-deploy: tests pass, assets precompile, ENV vars set... $ baker notes create --title "Auth bug context" --body "JWT expires in 1h, refresh token in DB" ✓ Note #4 created
baker schedule
Create and manage recurring AI automations. Baker runs them server-side on the cron interval you specify. Your terminal doesn't need to be open.
Syntax
$ baker schedule <subcommand> [options]
Subcommands
| list | List all schedules with ID, name, cron, next run time, and last status. |
| create | Create a new schedule. Accepts --prompt, --every, --workspace. |
| delete <id> | Delete a schedule by ID. |
| pause <id> | Pause without deleting. |
| resume <id> | Resume a paused schedule. |
| history <id> | Show last 10 run outputs for a schedule. |
--every values
| 30m, 1h, 6h | Every N minutes or hours. |
| daily | Every day at 09:00 (server time). |
| weekdays | Monday–Friday at 09:00. |
| "0 9 * * 1-5" | Any valid cron expression (quoted). |
Example
$ baker schedule create \ --prompt "Summarize open tasks and blockers" \ --every weekdays \ --workspace dev ✓ Schedule created: standup-summary (ID: sched_a1b2) Runs: Mon–Fri 09:00 · Next: Mon 09:00 $ baker schedule list ID NAME SCHEDULE NEXT sched_a1b2 standup-summary 0 9 * * 1-5 Mon 09:00
baker run
Execute a named prompt template with optional context injection. Templates live in .baker/prompts/ (project) or ~/.baker/prompts/ (global). The killer workflow for repeated AI tasks.
Syntax
$ baker run <template> [--file <path>] [--diff] [--var key=value] [--raw] $ baker run list $ baker run save <name> "<prompt>" $ baker run delete <name>
Options
| -f, --file <path> | Inject a file as context. Repeatable. |
| -d, --diff | Inject git diff as context. |
| --diff-staged | Inject staged diff only. |
| -v, --var key=value | Set a {{variable}} in the template. Repeatable. |
| -m, --model | Model to use for this run. |
| --raw | Raw response only — perfect for piping to files. |
Examples
# Review code changes before committing $ baker run code-review --diff # Generate a commit message $ baker run commit-msg --diff --raw # Explain a complex file $ baker run explain --file src/auth.rb # Save a custom template $ baker run save standup "What are the key changes and blockers from this diff?" $ baker run standup --diff # Pipe raw output to a file $ baker run changelog --diff-staged --raw > CHANGES.md
baker workspace
Manage workspaces. Workspaces isolate chat history, tasks, schedules, and model config. You can have as many as you need.
Syntax
$ baker workspace <subcommand> [options]
Subcommands
| list | List all workspaces with session count and last activity. |
| create <name> | Create a new workspace. |
| use <name> | Set the active workspace for subsequent commands. |
| delete <name> | Delete a workspace and all its data. Irreversible. |
| info | Show config for the current active workspace. |
Example
$ baker workspace list ◈ default 12 sessions last active: 2h ago dev 8 sessions last active: 1d ago research 3 sessions last active: 5d ago $ baker workspace use dev ✓ Active workspace: dev
baker telemetry
View or change anonymous telemetry settings. Off by default. You are asked on first run. Change at any time. See the Privacy page for exactly what is and isn't collected.
Syntax
$ baker telemetry [on|off|status]
Subcommands
| on | Enable anonymous telemetry. |
| off | Disable all telemetry immediately and permanently until re-enabled. |
| status | Show current state and exactly what is collected. |
Example
$ baker telemetry status Status: OFF Collected: nothing $ baker telemetry on ✓ Telemetry enabled Collected: command names, error codes, response time, baker version, platform Never: prompts, API keys, file content, IP address
baker init
Initialize a project-level OpenBaker config in the current directory. Creates a .baker/ folder with project config, starter prompt templates, and a .gitignore. Run once per repo.
Syntax
$ baker init [--workspace <id>] [--model <model-id>] [--force]
Options
| -w, --workspace <id> | Set a default workspace ID for this project. |
| -m, --model | Set a default model for all baker ask and baker run calls in this directory. |
| --force | Re-initialize even if .baker/ already exists. |
What it creates
# .baker/ # config.json ← instance URL, workspace, model # prompts/ ← project prompt templates # code-review.md # commit-msg.md # explain.md # .gitignore ← excludes credentials
Example
$ cd my-project $ baker init --workspace 3 --model claude-sonnet-4-20250514 ✓ Initialized .baker/ in /home/user/my-project .baker/config.json ← project config .baker/prompts/ ← prompt templates .baker/prompts/code-review.md .baker/prompts/commit-msg.md .baker/prompts/explain.md $ baker run commit-msg --diff --raw
baker logs
Browse and search your chat session history. Find previous answers, audit what prompts were sent, resume sessions, or pipe session content into other tools.
Syntax
$ baker logs [list] [--limit <n>] [--workspace <id>] [--today] $ baker logs show <session-id> [--raw] [--last <n>] $ baker logs search <query> $ baker logs clear <session-id> [--yes]
Options
| --limit <n> | Number of sessions to show. Default: 20. |
| --workspace <id> | Filter by workspace. |
| --today | Show only today’s sessions. |
| --raw | Output raw message content — pipeable. |
| --last <n> | Show last N messages in a session. |
| -y, --yes | Skip confirmation on clear. |
Examples
# List recent sessions $ baker logs # Show full history for a session $ baker logs show 42 # Search by title $ baker logs search "auth bug" # Pipe last assistant message to a file $ baker logs show 42 --raw --last 1 > answer.md # Clean up a session $ baker logs clear 42 --yes
