BroomVA

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:

FlagDescription
--api-base <url>Override the API base URL
--token <token>Override the auth token
--no-colorDisable colored output
-V, --versionPrint the CLI version
-h, --helpPrint help information

broomva auth

Manage authentication with the BroomVA platform. See Authentication for detailed usage.

SubcommandDescription
auth loginAuthenticate using device-code flow (RFC 8628)
auth login --manualAuthenticate using manual token copy-paste
auth logoutRemove stored credentials from ~/.broomva/config.json
auth statusShow current auth status (validates token against server)
auth status --jsonOutput auth status as JSON
auth tokenPrint 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.

SubcommandDescription
prompts listList 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 --mineShow only your prompts (requires auth)
prompts list --jsonOutput as JSON
prompts get <slug>Fetch a specific prompt by slug
prompts get <slug> --rawOutput only the prompt content (no metadata)
prompts get <slug> --jsonOutput as JSON
prompts createCreate 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 public

The --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-default

The 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.

SubcommandDescription
skills listList available skills grouped by layer
skills list --layer <id>Filter by layer ID
skills list --jsonOutput as JSON
skills get <slug>Get details for a skill (name, description, install command, URL)
skills get <slug> --jsonOutput 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-research

The 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.

SubcommandDescription
context showDisplay the full context (app info, conventions, stack, features)
context show --jsonOutput as JSON
context conventionsShow conventions only
context conventions --jsonOutput as JSON
context stackShow tech stack only
context stack --jsonOutput 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.

SubcommandDescription
config set <key> <value>Set a configuration value
config get [key]Get a configuration value (or show all if no key given)
config get --jsonOutput as JSON
config resetReset configuration to defaults

Configurable keys

KeyDescriptionDefault
apiBaseAPI base URLhttps://broomva.tech
defaultFormatDefault output format--
daemon.heartbeatIntervalMsDaemon heartbeat interval30000
daemon.dashboardPortDaemon dashboard port4200
daemon.symphonyUrlSymphony service URL--
daemon.arcanUrlArcan service URL--
daemon.lagoUrlLago service URL--
daemon.autonomicUrlAutonomic service URL--
daemon.incidentThresholdConsecutive failures before incident3

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 reset

broomva daemon

Manage the broomvad runtime daemon -- a long-running process that monitors platform and Life service health, reports incidents, and provides a local dashboard.

SubcommandDescription
daemon startStart the broomvad daemon
daemon start --env localStart in local mode (uses localhost URLs)
daemon start --env railwayStart in railway mode (default, uses configured URLs)
daemon start --port <port>Override dashboard port
daemon start --interval <ms>Override heartbeat interval
daemon stopStop the running daemon
daemon statusCheck if the daemon is running and show sensor states
daemon status --jsonOutput as JSON
daemon logsView 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 --jsonOutput as JSON
daemon tasksShow active incidents
daemon tasks --allInclude resolved incidents
daemon tasks --jsonOutput as JSON

Health sensors

The daemon registers multiple health sensors that run on each heartbeat tick:

SensorDescription
SiteHealthSensorChecks the main website (broomva.tech) availability
ApiHealthSensorChecks the API endpoint health
Railway sensorsChecks 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
ServiceLocal URL
Symphonyhttp://localhost:8080
Arcanhttp://localhost:8081
Lagohttp://localhost:8082
Autonomichttp://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.

On this page