Skip to content

CLI Reference

Shape how your AI thinks — soul, persona, rules

brainjar composes soul + persona + rules into prompts.

Single-workspace local mode stores everything in ~/.brainjar (override with —home or $BRAINJAR_HOME). Run brainjar init once to create the workspace, then use the soul, persona, rule, brain, and state commands to build and compose prompts.

Pass —json on any command to get machine-readable output on stdout and a structured error envelope on stderr. Global options

FlagDescription
--home stringbrainjar home directory (default: $BRAINJAR_HOME or ~/.brainjar)
--jsonemit machine-readable JSON on stdout; errors go to stderr as a JSON envelope

The options above are global — they apply to every command below.


Manage API keys for the active workspace


Mint a new API key. Plaintext is shown exactly once — save it now.

Mint a new API key scoped to the active workspace.

By default the plaintext token is printed to stderr only, so capturing stdout (for example in a pipeline or —json consumer) does not silently persist the secret to a log file. Pass —show-key to also include the plaintext in stdout output (JSON mode: in the “key” field; text mode: as the first line).

Terminal window
brainjar api-key create [flags]
FlagDescription
--name stringhuman-readable name for the key (required)
--show-keyalso write the plaintext key to stdout (default: stderr only)

List API keys in the active workspace (metadata only)

Terminal window
brainjar api-key list [flags]

Revoke an API key by its full id or its display prefix

Terminal window
brainjar api-key revoke <id-or-prefix> [flags]

Manage brains — named bundles of soul + persona + rules + model prefs


Delete a brain

Terminal window
brainjar brain delete <slug> [flags]

List brains in the workspace

Terminal window
brainjar brain list [flags]

Save a named brain bundling a soul, persona, rules, optional procedure, and optional skills

Save a named brain. Upsert — saving an existing slug replaces the brain wholesale. All referenced soul, persona, rule, procedure, and skill slugs must already exist.

Pass —soul "" or —persona "" to leave either side unset. —procedure is optional; omit it to bind the brain to no procedure.

Skills attach to a brain via —skill <slug> (repeatable, order preserved) or —skills <a,b,c> (bulk). The two flags are mutually exclusive — pick one.

—platform pins the brain to a specific adapter so it composes against that platform’s catalog regardless of the active context. —model is the alias or literal ID the runtime should use.

Terminal window
brainjar brain save <slug> [flags]
Terminal window
brainjar brain save cto \
--soul mentor --persona cto --procedure review \
--rule security --rule testing --rule git-discipline \
--skill incident-response --skill refund-policy \
--platform claude --model opus
FlagDescription
--model stringpreferred model identifier (alias, tier, or literal ID)
--persona stringpersona slug (required; pass empty string to leave unset)
--platform stringpin brain to a specific platform adapter (claude, codex, cursor)
--procedure stringprocedure slug (optional)
--rule stringsrule slug (repeatable)
--skill stringsskill slug to attach (repeatable; order preserved)
--skills stringscomma-separated skill slugs (mutually exclusive with —skill)
--soul stringsoul slug (required; pass empty string to leave unset)

Show a brain’s bundle contents

Terminal window
brainjar brain show <slug> [flags]

Load a brain wholesale into the workspace state

Load a brain wholesale into the workspace state. soul, persona, procedure, and rules are all set to the brain’s values in one shot, replacing whatever was at the workspace layer before. After this, the effective state matches the brain — sync writes a CLAUDE.md composed of those exact components.

This is a state-mutation, not a brain mutation. The brain on disk is unchanged. Run again with a different slug to switch.

Terminal window
brainjar brain use <slug> [flags]

Emit a shell-completion script for brainjar

Emit a shell-completion script to stdout. Pipe the output into the appropriate location for your shell.

Terminal window
brainjar completion [bash|zsh|fish|powershell]
Terminal window
# bash (system-wide)
brainjar completion bash | sudo tee /etc/bash_completion.d/brainjar > /dev/null
# zsh (first fpath entry; reload with `exec zsh`)
brainjar completion zsh > "${fpath[1]}/_brainjar"
# fish
brainjar completion fish > ~/.config/fish/completions/brainjar.fish
# PowerShell
brainjar completion powershell > brainjar.ps1

Compose a prompt from a brain, persona, or the active state

Compose a prompt and print it to stdout.

brainjar compose <brain> use a saved brain brainjar compose —persona <slug> use a persona and the state’s soul+rules brainjar compose use the effective state (soul+persona+rules)

Warnings (missing slugs, unresolved refs) go to stderr so they don’t pollute a piped prompt. With —json the full ComposeResponse is emitted on stdout including token estimates and resolved references.

Terminal window
brainjar compose [brain] [flags]
Terminal window
# Compose from a saved brain
brainjar compose cto > prompt.txt
# Compose ad-hoc from a persona
brainjar compose --persona architect --task "design the auth layer"
# Structured output for agents
brainjar --json compose cto | jq .token_estimate.total
FlagDescription
--persona stringcompose from a persona (mutually exclusive with positional brain)
--task stringtask description (counted in token estimate)

Manage named profiles that bind a workspace, platform, and optional remote endpoint


Add a new context — local by default, remote when —url is set

Terminal window
brainjar context add NAME [flags]
FlagDescription
--api-key-ref stringsecret reference for the remote API key (e.g. env:PROD_BRAINJAR_KEY)
--ca-cert stringPEM file with extra trusted CAs (added to the system trust store; verification stays on)
--platform stringplatform adapter name (default “claude”)
--url stringremote server URL (omit for a local context)
--workspace stringworkspace UUID (required)

List every context, with the active one marked

Terminal window
brainjar context list [flags]

Delete a context. Refuses if it is the active one.

Terminal window
brainjar context remove NAME [flags]

Rename a context. If OLD was active, the active pointer moves with it.

Terminal window
brainjar context rename OLD NEW [flags]

Show a context’s full details (defaults to the active context)

Terminal window
brainjar context show [NAME] [flags]

Activate a context — subsequent commands route through it

Terminal window
brainjar context use NAME [flags]

Generate markdown reference pages for brainjar and every subcommand

Generate markdown reference pages for every brainjar subcommand into the given directory (default ./docs-cli). One file per command, named after its command path: brainjar.md, brainjar-shell.md, brainjar-hooks-install.md, etc.

Intended consumers are static-site generators and docs pipelines that render markdown natively. For nroff man pages, use brainjar man.

Terminal window
brainjar docs [dir] [flags]

Browse server-shipped operational guides for brainjar’s MCP tools

Browse server-shipped operational guides — short, agent-facing docs about how to drive brainjar’s MCP tools correctly.

Guides ship inside the brainjar binary; they are not user content and are not stored in SQLite. To author your own agent context, see brainjar soul, brainjar persona, brainjar rule, brainjar procedure.


List embedded guides

Terminal window
brainjar guide list [flags]

Print a guide’s body to stdout

Terminal window
brainjar guide show <slug> [flags]

Manage platform hooks that keep the synced config current


Install the brainjar hook into the platform’s settings

Install the brainjar hook into the platform’s settings.

—scope selects which settings layer the hook is written to. The active platform adapter owns the actual path; the meaning of each scope is the same across adapters:

project (default) — shared per-repository settings that every collaborator inherits when they clone the repo. local — per-checkout override that is not shared with collaborators (the adapter writes to its gitignored local settings file). user — user-global settings applied in every project.

—project is ignored when —scope=user.

Terminal window
brainjar hooks install [flags]
FlagDescription
--project stringproject root (default: cwd); ignored when —scope=user
--scope stringwhere the hook lives: project (default, shared with collaborators), local (per-checkout, not shared), user (global across every project) (default “project”)

Remove the brainjar hook from the platform’s settings

Terminal window
brainjar hooks remove [flags]
FlagDescription
--project stringproject root (default: cwd); ignored when —scope=user
--scope stringwhere the hook lives: project (default, shared with collaborators), local (per-checkout, not shared), user (global across every project) (default “project”)

Report whether the brainjar hook is installed and current

Terminal window
brainjar hooks status [flags]
FlagDescription
--project stringproject root (default: cwd); ignored when —scope=user
--scope stringwhere the hook lives: project (default, shared with collaborators), local (per-checkout, not shared), user (global across every project) (default “project”)

Initialize a brainjar home directory

Create ~/.brainjar (or the directory pointed at by —home or $BRAINJAR_HOME), run database migrations, create the default workspace, and write config.yaml.

If —force is set, any existing database and config in the home directory are deleted before initializing.

Terminal window
brainjar init [flags]
FlagDescription
-f, --forcewipe existing db and config before initializing

Generate man pages for brainjar and every subcommand

Generate nroff(1) man pages for every brainjar subcommand into the given directory (default ./man). Files are named after the command path: brainjar.1, brainjar-shell.1, brainjar-hooks-install.1, etc.

Packagers typically install them under $prefix/share/man/man1/.

Terminal window
brainjar man [dir] [flags]

Run brainjar as an MCP server — bare command runs the stdio server; subcommands manage registration

Run the brainjar Model Context Protocol server on stdio. The process reads JSON-RPC frames from stdin and writes replies to stdout — nothing else may write to stdout, or the MCP protocol will be corrupted. Logging is routed to stderr.

Spawn this from an MCP client (Claude Code, Cursor, etc.) as a subprocess. The server uses whichever backend the active context selects: local SQLite when the context has no URL, a remote brainjar server over HTTPS when it does. Tools see the same content the CLI sees.

Use the install/remove/status subcommands to register brainjar with the active platform’s MCP config without hand-editing JSON.

Terminal window
brainjar mcp [flags]

Register brainjar as an MCP server in the platform’s config

Register brainjar as an MCP server in the platform’s config.

—scope selects which layer the registration is written to. The active platform adapter owns the actual file path; the meaning of each scope is consistent across adapters:

project — committed per-repository registration (for Claude, written to <projectRoot>/.mcp.json) shared with collaborators. local — per-checkout registration not shared with collaborators (for Claude, stored under projects.<root>.mcpServers in ~/.claude.json). user — (default) user-global registration applied in every project.

—project is ignored when —scope=user.

The resolved —home is baked into the registered args so the MCP client spawns brainjar against the correct workspace directory.

Terminal window
brainjar mcp install [flags]
FlagDescription
--project stringproject root (default: cwd); ignored when —scope=user
--scope stringwhere the registration lives: project (committed to the repo), local (per-checkout, not shared), user (default, global across every project) (default “user”)

Remove brainjar’s MCP registration from the platform’s config

Terminal window
brainjar mcp remove [flags]
FlagDescription
--project stringproject root (default: cwd); ignored when —scope=user
--scope stringwhere the registration lives: project (committed to the repo), local (per-checkout, not shared), user (default, global across every project) (default “user”)

Report whether brainjar is registered as an MCP server

Terminal window
brainjar mcp status [flags]
FlagDescription
--project stringproject root (default: cwd); ignored when —scope=user
--scope stringwhere the registration lives: project (committed to the repo), local (per-checkout, not shared), user (default, global across every project) (default “user”)

Export and import workspace content as a JSON bundle


Export the workspace bundle as JSON

Export the workspace’s souls, personas, rules, brains, and active state as a single JSON document. Default output is pretty-printed to stdout; pass -o <path> to write to a file, or -o - to keep stdout explicit. Round-trips through pack import.

Terminal window
brainjar pack export [flags]
Terminal window
brainjar pack export -o backup.json
brainjar pack export --compact | gzip > backup.json.gz
FlagDescription
--compactsingle-line JSON instead of indented
-o, --output stringoutput path (use - for stdout) (default ”-“)

Import a workspace bundle from JSON

Apply a bundle produced by pack export to the workspace. Imports are additive — existing souls, personas, rules, and brains are upserted in place; per-entity failures (e.g. dangling refs) become warnings and do not abort. An unknown schema_version is a fatal BAD_REQUEST.

Terminal window
brainjar pack import [flags]
Terminal window
brainjar pack import -i backup.json
cat backup.json | brainjar pack import
FlagDescription
-i, --input stringinput path (use - for stdin) (default ”-“)

Manage personas — the role the composed prompt adopts


Create or replace a persona. Reads content from stdin, —content, or —file

Create or replace a persona. Upsert — creating an existing slug replaces its content and bundled rules wholesale.

Use —rule <slug> (repeatable) to bundle rules that compose in by default when the persona is referenced without an explicit rule list.

Terminal window
brainjar persona create <slug> [flags]
FlagDescription
--content stringinline content
--file stringread content from file path
--rule stringsbundle a rule slug (repeatable)

Delete a persona

Terminal window
brainjar persona delete <slug> [flags]

Clear the active persona in the workspace state override

Terminal window
brainjar persona drop [flags]

List personas in the workspace

Terminal window
brainjar persona list [flags]

Print a persona’s content to stdout

Terminal window
brainjar persona show <slug> [flags]

Set the active persona in the workspace state override

Terminal window
brainjar persona use <slug> [flags]

Inspect registered platform adapters


List every registered platform adapter with its capabilities

List every registered platform adapter along with which capabilities (sync/hooks/mcp/spawn/skills) and scopes (project/local/user) it supports. The adapter bound to the active context is marked active.

Terminal window
brainjar platform list [flags]

List models in a platform’s catalog

List the models a platform adapter knows about. Without an argument, lists the active platform’s catalog. With an argument, lists the named adapter’s catalog.

A platform with an empty catalog (e.g. cursor, whose model selection is UI-bound) prints no rows; the brain’s model field still passes through to the runtime as-is.

Terminal window
brainjar platform models [platform] [flags]

Manage procedures — step-by-step playbooks attached to brains or workspace state


Create or replace a procedure. Reads content from stdin, —content, or —file

Create or replace a procedure. A procedure is a single content blob describing how to carry out work step-by-step — creating an existing slug replaces its content wholesale. To attach a procedure to a brain, pass --procedure <slug> to brainjar brain save.

Content source precedence: —content > —file > stdin.

Terminal window
brainjar procedure create <slug> [flags]
FlagDescription
--content stringinline content
--file stringread content from file path

Delete a procedure

Terminal window
brainjar procedure delete <slug> [flags]

Clear the active procedure in the workspace state override

Terminal window
brainjar procedure drop [flags]

List procedures in the workspace

Terminal window
brainjar procedure list [flags]

Print a procedure’s content to stdout

Terminal window
brainjar procedure show <slug> [flags]

Set the active procedure in the workspace state override

Terminal window
brainjar procedure use <slug> [flags]

Delete the brainjar database and config

Remove brainjar.db and config.yaml from the brainjar home directory. Does not remove other files you may have placed in the home (packs, backups, etc). Run brainjar init afterwards to start fresh.

Requires —yes in non-interactive mode (including —json mode).

Terminal window
brainjar reset [flags]
FlagDescription
-y, --yesskip confirmation prompt (required in scripts/CI)

Manage rules — composable guidance fragments


Add a rule to the workspace state override

Add a rule slug to the active state so it appears in composed prompts. The rule does not have to exist yet — compose will warn if it’s missing. This does NOT edit rule content; use brainjar rule create for that.

Terminal window
brainjar rule add <slug> [flags]

Create or replace a rule. Reads content from stdin, —content, or —file

Create or replace a rule. A rule is a single content entry — creating an existing slug replaces its content wholesale. To reference this rule from the active state, use brainjar rule add.

Content source precedence: —content > —file > stdin.

Terminal window
brainjar rule create <slug> [flags]
FlagDescription
--content stringinline content
--file stringread content from file path

Delete a rule

Terminal window
brainjar rule delete <slug> [flags]

List rules in the workspace

Terminal window
brainjar rule list [flags]

Remove a rule from the workspace state override

Terminal window
brainjar rule remove <slug> [flags]

Print a rule’s content to stdout

Print a rule’s content to stdout. Multi-entry rules are joined with blank lines between entries; the JSON output preserves the full structure.

Terminal window
brainjar rule show <slug> [flags]

Start the brainjar HTTP server

Start an HTTP server exposing the brainjar API. The server uses the same LocalBackend as the CLI — same SQLite database, same apps.

The server listens until interrupted (SIGINT/SIGTERM), then drains in-flight requests within the shutdown timeout.

Terminal window
brainjar serve [flags]
FlagDescription
--host stringbind address (default “127.0.0.1”)
--port intlisten port (0 for ephemeral) (default 8080)
--shutdown-timeout durationgraceful shutdown deadline (default 10s)

Spawn an agent with a composed prompt for this session only

Spawn an agent process (Claude Code, Codex, …) with a prompt composed in memory. Nothing is written to disk. Each invocation is independent — open several terminals with different brains and they will not collide.

The agent inherits the current working directory, stdin/stdout/stderr, and environment. Everything after -- is forwarded verbatim to the agent binary.

Prompt-injection surface: on Claude we pass —append-system-prompt so Anthropic’s built-in tool/safety system prompt is preserved; on Codex we pass —system-prompt. Cursor has no CLI injection surface and is rejected with an explicit error.

For strict isolation on Claude — no CLAUDE.md auto-discovery, no hooks, no LSP, no plugin sync, no keychain — pass —bare. Caveat: —bare disables keychain reads, which breaks Claude Max OAuth auth. Only use —bare when you can authenticate via ANTHROPIC_API_KEY or an apiKeyHelper (see Claude Code docs). For interactive Claude Max sessions, omit —bare; the appended system prompt already dominates agent behavior, and the ambient CLAUDE.md content is harmless memory rather than a competing persona.

Caveat: the composed prompt is passed as an argv element, which means anyone with access to the machine can read it via ps(1) or /proc/<pid>/cmdline until the process exits. Don’t ship secrets inside rules.

Terminal window
brainjar shell [-- AGENT_ARGS...] [flags]
Terminal window
# CTO brain in one terminal, breaker in another
brainjar shell --brain cto
brainjar shell --brain breaker
# Ad-hoc persona with custom rules, plus a task
brainjar shell --persona architect --rules security,testing \
--task "design the auth layer"
# Forward flags to the agent binary
brainjar shell --brain cto -- --model opus --add-dir ../sibling-repo
FlagDescription
--barestrict isolation — skip the platform’s ambient context (CLAUDE.md, hooks, LSP, keychain, plugin sync). Claude only; requires ANTHROPIC_API_KEY or apiKeyHelper since keychain/OAuth are disabled.
--brain stringcompose from a saved brain (mutually exclusive with —persona)
--persona stringcompose ad-hoc from a persona
--platform stringoverride the active context’s platform (claude, codex, …)
--rules stringcomma-separated rule slugs; only valid with —persona
--task stringtask blurb appended to the composed prompt (also counted in tokens)

Manage skills — on-demand capabilities emitted to the platform’s skills directory


Attach a skill to a brain at the given position

Terminal window
brainjar skill attach <brain> <skill> [flags]
FlagDescription
--position intdisplay order under the brain

Create or replace a skill. Reads the body from stdin, —content, or —file

Create or replace a skill. A skill is an on-demand capability — the runtime loads it on a turn that matches its description or triggers. Saving an existing slug replaces it wholesale.

Body source precedence: —content > —file > stdin.

Scope selects the on-disk emit target on brainjar sync: project — <projectRoot>/.claude/skills/<slug>/SKILL.md user — ~/.claude/skills/<slug>/SKILL.md

Terminal window
brainjar skill create <slug> [flags]
FlagDescription
--content stringinline body
--description stringone-sentence description (required)
--file stringread body from file path
--scope stringemit scope: project or user (default “project”)
--trigger stringsmatching hint (repeatable)
--version intauthor-asserted version (bump to invalidate caches) (default 1)

Delete a skill (fails if any brain references it)

Terminal window
brainjar skill delete <slug> [flags]

Detach a skill from a brain

Terminal window
brainjar skill detach <brain> <skill> [flags]

Remove a skill from the workspace state overlay (pruned on next sync)

Mark a skill for removal in the workspace state’s emit set. Does not check that the skill exists — dropping a slug that no longer exists is legitimate cleanup.

Terminal window
brainjar skill drop <slug> [flags]

Write every workspace skill to the platform’s skills directory

Write every workspace skill to the active platform’s skills directory. Project-scoped skills land under <projectRoot>/.claude/skills/<slug>/SKILL.md; user-scoped skills under ~/.claude/skills/<slug>/SKILL.md.

Fails (exit 2) when the active platform doesn’t support skill emit — for that case use brainjar sync, which warns and continues.

—platform overrides the configured platform; —project overrides the default project root (cwd).

Terminal window
brainjar skill emit [flags]
FlagDescription
--platform stringplatform adapter (default: active context)
--project stringproject root (default: cwd)

List skills in the workspace (without bodies)

Terminal window
brainjar skill list [flags]

Print a skill’s body to stdout (and full metadata as JSON)

Terminal window
brainjar skill show <slug> [flags]

Add a skill to the workspace state overlay (emitted on next sync)

Add a skill slug to the workspace state’s emit set. Validates that the skill exists — typoed slugs fail fast rather than silently producing nothing on sync.

Terminal window
brainjar skill use <slug> [flags]

Manage souls — the top-level voice of the composed prompt


Create or replace a soul. Reads content from stdin, —content, or —file

Create or replace a soul. Upsert — creating an existing slug replaces its content wholesale.

Content source precedence: —content > —file > stdin.

Terminal window
brainjar soul create <slug> [flags]
FlagDescription
--content stringinline content
--file stringread content from file path

Delete a soul

Terminal window
brainjar soul delete <slug> [flags]

Clear the active soul in the workspace state override

Terminal window
brainjar soul drop [flags]

List souls in the workspace

Terminal window
brainjar soul list [flags]

Print a soul’s content to stdout

Terminal window
brainjar soul show <slug> [flags]

Set the active soul in the workspace state override

Set the active soul in the workspace state override. The soul does not have to exist yet — compose will warn if it’s missing. This is a state change, not a content edit.

Terminal window
brainjar soul use <slug> [flags]

Show the effective state and layer chain

Show the effective state and layer chain.

Default output is a multi-line human-readable block. Pass —short for a single-line “soul=<slug> persona=<slug> procedure=<slug> rules=<n>” summary suitable for embedding in shell prompts and statuslines. Unset fields become ”-”. —json is orthogonal to —short and always emits the full state object.

Project scope resolution:

—project <slug> explicit, always wins git repo basename of the nearest .git root walking up (otherwise) workspace scope only

If the directory name isn’t a valid brainjar slug (lowercase, hyphen-separated — no dots, underscores, or capitals), the CLI falls back to workspace scope and emits a warning on stderr. Pass —project <slug> to force a specific project scope.

Terminal window
brainjar status [flags]
FlagDescription
--project stringnarrow to a project-scope layer (overrides .brainjar/project.yaml discovery)
--shortemit a single-line summary for statuslines

Compose the effective prompt and write it to the platform’s config file

Resolve the configured platform adapter (see config.platform), compose the effective prompt at the workspace scope, and write it into the platform’s managed section (e.g. .claude/CLAUDE.md for Claude Code). User-authored content outside the managed section is preserved.

By default the project root is the current working directory — pass —project to target another directory. Sync is idempotent: if the managed section already matches, no write happens.

Terminal window
brainjar sync [flags]
Terminal window
brainjar sync
brainjar sync --project /path/to/repo
brainjar --json sync
FlagDescription
--project stringproject root (default: cwd)

Update the brainjar binary to the latest release

Fetch the latest release from get.brainjar.sh, verify its cosign signature against brainjar’s release workflow identity, and atomically swap the running binary.

—check Print current vs latest; do not download or install. —force Re-download and re-install even at the same version (signature is still verified). —json Emit a structured envelope on stdout; respects the global —json flag.

brainjar upgrade is only meaningful for installs done via get.brainjar.sh (scripts/install.sh). Users who installed via Homebrew, apt, or nix should upgrade through their package manager; a warning is printed when a managed install is detected.

Exit codes (per the global brainjar CLI contract; see CONTRIBUTING.md): 0 upgrade succeeded, or already up to date, or —check ran 1 runtime failure (network, signature verification, or filesystem write); stderr carries the specific cause 2 usage error (bad flags, unsupported platform, write-blocked dir)

Terminal window
brainjar upgrade [flags]
FlagDescription
--checkprint current vs latest without downloading or installing
--forcere-download and re-install at the same version

List or show archived versions of soul, persona, rule, procedure, or skill content

Two modes, keyed on argument count:

versions <type> <slug> list all archived versions newest-first versions <type> <slug> <n> print version <n>’s content to stdout

<type> is one of soul, persona, rule, procedure, skill. brain is not versioned.

Terminal window
brainjar versions <type> <slug> [<n>] [flags]

Manage workspaces — isolation boundaries for souls, personas, rules, and brains


Create a new workspace

Terminal window
brainjar workspace create <name> [flags]

Delete a workspace. Refuses if it holds content unless —purge is set

Terminal window
brainjar workspace delete <name> [flags]
FlagDescription
--purgedelete all content in the workspace first
--yesconfirm deletion

List all workspaces

Terminal window
brainjar workspace list [flags]

Rename a workspace

Terminal window
brainjar workspace rename <old> <new> [flags]

Activate a workspace — rewrites config.workspace_id

Terminal window
brainjar workspace switch <name> [flags]