hob CLI
Look up the commands people and agents use to arrange work, read results, coordinate, and automate in hob.
The hob CLI connects the work people and agents share: projects, panes,
conversations, commands, and the results they produce. Agents receive its guidance
through managed instructions; use this reference to understand their actions,
script supported operations, and look up what a command will change.
Namespace index
| Namespace | Purpose | Reference |
|---|---|---|
hob app | Installation, updates, repair, and license | Run and license hob |
hob list | Current working layout and caller | Orient and arrange |
hob pane | Open, configure, and read panes | Arrange, read |
hob message | Deliver input to a pane or manage an existing delivery | Deliver and collaborate |
hob open, hob close | Panels, views, and files | Orient and arrange |
hob workspace, hob environment, hob worktree | Workspaces, snapshots, and checkouts | Orient and arrange |
hob search, hob conversation | Find and read saved conversations | Read and recover |
hob attention, hob walkthrough, hob annotate | Point, guide, and leave markers | Deliver and collaborate |
hob feedback | Prepare feedback for human review | Boundaries |
hob git, hob issue, hob pr | Review and record work with provenance | Record and review |
hob automation | Define, validate, run, and inspect workflows | Automate |
hob webhook | Hosted webhook endpoints that start automations | Webhooks |
hob skill | Create, check, list, show, render, and import skills; request reviews | Skills |
hob trust list | Read organizations, trusted publishers, tracked skills, and approvals | Skills |
hob settings | Discover, read, and change ordinary app preferences | Change app preferences |
hob agent verify | Verify the caller's live agent capability | Choose the command context |
Choose the command context
A project directory identifies the work. A live hob connection and, for agent-only operations, a pane capability determine what the caller can do.
| Where the command runs | Available operations |
|---|---|
| Ordinary shell | App/license commands, hob connection management, and native/headless launch. Issue and PR commands can use their git-platform integration; local hob issues need the live project connection. Non-commit hob git subcommands pass through to Git. hob settings list --defaults discovers settings offline. |
| Shell with hob's live project connection, such as a hob terminal | Project operations including local issues, hob environment list, and automation list/init/show/apply/validate/inspect/run/runs/logs. This does not grant agent-only pane controls. |
| hob-launched agent or inheriting subprocess | Agent-only layout, pane, conversation, attention, walkthrough, annotation, feedback, commit-provenance operations, and current settings reads/writes, subject to the live pane capability and target requirements. |
User Commands
Start with hob app --help, hob issue --help, or hob pr --help in an ordinary
shell. Use --project-dir /path/to/project for project-aware commands. That flag
selects a project; it does not create a connection or grant agent authority.
Agent commands
hob agent verify --json succeeds only with current agent authority. A hob
terminal or automation shell step fails this check; an automation agent step
receives its own capability. HOB_PANE_ID identifies a pane, but its presence
alone is not proof of authorization.
Top-level help hides the agent-context namespaces when no pane context is present. Managed guidance normally arrives at agent launch through Settings → Agents → Agent instructions → hob instructions for agents, without editing repository files. See Working with your agent.
Run and license hob
Launch hob
| Command | Behavior |
|---|---|
hob /path/to/project | Submit a native project-open request to the elected Host. |
hob --detach /path/to/project | Open the native presentation without keeping the launching shell attached. |
hob --headless | Enable headless service mode and stay attached. In a terminal it asks for a license key when none is active, then runs guided pairing for the desktop app. Ctrl-C requests Host shutdown. |
hob --headless --pair | Run guided pairing again, also against a Host that runs in the background. |
hob --headless --detach | Enable the daemon service, print the ready lines, and return to the shell. |
hob --headless --port <port> | Save the port that desktop connections and the Web IDE use, then start. The Host must be stopped to change it. |
hob --config-dir <dir> ... | Use another config directory, and so another Host, for this launch or command. See Run more than one Host on a computer. |
hob service install, hob service status, hob service uninstall | Run the headless Host as an operating-system service that starts it again after a restart. install --replace-running moves a Host that already runs to the service. See Run hob as a service. |
hob app path status, hob app path add | Check whether a new login shell finds hob, or add hob's folder to PATH in the shell's startup file (bash, zsh, or fish). |
hob connection desktop [off|localhost|lan] | Show or set which computers' desktop app can connect to this Host. hob connection access is its older name. |
hob connection web-ide [off|localhost|lan] | Show or set which browsers can open this Host's Web IDE. It shares one listener port with desktop connections. |
hob app version | Print the installed version. |
hob app update, hob app repair | Update or repair the installation; check subcommand help for options. |
hob app uninstall | Remove the installation through the uninstall flow. |
Headless mode does not accept a project path. Choose the project from the connected desktop app or the Web IDE. Headless mode covers shutdown, the service, SSH, and the lifetime of the elected Host.
License activation
Use hob app license activate, hob app license status, or
hob app license deactivate on the machine running hob. For non-interactive
activation, supply the key on standard input:
printf '%s\n' "$HOB_LICENSE_KEY" | hob app license activate --key-stdinOrient and arrange
| Command | Use it to… |
|---|---|
hob list | Read panels, pane types, caller identity, the panes in your workspace and the Dock with their spatial relationships, and one line per workspace with its pane counts. --all lists the panes in every workspace. |
hob pane list | Read only the pane listing, with the same scope and --all. |
hob pane list --unplaced | Include project-owned panes without a workspace/Dock placement. A caller that is itself unplaced, such as a background automation agent, always gets these panes, marked by automation run. |
hob pane details --json | Inspect the caller pane's metadata and backend conversation identity. |
hob pane rename "Review the counter" | Keep the pane title aligned with its task; --id targets another pane. |
hob pane open <type> | Open agent, terminal, selection, render, web, issue, or pr; choose --workspace, --surface dock, and --focus as needed. A pr pane shows a pull request on the project remote: hob pane open pr --number 373 or --url <pr-url>. |
hob pane set --id <pane-id> … | Change typed settings such as model, effort, account, permission mode, working directory, or render file. It does not expose arbitrary pane state. |
hob pane move <pane-id> --from <source> --to <destination> | Move one placement between a workspace and the Dock, leaving other placements intact. |
hob pane close [pane-id] | Close the caller or a named pane. |
hob workspace list, hob workspace details <target> | Inspect workspace IDs, environments, panes, and layout. |
hob workspace new --name "Counter review" | Create a workspace in the caller's checkout; add --focus to switch to it. |
hob workspace open <target>, hob workspace rename, hob workspace set, hob workspace close | Navigate or configure a workspace; targets accept a number, name, or ID where supported. |
hob workspace stop <target> | Stop every agent, terminal, and web preview process in a workspace, then end strays that escaped those stops. The panes stay open and are ready again when shown; the calling agent is skipped. |
hob worktree list [--json] | List open and closed worktrees with their IDs, managed status, branch, and path. Deleted worktrees drop out. |
hob worktree delete <environment-id-or-branch> --yes [--force] | Permanently delete a managed checkout, keeping its branch and conversation history. Requires explicit permission to delete; --force also acknowledges uncommitted file loss. See Worktree cleanup. |
hob workspace save, hob workspace saved, hob workspace restore | Save, list, and restore named layouts. update-saved and delete-saved manage them. See Saved. |
hob environment list --json | List live checkout environments and their root paths. |
hob open panel <name>, hob close panel <name> | Show or close a tool panel: home, files, issue, history, automations, bookmarks, shares, sourcecontrol, or pulls. |
hob open view automations, hob open view stats, hob open view skills, hob open view issues | Open the singleton full-page view; hob close view <name> closes it. |
An agent pane can choose --backend, --model, --effort, and supported
--fast/--no-fast options. Models must be configured picker values; a started
conversation cannot move to a different backend. See
Parallel agents and
Accounts and profiles.
For workspace creation, --environment <id> selects a live checkout;
--worktree <branch> uses an existing branch, while
--new-branch --start-point <ref> creates a branch and managed worktree.
See Projects and workspaces for parallel writers.
Dock placement for cross-workspace work
Use hob pane open render --file notes/roadmap.md --surface dock --focus or
hob pane move --to dock; specify --from if the pane has multiple placements.
See Dock placement.
Read and recover
| Command | Useful selectors and behavior |
|---|---|
hob pane view <pane-id> | Read an open pane with typed bounds: text --lines 10:30, PDF --pages 1:2, agent --blocks 1:5 (an agent pane gives the same output as hob conversation show), web --nodes 1:50. |
hob pane view <terminal-id> --cmd <command-id> | Read a specific command's output. --wait waits silently; --watch streams retained output/deltas through completion. |
hob search conversations "character counter" | Search saved turns in this project; use --any, --role, --agent-type, --since, --until, or --limit. The caller is excluded unless --include-self is supplied. |
hob conversation list | List saved conversations; filter by agent type or time. |
hob conversation show <pane-or-session-id> | Read any agent conversation, open or closed, including when the backend transcript is gone. By default it prints the newest 20 blocks, then the recorded topics with their block ranges, then the next command (--before <block-id> reads the page before). Use --blocks, --around <block-id> -C 3, --role, or --topics for the full topic index. |
hob pane view <render-pane> --sheet <name> --cells A1:C9 [--json] | Read live spreadsheet cells, including unsaved edits. |
hob attention pane:<pane-id> --location block:<block-id> | Create a recovery link to the matching turn. When played, it can restore a closed pane and focus its workspace. |
Terminal --watch subsumes --wait, conflicts with --json, and marks gaps
caused by bounded retention. Interactive/TUI commands report unavailable live
output and fall back to waiting. See Terminals.
For search grammar, snippets, and the recovery workflow, see History. Preserve the returned IDs for later commands rather than identifying a pane by a guessed title.
Deliver and collaborate
| Command | What the person sees |
|---|---|
hob pane input <pane-id> <text> --append | A visible draft, extended with the text. Without --append, it replaces the draft. Nothing is delivered. |
hob message --pane <pane-id> --text <text> | An attributed agent message or an executed terminal command block. Terminal sends accept --wait or --watch; --raw sends PTY bytes. |
hob message --pane <agent-id> --text <text> --now | Explicit steering during a running turn. The backend determines when it can incorporate the message; see queue and steering. |
hob message now <receipt> | Deliver an existing queued message during the agent's current turn, without sending a duplicate. |
hob message replace <receipt> --text <text> [--now] | Replace a queued message. Use the returned successor receipt for later actions. |
hob message cancel <receipt> | Cancel a queued message. A dispatched message cannot be recalled. |
hob message status <receipt> | Check delivery state. Dispatched means sent, not processed. |
hob pane open agent --task <text> | A new agent with its assignment delivered in one operation. Use --task --stdin for exact multiline text. |
hob open file <path> --line <n> | The file beside the work. Optional --placement right, left, above, or below controls where it opens. |
hob pane open web --file index.html --watch style.css,app.js | A live-reloading HTML preview. Inside the project hob serves it, with saved data (page=served); outside, it opens sandboxed (page=artifact). URL/server recipes use --url, --command, --cwd, and optional --start; see Browser previews. |
hob serve start <folder> [--entry <file>] | A web pane that serves a project folder with saved data and live reload. hob serve list shows served pages; stop, restart, and clear take a pane ID. |
hob attention <target> --message <text> | Immediately reveal one target with a spotlight and optional card; retain a marker. The returned link replays it. |
hob walkthrough search <topic>, hob walkthrough create --items <json> | A library guide or a new ordered tour. hob walkthrough targets discovers valid UI targets. |
hob revision create <old_file> <new_file> [--expected-fingerprint <value>] | Save both versions and install the result at the original path. See saved file revisions; sending markup creates no revision. |
hob revision list <file> / hob revision restore <revision-id> | List or restore retained file versions. Restore keeps the replaced bytes as another revision. |
hob annotate --items <json> | A link applying durable markers to one file/pane content surface. See Mark up and annotate. |
hob feedback --note <text> | A locally stored feedback draft for the person to review and submit. --problem marks a problem; --screenshot <path> attaches an existing image. |
New messages use --pane to select the destination. Actions on an existing agent
message take its receipt: message status, cancel, replace, or now. New
messages and replacements both accept --text <text>, --text-file <path|->,
or --stdin. Replacement returns a successor receipt for later actions.
A web node belongs to one snapshot. Use the node and fingerprint returned by the read together; substitute actual values for these illustrative placeholders:
hob pane view web_123
hob attention pane:web_123 --location node:n7 --fingerprint 'returned-fingerprint'Continue reading that snapshot with --nodes and --fingerprint. Stale or missing
elements degrade honestly. Annotations stay within one content surface;
walkthroughs can mix surface types but use at most one web pane per set.
See Working with your agent for what
these interactions look like.
Record and review
| Command | Result and provenance |
|---|---|
hob git status, hob git diff, hob git log | Standard Git inspection through hob's wrapper. Other non-commit Git arguments pass through too. |
hob git commit -m "Add note character counter" --link-pane <reviewer-id> | Make the commit and link it to the current turn; repeat --link-pane for contributing panes. Standard amend/pathspec forms are supported. |
hob issue create --local --title <title> --body <markdown> | File a local issue immediately and return its project-bound link. --labels a,b gives it labels. Agent-created issues retain origin-turn provenance; --link-pane adds contributors. |
hob issue list, hob issue start <id>, hob issue complete <id> | Find and track local work. hob issue list --label <name> keeps the issues with that label. hob issue start --remote <number> (or --url) marks a connected issue In Progress at its source. |
hob issue edit --local <id>, hob issue edit <number-or-url> | Edit a local or connected issue while preserving omitted fields. Both take --labels, --add-label, and --remove-label; a local issue takes any label name. Both take --in-progress true or --in-progress false, which changes only the status. Connected issues also take --assignees, --add-assignee, and --remove-assignee; @me names the account the source's token signs in as. |
hob issue view --local <id>, hob issue view <number>, hob pr view <number> | Show one item with its exact hob link on the Link line; remote issues can use --source <source>, and a Linear key such as ENG-123 names its team. |
hob issue list --remote, hob issue view <number> | Search remote issues before you file a new one, and read one issue's state, labels, and description. Add --local to view a local issue. |
hob issue create, hob issue comment, hob issue close | Create or update git-platform issues. Destructive deletion requires explicit --local or --remote scope. hob issue close <ref> --moved-to <url> closes an issue that was written up again elsewhere as Moved, not as done; add --local <id> for a local issue. |
hob issue move <ref> --to <source>, hob issue move --local <id> --to <source> | Move an open issue to another source as it is, with its labels and status. --to local moves a remote issue to local issues. The old issue closes as Moved. |
hob pr list, hob pr view <number> | Find remote PRs and read one PR's state, branches, and description. |
hob pr create, hob pr edit, hob pr comment, hob pr close | Work with the current branch's PR or a specified platform PR; use subcommand help for required fields. Each records the current turn; --link-pane adds contributors. |
hob link commit <revision>, hob link issue <number>, hob link pr <number>, hob link annotations <id>, hob link walkthrough <id> | Link the current turn, and any --link-pane panes, to an existing artifact without changing it. hob link issue --local <id> targets a local issue. |
Inside hob, prefix every Git command with hob. Run commits from the repository
you intend to change, including nested repositories. Provenance links help you
return to the conversation that produced something; they do not verify correctness.
See Commits and artifacts and
Issues.
Automate
| Command | Purpose |
|---|---|
hob automation list, hob automation show <id-or-name> | Find registered workflows and their bundle paths. |
hob automation run <id-or-name> --wait | Start a new execution. |
hob automation runs [id-or-name], hob automation logs <run-id> | Read run status and output. |
Use paths returned by init/show; do not invent registry paths. Linked builder
agents may omit the automation ID for supported show/apply/inspect operations.
The Automation reference owns
complete flags, YAML, expressions, environments, and run-history contracts.
hob open view automations opens the human-facing builder and run view.
Change app preferences
Use these commands for clear requests to change running hob preferences.
The /settings prefix is an optional helper. Scope defaults
to global; --scope project targets the calling agent's project where supported.
See Settings for
the request and review workflow.
| Command | Purpose |
|---|---|
hob settings list [filter] [--json] | Discover keys, descriptions, types, scopes, defaults, values, and restrictions |
hob settings list --defaults | Discover the catalog offline, without current values |
hob settings get [key] [--json] | Read a key or all ordinary preferences in the selected scope |
hob settings set <key> <value> | Set one typed value; use JSON for booleans, numbers, arrays, and objects |
hob settings reset <key>... | Remove global overrides or restore project inheritance |
hob settings patch <json> or hob settings patch --stdin | Apply {"updates":{"key":"value"},"unsetKeys":[]} atomically in one scope |
Write directly when the supported key and value are clear. Otherwise use list
for discovery; it already includes current values. Read object values first:
a replacement does not merge with the existing object.
Current reads and writes require a live agent capability. Credentials and
managed state retain dedicated operations. Writes return saved effective values
and their sources for the affected keys, including inheritance after a project
reset. Report that result without a separate read-back call. Saving a preference
does not apply effects that require a restart. Clear follow-up requests do not
need a /settings prefix.
Command boundaries
| Boundary | Contract |
|---|---|
| Draft vs delivery | pane input edits a draft; message delivers a message or executes a command. |
| Queue vs steering | Agent sends queue by default until the turn ends. message --now explicitly steers ongoing work; it is agent-only and cannot be combined with terminal --raw, --wait, or --watch. |
| Links vs navigation | Attention, walkthrough creation, annotation, feedback, and issue creation/linking print exact deep links to include unchanged in the reply. Attention presents immediately and its link replays the pointer. Walkthrough and annotation links wait for a click. Issue creation files the issue immediately; feedback stores a draft. |
| Reading | pane view is read-only and bounded. Typed unavailable content exits 3; it is not an empty successful result. Web nodes need their matching snapshot fingerprint. |
| Delegation | Use pane open agent --task in one call. open followed by input leaves an unsent draft. |
| Agent replies | The recipient sends its final answer to the source pane with message. The sender does not poll or read the recipient merely to retrieve the answer. |
| Human choice | Open an issue or PR pane only when requested. Walkthroughs and annotations are opt-in; use walkthrough play only when the person explicitly asks to start it now. |
| Feedback | feedback stores a draft; it cannot send feedback or make the person's diagnostic-sharing choices. |
| Worktrees | worktree delete needs --yes, a managed worktree, and an agent outside that worktree. --force never overrides live automation runs or remaining open panes. |
| Settings | Agents can act on clear settings requests. /settings is an optional guidance helper. Credentials and managed state are excluded from ordinary settings writes. |
| Automation trust | The CLI can request a shared run but cannot approve it. Report pending human approval; do not retry to bypass it. See Trust. |
| Skill review | skill review, skill install, and skill update <name> only request a review and print its link. They exit 4 when a person must act. The CLI cannot approve skills or import into personal skills. See Skills. |
Compose a small workflow
These examples run from a hob agent. IDs below are illustrative: use the actual
pane IDs from hob list, command ID returned by the terminal send, and the pane
that sent the assignment. Run the example check only with Node installed.
Ask the terminal, read the result, reply
hob message --pane terminal_123 --text "node --check app.js" --wait
hob pane view terminal_123 --cmd 42
# Reply only after reading the actual result; use the source agent's pane ID.
hob message --pane agent_456 --text "The JavaScript syntax check passed. Behavior still needs review."That final message assumes the check passed. If it failed, send the actual failure and relevant output instead. A syntax check does not verify guestbook behavior; Testing supplies the next checks.
Orient, open, point
When the person asks to see how the guestbook stores notes:
hob list
hob open file app.js --line 3 --placement right
hob attention file:app.js --location line:3 --message "This key keeps guestbook notes in this browser's local storage."Line 3 is the storage key in the unmodified example; verify the line if the file has changed. Include the exact attention link printed by the last command in your reply, with a descriptive label, so the person can select it.
Options and agent-readable docs
| Option | Meaning |
|---|---|
--help, -h | Show command/subcommand help without carrying out the operation. |
--json | Structured output for supported commands; terminal --watch is incompatible. |
--debug | Connection/resolution details for supported commands. |
--project-dir <path> | Select the project for project-aware commands. Issue/PR resolution tries this first, then the current Git root and HOB_PROJECT_DIR. |
--stdin | Supply the command's specified payload from standard input. Pair it with the payload flag where required: --task --stdin, --body --stdin, or --message --stdin. |
Pane input, terminal commands, and initial agent tasks preserve literal text. For long multiline payloads, use a single-quoted heredoc and the supported stdin form. Never treat an unset project/window or unavailable content as permission to guess a target; inspect the error and resolve the context first.
Every guide has Copy Markdown and an Open menu for its .mdx URL.
Give an agent the page relevant to the task; the prose and examples are available
without downloading screenshots.