Package Exports
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@trumbodev/cli) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
████████╗██████╗ ██╗ ██╗███╗ ███╗██████╗ ██████╗
╚══██╔══╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔═══██╗
██║ ██████╔╝██║ ██║██╔████╔██║██████╔╝██║ ██║
██║ ██╔══██╗██║ ██║██║╚██╔██║██╔══██╗██║ ██║
██║ ██║ ██║╚██████╔╝██║ ╚═╝ ██║██████╔╝╚██████╔╝
╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═════╝ ╚═════╝ Trumbo CLI
Run Trumbo in your terminal — an interactive chat for paired sessions, or a fully headless mode for CI/CD and scripting. The CLI shares its agent core with the Trumbo SDK, so Plan/Act modes, MCP servers, checkpoints, rules, skills, and provider configuration all behave the same across surfaces.
Docs • Issues • Discussions
Install
Trumbo ships as a self-contained compiled binary — no Node, Bun, or npm runtime is required to run it. Pick whichever method you prefer.
npm / pnpm / bun
npm install -g @trumbodev/cli # npm
pnpm add -g @trumbodev/cli # pnpm
bun add -g @trumbodev/cli # bun
yarn global add @trumbodev/cli # yarnThe @trumbodev/cli package resolves the correct binary for your platform via optionalDependencies, so only your platform's variant is downloaded. Platform binaries are published for macOS, Linux, and Windows on arm64 and x64.
curl (macOS / Linux)
No package manager required — downloads the binary straight from the npm registry:
curl -fsSL https://raw.githubusercontent.com/xedro98/trembo/main/projects/console/script/install.sh | shInstalls to ~/.trumbo/bin/trumbo and prints PATH instructions. Override the destination or version:
curl -fsSL https://raw.githubusercontent.com/xedro98/trembo/main/projects/console/script/install.sh | sh -s -- --install-dir /usr/local/bin --version 3.0.34PowerShell (Windows)
irm https://raw.githubusercontent.com/xedro98/trembo/main/projects/console/script/install.ps1 | iexInstalls to %USERPROFILE%\.trumbo\bin\trumbo.exe and adds it to your user PATH. Open a new terminal afterwards.
Verify
trumbo --versionUpgrading
npm install -g @trumbodev/cli@latestOn Windows, close any running Trumbo sessions before upgrading — npm can't replace a locked trumbo.exe. If you hit EBUSY or EPERM:
Get-Process trumbo -ErrorAction SilentlyContinue | Stop-Process -Force
npm install -g @trumbodev/cli@latest --allow-scripts=@trumbodev/cli--allow-scripts=@trumbodev/cli lets Trumbo's postinstall cache the binary outside node_modules for smoother upgrades. As of v3.2.1, the launcher version-checks its cache, so a stale cached binary can no longer shadow a fresh install.
Quick start
trumbo # interactive TUI
trumbo "Audit this package and propose fixes" # one-shot prompt
cat file.txt | trumbo "Summarize this" # pipe inputSee trumbo --help for the full flag reference.
Use any provider
Trumbo is bring-your-own-key. Bring an API key from Anthropic, OpenAI, Google Gemini, OpenRouter, AWS Bedrock, GCP Vertex, Cerebras, Groq, or any OpenAI-compatible endpoint (including Ollama and LM Studio for local models).
trumbo auth --provider anthropic --apikey sk-... --modelid claude-sonnet-4-6
trumbo auth --provider openai-native --apikey sk-... --modelid gpt-5
trumbo auth --provider openai-compatible --apikey sk-... --baseurl https://api.example.com/v1trumbo auth without a provider opens an interactive setup TUI. Hosted Trumbo account sign-in is disabled in this build; use your own provider keys.
Modes
- Interactive TUI —
trumboortrumbo -i: full terminal UI with Plan/Act toggle, slash commands, file mentions, and live tool approvals. - One-shot —
trumbo "your prompt": runs a single turn and exits. - JSON —
trumbo --json "...": streams NDJSON events for piping into other tools. - Yolo —
trumbo --yolo "...": skips approval prompts and exits when the turn finishes. - Zen —
trumbo --zen "...": dispatches the task to the background hub daemon and exits immediately.
Headless mode for CI/CD
trumbo --yolo "Run tests and fix any failures"
git diff origin/main | trumbo "Review these changes for issues"
trumbo --json "List all TODO comments" | jq -r 'select(.type == "agent_event" and .event.text) | .event.text'Features
- Streaming TUI built on OpenTUI with markdown rendering, syntax-highlighted diffs, scrollable chat, and mouse support
- Plan/Act mode toggle
- Native MCP support for custom tools
- Checkpoints with
/undoto rewind workspace state - Sub-agent spawning and agent teams for parallel work
- Configurable thinking budgets per run
- Cron and event-driven schedules for recurring agent work
- Chat connectors for Telegram, Slack, Google Chat, WhatsApp, and Linear
Usage
trumbo # interactive mode
trumbo "Audit this package and propose fixes" # one-shot
trumbo -i "Let's work on this together." # interactive + starting prompt
trumbo -i -s "You are a pirate" "Tell me about the sea" # custom system prompt
trumbo --auto-approve false "Inspect and modify this repo" # require approval
trumbo --yolo --retries 5 "Refactor this package" # yolo + retry limit
trumbo --retries 5 "Fix failing tests" # override mistake limit
trumbo --team-name my-team "Plan and implement the checklist" # team workflow
trumbo -v "Explain quantum computing" # verbose stats
trumbo -P openrouter -m google/gemini-3-pro -k sk-... "Set up a storybook"
trumbo -m anthropic/claude-opus-4-6 "Explain string theory"
trumbo --json "Summarize this repository" # NDJSON outputMCP servers
trumbo mcp # interactive wizard
trumbo mcp install fs -- npx -y @modelcontextprotocol/server-filesystem /tmp
trumbo mcp install ctx7 --transport http https://mcp.context7.com/mcp
trumbo mcp install events --transport sse https://example.com/ssemcp install opens the wizard pre-filled; it requires a TTY. mcp add is an alias.
Connectors
Bridge a chat surface into RPC-backed Trumbo sessions. Each conversation thread maps to a session with full context.
trumbo connect telegram -k 123456:ABCDEF...
trumbo connect slack --bot-token $SLACK_BOT_TOKEN --signing-secret $SLACK_SIGNING_SECRET --base-url https://your-domain.com
trumbo connect slack --bot-token $SLACK_BOT_TOKEN --app-token $SLACK_APP_TOKEN # socket mode
trumbo connect gchat --base-url https://your-domain.com
trumbo connect whatsapp --base-url https://your-domain.com
trumbo connect linear --api-key $LINEAR_API_KEY --base-url https://your-domain.com
trumbo connect --stop # stop all bridges + their sessions
trumbo connect --stop telegram # stop oneIn-chat slash commands: /help, /start, /new, /clear, /whereami, /tools, /yolo, /cwd <path>, /schedule, /abort, /exit. Run trumbo connect <adapter> --help for the full flag list.
Schedules
trumbo schedule create "Daily code review" \
--cron "0 9 * * MON-FRI" \
--prompt "Review PRs opened yesterday and summarize issues." \
--workspace /path/to/repo \
--provider anthropic \
--model anthropic/claude-sonnet-4-6 \
--timeout 3600 \
--tags automation,review
trumbo schedule list
trumbo schedule get <schedule-id>
trumbo schedule trigger <schedule-id>
trumbo schedule history <schedule-id> --limit 20
trumbo schedule export <schedule-id> > daily-review.yaml
trumbo schedule import ./daily-review.yamlSchedules can route results back to chat surfaces with --delivery-adapter, --delivery-bot, and --delivery-thread.
Options
| Flag | Description |
|---|---|
-s, --system <prompt> |
Override the system prompt |
-P, --provider <id> |
Provider id |
-m, --model <id> |
Model id (default: anthropic/claude-sonnet-4.6) |
-k, --key <api-key> |
API key override for this run |
-p, --plan |
Run in plan mode (default is act mode) |
-i, --tui |
Interactive TUI multi-turn mode |
-t, --timeout <seconds> |
Optional run timeout in seconds |
-c, --cwd <path> |
Working directory for tools |
--config <path> |
Configuration directory (CLI home resolution) |
--hooks-dir <path> |
Additional hooks directory for runtime hook injection |
--acp |
ACP (Agent Client Protocol) mode |
--thinking [none|low|medium|high|xhigh] |
Model thinking level. Defaults to medium when the flag is provided without a level; off when omitted. |
--compaction <agentic|basic|off> |
Context compaction mode (default: basic). |
--retries <count> |
Max consecutive mistakes before halting (default: 3) |
--json |
Output NDJSON instead of styled text |
--data-dir <path> |
Use isolated local state at <path> instead of ~/.trumbo (enables sandbox mode) |
--auto-approve [true|false] |
Set tool auto-approval for all tools |
-y, --yolo |
Skip approvals, enable submit_and_exit, disable spawn/team tools by default |
-z, --zen |
Dispatch to the background hub and exit immediately |
--team-name <name> |
Override the runtime team state name |
-h, --help |
Show help and exit |
-v, --verbose |
Show verbose runtime diagnostics |
-V, --version |
Show version and exit |
--json is non-interactive and requires a prompt argument or piped stdin. --key takes precedence over environment variables.
Top-level commands
trumbo config— open the interactive config viewtrumbo history|h— list session history or manage saved sessionstrumbo version— show CLI versiontrumbo update— check for CLI updatestrumbo auth <provider>— authenticate or seed provider credentialstrumbo connect <adapter>— run a chat connector bridgetrumbo connect --stop [adapter]— stop connector bridges and their sessionstrumbo schedule <command>— create and manage scheduled runstrumbo doctor— inspect local CLI health and stale processestrumbo doctor fix— kill stale local RPC listeners and old CLI processestrumbo doctor log— open the CLI runtime log filetrumbo hook— handle a hook payload from stdintrumbo hub— manage the local hub daemon
Zen mode
--zen (-z) runs a task in the background hub daemon and exits the CLI immediately — for long-running tasks you want to fire off and walk away from.
trumbo --zen "Refactor the authentication module and add unit tests"- The CLI starts (or reuses) the local hub daemon, submits the task, then exits. It does not stream output or stay attached.
- Because there's no human in the loop once the CLI exits, zen sessions run with full tool auto-approval (same as
--yolo);spawn/teamtools are disabled by default. - If the Trumbo menubar app is running, it surfaces a system notification when the task completes. Otherwise use
trumbo historylater to inspect the result. --zenis incompatible with--data-dirand--tui.
Tool approval
Tool calls are auto-approved by default. Require review with --auto-approve false:
trumbo --auto-approve false "Inspect and modify this repository"In TTY mode the CLI prompts:
Approve tool "<tool_name>" with input <preview>? [y/N]y/yes approves; anything else rejects. If stdin/stdout is not a TTY, required-approval calls are denied. Desktop-integrated approval is also supported via TRUMBO_TOOL_APPROVAL_MODE=desktop and TRUMBO_TOOL_APPROVAL_DIR=<path> (file-based IPC).
Environment variables
ANTHROPIC_API_KEY,OPENAI_API_KEY,OPENROUTER_API_KEY,AI_GATEWAY_API_KEY,V0_API_KEY— provider API keysTRUMBO_DATA_DIR— base data directory for sessions/settings/teams/hooksTRUMBO_SANDBOX— set to1to force sandbox modeTRUMBO_SANDBOX_DATA_DIR— override sandbox state directoryTRUMBO_TEAM_DATA_DIR— override team persistence directoryTRUMBO_BUILD_ENV— runtime build mode for SDK-owned subprocess launchesTRUMBO_DEBUG_HOST/TRUMBO_DEBUG_PORT_BASE— development inspector wiringTRUMBO_TOOL_APPROVAL_MODE/TRUMBO_TOOL_APPROVAL_DIR— desktop approval IPCTRUMBO_LOG_ENABLED/TRUMBO_LOG_LEVEL/TRUMBO_LOG_PATH/TRUMBO_LOG_NAME— runtime logging
--key takes precedence over environment variables.
Contributing
See DEVELOPMENT.md for local development setup, monorepo structure, and TUI architecture, and DISTRIBUTION.md for packaging and distribution.