CLI
The Bakin CLI is the fastest way to run local setup, check health, manage tasks, install plugins, and script repeatable work. Use it when you want a direct command instead of clicking through the dashboard, or when you need Bakin actions inside shell scripts and automation.
Popular
Section titled “Popular”bakin startStart the Bakin server.bakin onboardRun first-time onboarding.bakin doctorRun health checks.bakin tasks listList tasks.bakin tasks create <title>Create a task.bakin plugins install <source>Install a plugin.bakin search <query>Search indexed content.Agent Packages
Section titled “Agent Packages”Agent package commands install and maintain reusable agent definitions, bundled lessons, prompts, and rules that Bakin manages as local agent state.
Installs or adopts an agent package into Bakin/runtime-managed agent state.
bakin agents install <path|github:user/repo[@ref][#subpath]> [--adopt] [--install-as <id>] [--replace]| Part | Type | Required | Notes |
|---|---|---|---|
<source>pathgithub:user/repo[@ref][#subpath] | choice | yes | Choose one of these values. |
[—adopt] | option | no | Adopt an existing runtime agent. |
[—install-as <id>] | option | no | Optional flag. |
[—replace] | option | no | Replace an existing install. |
Removes an installed agent package and optionally deletes the runtime agent.
bakin agents remove <agent-id> [--keep-blocks] [--delete-agent] [--force]| Part | Type | Required | Notes |
|---|---|---|---|
<agent-id> | argument | yes | Agent id to install, update, remove, or inspect. |
[—keep-blocks] | option | no | Leave managed blocks on disk. |
[—delete-agent] | option | no | Delete the runtime agent too. |
[—force] | option | no | Bypass the normal safety guard. |
Updates one or all installed agent packages.
bakin agents update [agent-id] [--refresh-template]| Part | Type | Required | Notes |
|---|---|---|---|
[agent-id] | argument | no | Agent id to install, update, remove, or inspect. |
[—refresh-template] | option | no | Refresh generated package template files. |
Lists or toggles lesson blocks for an agent package.
bakin agents lessons <list|enable|disable> ...| Part | Type | Required | Notes |
|---|---|---|---|
<action>listenabledisable | choice | yes | Lesson action. |
Installs a standalone package.
bakin packages install <path|github:user/repo[@ref][#subpath]> [--install-as <id>] [--replace]| Part | Type | Required | Notes |
|---|---|---|---|
<source>pathgithub:user/repo[@ref][#subpath] | choice | yes | Choose one of these values. |
[—install-as <id>] | option | no | Optional flag. |
[—replace] | option | no | Replace an existing install. |
Lists installed packages.
bakin packages listRemoves an installed package.
bakin packages remove <package-id> [--force] [--keep-blocks]| Part | Type | Required | Notes |
|---|---|---|---|
<package-id> | argument | yes | Package id. |
[—force] | option | no | Bypass the normal safety guard. |
[—keep-blocks] | option | no | Leave managed blocks on disk. |
Updates an installed package.
bakin packages update <package-id> [--refresh-template]| Part | Type | Required | Notes |
|---|---|---|---|
<package-id> | argument | yes | Package id. |
[—refresh-template] | option | no | Refresh generated package template files. |
Agents
Section titled “Agents”Use these commands to inspect registered agents, review their status and assignments, and send direct messages without opening the dashboard.
Lists runtime agents, or package state when `--packages` is set.
bakin agents list [--packages]| Part | Type | Required | Notes |
|---|---|---|---|
[—packages] | option | no | Show package state instead of the runtime roster. |
Fetches detailed status for an agent.
bakin agents status <id>| Part | Type | Required | Notes |
|---|---|---|---|
<id> | argument | yes | Resource identifier. |
Lists tasks currently assigned to an agent.
bakin agents tasks <id>| Part | Type | Required | Notes |
|---|---|---|---|
<id> | argument | yes | Resource identifier. |
Sends a message through the running server to an agent.
bakin agents send <id> <message>| Part | Type | Required | Notes |
|---|---|---|---|
<id> | argument | yes | Resource identifier. |
<message> | argument | yes | Message text. |
Assets
Section titled “Assets”Asset maintenance currently focuses on the trash flow: reviewing soft-deleted assets, restoring them, or purging them permanently.
Lists, restores, or permanently empties soft-deleted assets.
bakin trash [list|restore|empty] ...| Part | Type | Required | Notes |
|---|---|---|---|
[action]listrestoreempty | choice | no | Trash action. |
Diagnostics and Paths
Section titled “Diagnostics and Paths”Diagnostics commands expose the information needed when something is not behaving as expected: logs, resolved paths, health checks, API docs, and generated agent rules.
Runs Bakin diagnostics for local dependencies, server state, agents, plugin assets, runtime behavior, and recoverable issues.
bakin doctorPrints Bakin runtime paths, optionally for one key.
bakin paths [key]| Part | Type | Required | Notes |
|---|---|---|---|
[key] | argument | no | Dot-notation settings key. |
Applies or checks Bakin-managed AGENTS.md context sections.
bakin agent-rules [--apply|--check|--apply-all|--check-all]| Part | Type | Required | Notes |
|---|---|---|---|
[—apply] | option | no | Apply the managed block. |
[—check] | option | no | Dry-run; report what would change. |
[—apply-all] | option | no | Apply managed blocks for all agents. |
[—check-all] | option | no | Check managed blocks for all agents. |
Prints audit log entries, optionally filtered by event type or agent.
bakin logs [filter]| Part | Type | Required | Notes |
|---|---|---|---|
[filter] | argument | no | Optional log filter. |
Fetches current API route documentation from `/api/docs`.
bakin docsFirst-Time Setup
Section titled “First-Time Setup”These commands create the local directories and baseline settings Bakin needs before normal operation. They are most useful on a fresh machine or when repairing a partially configured install.
Creates or verifies the `~/.bakin` directory tree.
bakin mkdirRuns one or all first-run readiness checks.
bakin check <runtime|search|search-models|llm|channels|plugin-assets|agent-assets|recommended-plugins|all>| Part | Type | Required | Notes |
|---|---|---|---|
<target>runtimesearchsearch-modelsllmchannelsplugin-assetsagent-assetsrecommended-pluginsall | choice | yes | Check target. |
Installs Bakin dependencies, plugin/agent assets, or official recommended plugins.
bakin install <search|search-models|mcporter|plugin-assets|agent-assets|recommended-plugins>| Part | Type | Required | Notes |
|---|---|---|---|
<component>searchsearch-modelsmcporterplugin-assetsagent-assetsrecommended-plugins | choice | yes | Install target. |
Runs the full first-run setup flow.
bakin onboard [--check] [--yes] [--json] [--force]| Part | Type | Required | Notes |
|---|---|---|---|
[—check] | option | no | Dry-run; report what would change. |
[—yes] | option | no | Accept all defaults non-interactively. |
[—json] | option | no | Emit machine-readable output. |
[—force] | option | no | Bypass the normal safety guard. |
Lifecycle
Section titled “Lifecycle”Use these commands to run the local server, check whether it is healthy, restart it after configuration changes, and keep the installed CLI current.
Starts the Bakin HTTP server and dashboard. This is the default command when the compiled binary is launched without arguments.
bakin startFinds a running Bakin process and sends SIGTERM.
bakin stopRestarts Bakin using the available service manager or standalone process behavior.
bakin restartPrints local server reachability, dispatch interval, last run, next run, and version information where available.
bakin statusRuns Bakin in watch-mode development from a source checkout. The compiled binary refuses this command outside a repo clone.
bakin devPrints the version embedded in the running CLI/binary.
bakin versionDownloads the latest release binary and verifies checksums before replacing the installed executable.
bakin updateInstalls or removes the LaunchAgent used for auto-start behavior on macOS.
bakin setup service [--uninstall]| Part | Type | Required | Notes |
|---|---|---|---|
[—uninstall] | option | no | Remove the installed service. |
Plugins
Section titled “Plugins”Plugin commands manage Bakin extensions from the command line, including installing official packages, linking local development plugins, and scaffolding new plugin projects.
Lists installed plugins and versions. Pass --check to probe remote/source for available upgrades.
bakin plugins list [--check]| Part | Type | Required | Notes |
|---|---|---|---|
[—check] | option | no | Dry-run; report what would change. |
Installs a plugin from a local path or GitHub source. Append #subpath to install from a monorepo directory, or pin a GitHub install with @ref / --ref. --dev symlinks a local source tree for live development. --yes skips the consent prompt. --force replaces an existing install when used with --dev.
bakin plugins install [--dev] <path|github:user/repo[@ref][#subpath]> [--ref <ref>] [--yes] [--force]| Part | Type | Required | Notes |
|---|---|---|---|
[—dev] | option | no | Install in local development mode. |
<source>pathgithub:user/repo[@ref][#subpath] | choice | yes | Choose one of these values. |
[—ref <ref>] | option | no | Optional flag. |
[—yes] | option | no | Accept all defaults non-interactively. |
[—force] | option | no | Bypass the normal safety guard. |
Writes a portable manifest for installed user plugins from ~/.bakin/plugins/lock.json. Without a file, prints JSON to stdout.
bakin plugins export [file]| Part | Type | Required | Notes |
|---|---|---|---|
[file] | argument | no | Optional value. |
Installs every plugin in an exported manifest. GitHub plugins are pinned to the recorded commit SHA when present; linked dev plugins are restored as dev installs when their local source path exists.
bakin plugins import <file> [--yes] [--force]| Part | Type | Required | Notes |
|---|---|---|---|
<file> | argument | yes | Required value. |
[—yes] | option | no | Accept all defaults non-interactively. |
[—force] | option | no | Bypass the normal safety guard. |
Re-pulls a user plugin from its source and rebuilds. --yes skips the consent prompt.
bakin plugins upgrade <id> [--yes]| Part | Type | Required | Notes |
|---|---|---|---|
<id> | argument | yes | Resource identifier. |
[—yes] | option | no | Accept all defaults non-interactively. |
Removes an installed non-core plugin.
bakin plugins remove <id>| Part | Type | Required | Notes |
|---|---|---|---|
<id> | argument | yes | Resource identifier. |
Lists or restores pre-uninstall snapshots from ~/.bakin/.uninstalled. `--snapshot` accepts a safe timestamp token or tarball filename. Restore refuses to overwrite an existing plugin unless --force is passed.
bakin plugins restore <id> [--snapshot <snapshot>] [--force] [--list]| Part | Type | Required | Notes |
|---|---|---|---|
<id> | argument | yes | Resource identifier. |
[—snapshot <snapshot>] | option | no | Optional flag. |
[—force] | option | no | Bypass the normal safety guard. |
[—list] | option | no | Optional flag. |
Creates a starter plugin source tree.
bakin plugins scaffold <name>| Part | Type | Required | Notes |
|---|---|---|---|
<name> | argument | yes | Name to create. |
Registers a local source tree as a developer-mode plugin via a symlink at ~/.bakin/plugins/<id>/. Used with the hot-reload coordinator. --force overrides id collisions with copied installs or core plugins, but already-linked plugins must be unlinked first.
bakin plugins link <localPath> [--force]| Part | Type | Required | Notes |
|---|---|---|---|
<localPath> | argument | yes | Local filesystem path. |
[—force] | option | no | Bypass the normal safety guard. |
Removes the dev-mode symlink and lockfile entry. Refuses installed (non-linked) plugins — use `bakin plugins remove` for those.
bakin plugins unlink <id>| Part | Type | Required | Notes |
|---|---|---|---|
<id> | argument | yes | Resource identifier. |
Schedule
Section titled “Schedule”Use the schedule command to list and manage recurring jobs that create tasks automatically on a configured cadence.
Lists, creates, pauses, resumes, removes, triggers, or inspects scheduled jobs.
bakin schedule [list|add|pause|resume|remove|run|runs] ...| Part | Type | Required | Notes |
|---|---|---|---|
[action]listaddpauseresumeremoverunruns | choice | no | Schedule action. |
Search
Section titled “Search”Search commands query indexed Bakin content, report index health, and rebuild indexes after adapter or data changes.
Triggers content indexing through the search adapter.
bakin reindex [--table=<name>] [--rebuild]| Part | Type | Required | Notes |
|---|---|---|---|
[—table=<name>] | option | no | Optional flag with a value. |
[—rebuild] | option | no | Drop and rebuild indexes. |
Searches indexed Bakin content.
bakin search <query> [--table=<name>] [--agent=<id>] [--limit=<n>] [--facets=<list>]| Part | Type | Required | Notes |
|---|---|---|---|
<query> | argument | yes | Search query. |
[—table=<name>] | option | no | Optional flag with a value. |
[—agent=<id>] | option | no | Optional flag with a value. |
[—limit=<n>] | option | no | Optional flag with a value. |
[—facets=<list>] | option | no | Optional flag with a value. |
Prints registered search table/index health and counts.
bakin search:statsSettings
Section titled “Settings”Settings commands are the scriptable path for reading, changing, and seeding local configuration values.
Reads all settings or one dot-notation key.
bakin settings get [key]| Part | Type | Required | Notes |
|---|---|---|---|
[key] | argument | no | Dot-notation settings key. |
Updates one setting using dot notation.
bakin settings set <key> <value>| Part | Type | Required | Notes |
|---|---|---|---|
<key> | argument | yes | Dot-notation settings key. |
<value> | argument | yes | Value to write. |
Creates default settings if missing.
bakin settings initTask Management
Section titled “Task Management”Task commands cover the day-to-day board workflow: creating work, changing status, recording notes, expressing dependencies, and sending ready tasks to agents.
Asks the running Bakin server to run the task dispatch cycle immediately.
bakin dispatchLists tasks from the task board, optionally filtered by column.
bakin tasks list [--column=<column>]| Part | Type | Required | Notes |
|---|---|---|---|
[—column=<column>] | option | no | Optional flag with a value. |
Fetches one task by id from the running server.
bakin tasks get <id>| Part | Type | Required | Notes |
|---|---|---|---|
<id> | argument | yes | Resource identifier. |
Creates a task and optionally assigns an agent or workflow.
bakin tasks create <title> [agent] [--workflow=<id>] [--no-workflow=<reason>]| Part | Type | Required | Notes |
|---|---|---|---|
<title> | argument | yes | Human-readable title. |
[agent] | argument | no | Agent id to assign or target. |
[—workflow=<id>] | option | no | Optional flag with a value. |
[—no-workflow=<reason>] | option | no | Optional flag with a value. |
Moves a task to a different board column.
bakin tasks move <id> <column>| Part | Type | Required | Notes |
|---|---|---|---|
<id> | argument | yes | Resource identifier. |
<column> | argument | yes | Task board column. |
Adds a progress log entry to a task.
bakin tasks log <id> <message>| Part | Type | Required | Notes |
|---|---|---|---|
<id> | argument | yes | Resource identifier. |
<message> | argument | yes | Message text. |
Marks a task blocked with a reason.
bakin tasks block <id> <reason>| Part | Type | Required | Notes |
|---|---|---|---|
<id> | argument | yes | Resource identifier. |
<reason> | argument | yes | Human-readable reason. |
Sets a task dependency relationship.
bakin tasks depend <id> <dependsOn>| Part | Type | Required | Notes |
|---|---|---|---|
<id> | argument | yes | Resource identifier. |
<dependsOn> | argument | yes | Task id this task depends on. |
Marks a task complete with a completion summary.
bakin tasks complete <id> <summary>| Part | Type | Required | Notes |
|---|---|---|---|
<id> | argument | yes | Resource identifier. |
<summary> | argument | yes | Completion summary. |
Workflows
Section titled “Workflows”Workflow commands are for guided, multi-step task execution. Use them to discover available flows, start one against a task, advance steps, and submit required inputs.
Lists available workflow definitions.
bakin workflows listStarts a workflow instance for a task.
bakin workflows start <taskId> <workflowId>| Part | Type | Required | Notes |
|---|---|---|---|
<taskId> | argument | yes | Task id. |
<workflowId> | argument | yes | Workflow definition id. |
Fetches current workflow step details for a task.
bakin workflows step <taskId>| Part | Type | Required | Notes |
|---|---|---|---|
<taskId> | argument | yes | Task id. |
Submits JSON output for a workflow step.
bakin workflows submit <taskId> <stepId> <json>| Part | Type | Required | Notes |
|---|---|---|---|
<taskId> | argument | yes | Task id. |
<stepId> | argument | yes | Workflow step id. |
<json> | argument | yes | JSON payload. |