CLI reference
Sybra ships three binaries:
sybra-cli— task / project CRUD and diagnosticssybra-server— HTTP API daemon for headless deploymentssybra-perf— benchmarking and performance tests
All binaries respect the same ~/.sybra/config.yaml as the GUI.
sybra-cli
Section titled “sybra-cli”sybra-cli [--json] <command> [flags]--json emits machine-readable output (used by Claude Code skills).
sybra-cli list [--status STATUS] [--tag TAG] [--project PROJECT]Filters combine with AND. Empty = all tasks.
Examples
sybra-cli list --status todosybra-cli list --tag backend --status in-progresssybra-cli list --project Automaat/sybra --jsonsybra-cli get <id>Prints structured key-value output (ID, Title, Status, Mode, Type, Tags, Project, Branch, PR, Issue, Created, Updated, Body, Plan, Plan Critique). Pass --json at the top level for JSON output suitable for scripts.
create
Section titled “create”sybra-cli create \ --title TITLE \ [--body BODY] \ [--mode MODE] \ [--type TYPE] \ [--tags T1,T2] \ [--project PROJECT_ID] \ [--branch BRANCH] \ [--pr PR_NUMBER] \ [--issue URL]| Flag | Default | Values |
|---|---|---|
--mode | headless | headless / interactive |
--type | normal | normal / debug / research / chat |
--tags | none | comma-separated |
--project | none | owner/repo |
Returns the new task ID on stdout.
update
Section titled “update”sybra-cli update <id> \ [--title T] \ [--status S] \ [--body B] \ [--mode M] \ [--tags T] \ [--project P]Null/missing flags preserve existing values.
delete
Section titled “delete”sybra-cli delete <id>Removes the markdown file, stored comments, and any saved plan. Running agents are not cancelled — stop them from the Agents page first if the task has a live run.
Projects
Section titled “Projects”project list
Section titled “project list”sybra-cli project listproject get
Section titled “project get”sybra-cli project get <id>project create
Section titled “project create”sybra-cli project create --url <github-url> [--type TYPE]Clones the repo as a bare mirror.
project delete
Section titled “project delete”sybra-cli project delete <id>Removes the bare clone and the descriptor YAML. Worktrees and running agents are not cleaned up automatically — handle those separately.
Diagnostics
Section titled “Diagnostics”sybra-cli audit [--days N] [--task ID]Dumps audit log entries. --days 7 for the last week.
sybra-cli boardASCII-art kanban view of the current board. Useful in SSH sessions.
health
Section titled “health”sybra-cli healthPrints the current health report: running agents, stuck tasks, provider status.
triage
Section titled “triage”sybra-cli triage classify <id>sybra-cli triage classify --allClassifies a single task by ID, or every un-triaged task when --all is passed. Prints the proposed classification and applies it.
monitor
Section titled “monitor”sybra-cli monitor scan [--json]One-shot read-only monitor pass. Prints detected anomalies; no remediation dispatched.
selfmonitor
Section titled “selfmonitor”sybra-cli selfmonitor scansybra-cli selfmonitor ledger [--limit N]scan— runs the self-monitor judge + synthesizer onceledger— prints the last N entries from~/.sybra/selfmonitor/ledger.jsonl
sybra-server
Section titled “sybra-server”HTTP API daemon. Use for deploying Sybra headlessly on a server. Configuration is via environment variables; there are no command-line flags.
SYBRA_PORT=8080 sybra-server| Variable | Default | Notes |
|---|---|---|
SYBRA_PORT | 8080 | HTTP listen port |
SYBRA_STATIC_DIR | unset | Serve a static directory at / (optional, for bundled UIs) |
SYBRA_PPROF | unset | When set, enables net/http/pprof endpoints under /debug/pprof/ |
The server loads ~/.sybra/config.yaml the same way the desktop app does.
API style
Section titled “API style”Every Wails-bound method is exposed as an RPC endpoint:
POST /api/{service}/{method}Request body is a JSON array of positional arguments. Response body is the JSON-encoded return value.
curl -s http://localhost:8080/api/tasks/List \ -H 'content-type: application/json' \ -d '[]'Service and method names mirror the Go bindings — tasks, agents, projects, workflows, and so on. Query a running server’s /events endpoint for the SSE stream of app events.
Deployment
Section titled “Deployment”Ship as a Docker image. Reference stack at home-nas/ansible/docker-compose/synapse-stack.yml (see Sybra’s CLAUDE.md).
sybra-perf
Section titled “sybra-perf”Benchmarks the internals. For developers tuning Sybra itself.
sybra-perf [subcommand]Subcommands (all take optional --iters N):
stream-parse— NDJSON parser throughputtask-parse— frontmatter parse/marshal roundtripworktree— worktree create/destroy latencyaudit-append— audit log append throughput
Not for end users. Kept for regression testing.
Exit codes
Section titled “Exit codes”| Code | Meaning |
|---|---|
0 | Success |
1 | Generic error |
2 | Invalid arguments or config |
3 | Task/project not found |
4 | Unauthorized (server only) |
5 | Provider (Claude/Codex) unavailable |
Scripts can rely on 2 meaning “caller mistake”, 3+ meaning “environment or state mistake”.
Environment variables
Section titled “Environment variables”| Var | Effect |
|---|---|
SYBRA_HOME | Override ~/.sybra/ |
SYBRA_EDITOR | Editor for “Open in editor” actions (falls back to $EDITOR) |
SYBRA_LOG_LEVEL | Override logging.level at runtime |
SYBRA_CONFIG | Override default config file path |