Skip to content

CLI reference

Sybra ships three binaries:

  • sybra-cli — task / project CRUD and diagnostics
  • sybra-server — HTTP API daemon for headless deployments
  • sybra-perf — benchmarking and performance tests

All binaries respect the same ~/.sybra/config.yaml as the GUI.


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

Terminal window
sybra-cli list --status todo
sybra-cli list --tag backend --status in-progress
sybra-cli list --project Automaat/sybra --json
sybra-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.

sybra-cli create \
--title TITLE \
[--body BODY] \
[--mode MODE] \
[--type TYPE] \
[--tags T1,T2] \
[--project PROJECT_ID] \
[--branch BRANCH] \
[--pr PR_NUMBER] \
[--issue URL]
FlagDefaultValues
--modeheadlessheadless / interactive
--typenormalnormal / debug / research / chat
--tagsnonecomma-separated
--projectnoneowner/repo

Returns the new task ID on stdout.

sybra-cli update <id> \
[--title T] \
[--status S] \
[--body B] \
[--mode M] \
[--tags T] \
[--project P]

Null/missing flags preserve existing values.

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.

sybra-cli project list
sybra-cli project get <id>
sybra-cli project create --url <github-url> [--type TYPE]

Clones the repo as a bare mirror.

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.

sybra-cli audit [--days N] [--task ID]

Dumps audit log entries. --days 7 for the last week.

sybra-cli board

ASCII-art kanban view of the current board. Useful in SSH sessions.

sybra-cli health

Prints the current health report: running agents, stuck tasks, provider status.

sybra-cli triage classify <id>
sybra-cli triage classify --all

Classifies a single task by ID, or every un-triaged task when --all is passed. Prints the proposed classification and applies it.

sybra-cli monitor scan [--json]

One-shot read-only monitor pass. Prints detected anomalies; no remediation dispatched.

sybra-cli selfmonitor scan
sybra-cli selfmonitor ledger [--limit N]
  • scan — runs the self-monitor judge + synthesizer once
  • ledger — prints the last N entries from ~/.sybra/selfmonitor/ledger.jsonl

HTTP API daemon. Use for deploying Sybra headlessly on a server. Configuration is via environment variables; there are no command-line flags.

Terminal window
SYBRA_PORT=8080 sybra-server
VariableDefaultNotes
SYBRA_PORT8080HTTP listen port
SYBRA_STATIC_DIRunsetServe a static directory at / (optional, for bundled UIs)
SYBRA_PPROFunsetWhen set, enables net/http/pprof endpoints under /debug/pprof/

The server loads ~/.sybra/config.yaml the same way the desktop app does.

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.

Terminal window
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.

Ship as a Docker image. Reference stack at home-nas/ansible/docker-compose/synapse-stack.yml (see Sybra’s CLAUDE.md).


Benchmarks the internals. For developers tuning Sybra itself.

sybra-perf [subcommand]

Subcommands (all take optional --iters N):

  • stream-parse — NDJSON parser throughput
  • task-parse — frontmatter parse/marshal roundtrip
  • worktree — worktree create/destroy latency
  • audit-append — audit log append throughput

Not for end users. Kept for regression testing.


CodeMeaning
0Success
1Generic error
2Invalid arguments or config
3Task/project not found
4Unauthorized (server only)
5Provider (Claude/Codex) unavailable

Scripts can rely on 2 meaning “caller mistake”, 3+ meaning “environment or state mistake”.


VarEffect
SYBRA_HOMEOverride ~/.sybra/
SYBRA_EDITOREditor for “Open in editor” actions (falls back to $EDITOR)
SYBRA_LOG_LEVELOverride logging.level at runtime
SYBRA_CONFIGOverride default config file path