Skip to content

Terminal clients ​

Rookhold ships two terminal commands in the verified Python wheel:

  • rookhold-cli is for a human operator. It can run code, list and inspect jobs, read results/events, cancel work, show server posture, and inspect the MCP catalog.
  • rookhold-mcp is for an agent host. It speaks newline-delimited JSON-RPC over stdio and exposes four narrow tools; it is not an interactive shell.

Both call the same authenticated Rookhold service. Neither command is the execution boundary by itself.

Download the standalone apps ​

The normal consumer path is the platform archive on the v0.8.0 release. Each Windows, Apple-silicon macOS, and Linux x86_64 archive contains both rookhold-cli and rookhold-mcp as self-contained executables. Extract the archive and run them directly; Python and pip are not required.

If the Rookhold service already exists elsewhere, download only the standalone rookhold-cli-* file for the current platform. That one file serves both human and agent hosts: run it normally for the interactive terminal or add mcp-server to start the stdio MCP adapter. Rename the download to rookhold-cli (rookhold-cli.exe on Windows) and place it on PATH, or use its absolute path in the host configuration.

bash
./rookhold-cli --version
./rookhold-cli

On Windows, use rookhold-cli.exe and rookhold-mcp.exe.

Install the Python package for development ​

SDK authors who specifically want importable Python modules can download the exact rookhold-0.8.0-py3-none-any.whl release asset and verify it using the SDK release procedure. Install it into an operator-owned virtual environment:

bash
python -m venv ~/.local/share/rookhold
~/.local/share/rookhold/bin/python -m pip install --no-deps \
  ./rookhold-0.8.0-py3-none-any.whl

On Windows, the commands are under %USERPROFILE%\.local\share\rookhold\Scripts\.

Set connection and policy outside the prompt:

bash
export ROOKHOLD_BASE_URL=https://rookhold.internal.example
export ROOKHOLD_API_KEY=replace-with-the-key-only
export ROOKHOLD_CLI_MINIMUM_ISOLATION=gvisor-application-kernel
export ROOKHOLD_MCP_MINIMUM_ISOLATION=gvisor-application-kernel
export ROOKHOLD_MCP_ALLOWED_LANGUAGES=python,node

The CLI accepts COOP_* fallbacks during migration and fails closed when matching non-empty old and new values disagree.

Interactive use ​

Run rookhold-cli. It authenticates first and shows the tenant, endpoint, actual backend, observed isolation class, live MCP tool count, and an explicit warning when the server is unisolated.

CommandPurpose
/run python "print(6 * 7)"Submit and wait for a short one-line job
/paste pythonPaste multiline code; finish with .end
/jobs 20List recent jobs for this tenant
/show JOB_IDPrint the complete job record
/result JOB_IDWait for and render the terminal result
/events JOB_IDReplay retained events
/cancel JOB_IDCancel queued or running work
/postureShow the provider, isolation, network, languages, and limits
/mcpInitialize the real adapter and list its live tools
/clearClear an interactive terminal
/quitExit

Commands that omit JOB_ID use the most recently selected/submitted job. Errors redact the configured key.

One-shot use ​

The same command works in scripts:

bash
rookhold-cli posture
rookhold-cli mcp
rookhold-cli run python "print(6 * 7)"
rookhold-cli --json jobs --limit 20
rookhold-cli --json result JOB_ID --wait 60

--minimum-isolation overrides the CLI minimum for that process. Production automation should set an exact non-none class and should use --json when another program consumes output.

Agent CLIs ​

Register the same standalone CLI file as a local stdio MCP server with the mcp-server argument:

This lets the host keep its own polished conversational TUI while Rookhold remains the separate policy-controlled executor. The host may prefix tool names with its MCP server name; the underlying Rookhold tools remain rookhold_run_code, rookhold_job_result, rookhold_job_events, and rookhold_cancel_job.

Adding the MCP server does not disable the host's built-in shell, terminal, or code-execution tools. Deny those alternate routes in the host when every job must cross Rookhold.

Terminal design ​

The terminal uses a compact posture summary, progressive output hierarchy, near-black surface, off-white text, and one accessible electric-blue action voice. Green, amber, red, and slate are reserved for explicit execution or security states. The terminal remains a small client over Rookhold's own API and MCP contracts.

Short jobs. Hard limits. Receipts.