Command Reference
Complete reference for all @broomva/cli commands.
Command Reference
The BroomVA CLI provides six command groups: auth, prompts, skills, context, config, and daemon. All commands are implemented in packages/cli/src/commands/ as Commander.js subcommands.
Global options
These options are available on all commands:
| Flag | Description |
|---|---|
--api-base <url> | Override the API base URL |
--token <token> | Override the auth token |
--no-color | Disable colored output |
-V, --version | Print the CLI version |
-h, --help | Print help information |
broomva auth
Manage authentication with the BroomVA platform. See Authentication for detailed usage.
| Subcommand | Description |
|---|---|
auth login | Authenticate using device-code flow (RFC 8628) |
auth login --manual | Authenticate using manual token copy-paste |
auth logout | Remove stored credentials from ~/.broomva/config.json |
auth status | Show current auth status (validates token against server) |
auth status --json | Output auth status as JSON |
auth token | Print the raw token string (for use in scripts) |
broomva prompts
Manage prompts stored on the platform. Prompts are versioned text templates that can be used in chat conversations, API calls, and agent configurations.
| Subcommand | Description |
|---|---|
prompts list | List all prompts accessible to your account |
prompts list --category <cat> | Filter by category |
prompts list --tag <tag> | Filter by tag |
prompts list --model <model> | Filter by target model |
prompts list --mine | Show only your prompts (requires auth) |
prompts list --json | Output as JSON |
prompts get <slug> | Fetch a specific prompt by slug |
prompts get <slug> --raw | Output only the prompt content (no metadata) |
prompts get <slug> --json | Output as JSON |
prompts create | Create a prompt (see options below) |
prompts update <slug> | Update an existing prompt |
prompts delete <slug> | Delete a prompt |
prompts pull <slug> | Download a prompt to a local markdown file with frontmatter |
prompts push <file> | Upload a local markdown file with frontmatter to the platform |
Creating a prompt
broomva prompts create \
--title "Code Review Assistant" \
--content @prompt.md \
--summary "Reviews code for bugs, style, and performance" \
--category "development" \
--model "claude-sonnet-4-20250514" \
--tags "code-review,development" \
--visibility publicThe --content flag accepts either a literal string or @file to read from a file.
Pull/push workflow
The pull and push commands enable a local-first workflow for prompt management:
# Download a prompt to a local file
broomva prompts pull system-default
# Pulled "System Default" → system-default.md
# Edit the local file...
# The file has YAML frontmatter with title, slug, category, tags, etc.
# Upload changes back to the platform
broomva prompts push system-default.md
# Updated prompt: system-defaultThe frontmatter format:
---
title: "System Default"
slug: "system-default"
summary: "Default system prompt"
category: "system"
model: "claude-sonnet-4-20250514"
tags: ["system", "default"]
visibility: "private"
---
Your prompt content here...When pushing with --create, a new prompt is created. Without the flag, the slug from the frontmatter is used to update an existing prompt.
broomva skills
Browse and install skills -- packaged capabilities that can be installed into agent runtimes. Skills are discovered from SKILL.md files in repositories and published to the skills marketplace.
| Subcommand | Description |
|---|---|
skills list | List available skills grouped by layer |
skills list --layer <id> | Filter by layer ID |
skills list --json | Output as JSON |
skills get <slug> | Get details for a skill (name, description, install command, URL) |
skills get <slug> --json | Output as JSON |
skills install <slug> | Install a skill (delegates to npx skills add broomva/<slug>) |
Example
# List available skills
broomva skills list
# Shows skills grouped by layer with slug, name, and description
# Get details for a specific skill
broomva skills get deep-dive-research
# deep-dive-research
# Deep research skill with multi-source synthesis
# Layer: research
# Install: npx skills add broomva/deep-dive-research
# URL: https://broomva.tech/skills/deep-dive-research
# Install a skill
broomva skills install deep-dive-research
# Running: npx skills add broomva/deep-dive-research
# Installed skill: deep-dive-researchThe install command fetches the skill's install command from the API and executes it via execSync. If the API is unreachable, it falls back to npx skills add broomva/<slug>.
broomva context
Show the project context -- the conventions, stack, and features that inform the platform's behavior.
| Subcommand | Description |
|---|---|
context show | Display the full context (app info, conventions, stack, features) |
context show --json | Output as JSON |
context conventions | Show conventions only |
context conventions --json | Output as JSON |
context stack | Show tech stack only |
context stack --json | Output as JSON |
Example
# Show what conventions the platform follows
broomva context conventions
# packageManager: bun
# linter: biome
# auth: better-auth
# orm: drizzle
# ...
# Show the tech stack
broomva context stack
# framework: Next.js 16
# runtime: Bun
# database: PostgreSQL
# ...The context command queries the platform API for the project context. This is useful for AI agents that need to understand the platform's conventions before generating code.
broomva config
Manage CLI configuration stored in ~/.broomva/config.json.
| Subcommand | Description |
|---|---|
config set <key> <value> | Set a configuration value |
config get [key] | Get a configuration value (or show all if no key given) |
config get --json | Output as JSON |
config reset | Reset configuration to defaults |
Configurable keys
| Key | Description | Default |
|---|---|---|
apiBase | API base URL | https://broomva.tech |
defaultFormat | Default output format | -- |
daemon.heartbeatIntervalMs | Daemon heartbeat interval | 30000 |
daemon.dashboardPort | Daemon dashboard port | 4200 |
daemon.symphonyUrl | Symphony service URL | -- |
daemon.arcanUrl | Arcan service URL | -- |
daemon.lagoUrl | Lago service URL | -- |
daemon.autonomicUrl | Autonomic service URL | -- |
daemon.incidentThreshold | Consecutive failures before incident | 3 |
Example
# Point the CLI at a local development server
broomva config set apiBase http://localhost:3001
# Configure daemon to check services faster
broomva config set daemon.heartbeatIntervalMs 10000
# Reset to defaults
broomva config resetbroomva daemon
Manage the broomvad runtime daemon -- a long-running process that monitors platform and Life service health, reports incidents, and provides a local dashboard.
| Subcommand | Description |
|---|---|
daemon start | Start the broomvad daemon |
daemon start --env local | Start in local mode (uses localhost URLs) |
daemon start --env railway | Start in railway mode (default, uses configured URLs) |
daemon start --port <port> | Override dashboard port |
daemon start --interval <ms> | Override heartbeat interval |
daemon stop | Stop the running daemon |
daemon status | Check if the daemon is running and show sensor states |
daemon status --json | Output as JSON |
daemon logs | View daemon log entries |
daemon logs --lines <n> | Show last N log entries (default: 20) |
daemon logs --level <level> | Filter by level (debug, info, warn, error) |
daemon logs --json | Output as JSON |
daemon tasks | Show active incidents |
daemon tasks --all | Include resolved incidents |
daemon tasks --json | Output as JSON |
Health sensors
The daemon registers multiple health sensors that run on each heartbeat tick:
| Sensor | Description |
|---|---|
SiteHealthSensor | Checks the main website (broomva.tech) availability |
ApiHealthSensor | Checks the API endpoint health |
| Railway sensors | Checks Railway-deployed services (Symphony, Arcan, Lago, Autonomic) |
Each sensor reports a status of healthy, degraded, or down with an optional latency measurement. When a sensor reports down for consecutive ticks exceeding the incidentThreshold, an incident is opened automatically.
Local mode
In local mode (--env local), the daemon uses localhost URLs for all services:
broomva daemon start --env local
# Starting broomvad (env: local, api: http://localhost:3000)
# Dashboard at http://localhost:4200| Service | Local URL |
|---|---|
| Symphony | http://localhost:8080 |
| Arcan | http://localhost:8081 |
| Lago | http://localhost:8082 |
| Autonomic | http://localhost:8083 |
Dashboard
The daemon serves a local HTTP dashboard showing real-time sensor states, active incidents, and Symphony connection status.
Example
# Start the daemon
broomva daemon start
# Starting broomvad (env: railway, api: https://broomva.tech)
# Dashboard at http://localhost:4200
# broomvad running (PID 12345, env: railway). Press Ctrl+C to stop.
# Check status from another terminal
broomva daemon status
# Daemon running (PID 12345)
# Started: 2026-03-22T10:00:00Z
# Last tick: 2026-03-22T10:01:30Z (#3)
# Symphony: connected
#
# Sensors:
# ● site-health: OK (120ms)
# ● api-health: OK (85ms)
# ● railway-arcan: OK (200ms)
# View recent logs
broomva daemon logs --lines 5
# Stop the daemon
broomva daemon stop
# Daemon stopped (PID 12345)The daemon feature connects to the Life Agent OS runtime and the Symphony orchestration service. For full local inference without the daemon, see the Arcan documentation for running the Rust runtime directly.