OPENBAKER

Installation

◈ OpenBaker CLI is currently in early access. Invited users receive installation instructions via email. Join the waitlist →
# Once you have access:
$ npm install -g @openbaker/cli
# or via Homebrew:
$ brew install openbaker
◈ Requires Node.js 18+. Installation details are sent with your invite.

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 newGuided setup. Choose hosted or self-hosted, then follow the prompts.
baker instance statusCheck 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
◈ Already have a running instance with a token? Use baker connect instead — skips the setup flow entirely.

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

--urlInstance URL. Prompts if not provided.
--tokenAuth token. Prompts if not provided. Get one from your invite or the instance admin panel.
--profileNamed config profile. Allows multiple instances. Defaults to default.

Example

$ baker connect
  Instance URL: https://app.openbaker.org
  Token:        ············
 Connected — Mike / app.openbaker.org
◈ No instance yet? Run baker instance new to set one up first.

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

--workspaceWorkspace to use. Defaults to the active workspace.
--modelOverride model for this session only.
--fileFile path to include as context at session start. Coming in v0.1.1.
--no-historyStart a fresh session without loading prior context.

In-chat commands

/helpList available in-chat commands.
/modelsList available models on the connected instance.
/tasksShow open tasks in the current workspace.
/clearClear session context without ending the chat.
/exitExit 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.
--rawPlain response only — no decoration. Perfect for piping to files.
--no-colorStrip 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 ask sessions are saved and browsable with baker logs. Resume any with baker chat resume <id>.

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

listList 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.
clearRemove 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

listList all notes. Alias: baker n.
get <id>Show a note with full body content.
createCreate 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
◈ Notes created from the CLI are immediately visible in the web app and vice versa.

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

listList all schedules with ID, name, cron, next run time, and last status.
createCreate 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, 6hEvery N minutes or hours.
dailyEvery day at 09:00 (server time).
weekdaysMonday–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, --diffInject git diff as context.
--diff-stagedInject staged diff only.
-v, --var key=valueSet a {{variable}} in the template. Repeatable.
-m, --modelModel to use for this run.
--rawRaw 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
◈ Templates support {{variable}} substitution. Create project templates with baker init.

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

listList 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.
infoShow 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

onEnable anonymous telemetry.
offDisable all telemetry immediately and permanently until re-enabled.
statusShow 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
You can always run baker telemetry off to stop collection with no effect on CLI functionality.

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, --modelSet a default model for all baker ask and baker run calls in this directory.
--forceRe-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/ is meant to be committed. The .gitignore inside it excludes only credentials.

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.
--todayShow only today’s sessions.
--rawOutput raw message content — pipeable.
--last <n>Show last N messages in a session.
-y, --yesSkip 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
◈ Sessions created by baker ask and baker run are all here. Resume any with baker chat resume <id>.
Miss Baker
Miss Baker
She flew 360 miles into space on May 28, 1959. She weighed one pound. She came back fine. OpenBaker is named after her.
Her story →
Anonymous analytics. Manage