Autonomous Claude Code orchestrator. Local desktop app that manages a swarm of AI agents: triage incoming work, spawn agents, monitor progress, handle failures — all through a markdown-based task board.
You create tasks. Sybra triages them, spawns Claude Code agents to implement them, monitors progress, reviews results, and keeps the board healthy. Each agent gets an isolated git worktree so parallel work never steps on itself.
new → todo → in-progress → in-review → done
↑
planning → plan-review → [human approves] → todo
Complex tasks go through a planning phase. Simple tasks go straight to execution.
claude -p with NDJSON streaming) or interactive (tmux sessions)sybra-cli) — task CRUD from the terminal, used by Claude Code skills| Layer | Stack |
|---|---|
| Backend | Go 1.26.2, Wails v2.12 |
| Frontend | Svelte 5, TypeScript 6, Skeleton UI v4, Tailwind v4 |
| IPC | Wails bound methods + events (no HTTP, no WebSocket) |
| File format | YAML frontmatter + GFM markdown |
| Tooling | mise, golangci-lint v2, oxlint, GitHub Actions |
Prerequisites: Go 1.26.2, Node 24, mise, Wails v2
# Install tool versions
mise install
# Dev server with hot reload (Go + Svelte)
mise run dev
# Production build
mise run build
# Install CLI
go install ./cmd/sybra-cli
sybra-cli [--json] <command> [flags]
list [--status STATUS] [--tag TAG] [--project PROJECT]
get <id>
create --title TITLE [--body BODY] [--mode MODE] [--tags t1,t2]
update <id> [--title T] [--status S] [--body B] [--mode M] [--tags T]
delete <id>
project list|get|create|delete
audit [--since 7d] [--summary]
Use --json for machine-readable output (required by Claude Code skills).
---
id: task-abc123
title: Implement auth middleware
status: todo
agent_mode: headless # headless | interactive
tags: [backend, auth, medium]
project_id: owner/repo
---
## Description
What needs to be done.
Tasks live in ~/.sybra/tasks/. The app watches for file changes and updates the board in real time.
Projects mirror GitHub repos as bare clones. Assign a project_id to a task and Sybra automatically creates an isolated worktree when the agent starts.
sybra-cli project create --url https://github.com/owner/repo
sybra-cli create --title "Add feature" --project "owner/repo"
Sybra ships with a Claude Code system prompt (orchestrator/CLAUDE.md) that turns a Claude Code session into the orchestration brain — triage, dispatch, monitor, resolve. Load it in any Claude Code session pointed at ~/.sybra/.
Claude Code skills (sybra-tasks, sybra-triage, sybra-plan, sybra-evaluate) are auto-installed to ~/.claude/skills/ on app startup, laid out as <skill-name>/SKILL.md subdirectories — the format Claude Code's skill loader requires.
Files at the repo root follow two prefixes:
svc_*.go — stateless service handlers. Each file declares a *Service struct that takes one or more internal managers as dependencies and exposes domain operations. No Wails coupling; these can be unit-tested without a running app.app_*.go — lifecycle methods and adapters on *App. These files bind Wails IPC, handle event emission, run background loops, and wire *Service objects into the desktop runtime. Methods here call into svc_* types rather than duplicating logic.mise run lint # golangci-lint + oxlint
go test ./...
cd frontend && npm run check # svelte-check
mise run build # confirms embed + compilation