Run it

Architecture

What runs where: one Cloudflare Worker, one SQLite Durable Object, the TaskChampion sync protocol, the JSON API, the web app, and how GitHub and agents plug in.

The board is one Cloudflare Worker on the install’s address. It has no build step for the server, and a Preact web app built with Vite served as static files.

#The pieces

The Worker logs nothing about tasks and has no invocation logs. Pages and API answers are noindex and never cached.

#Data

Everything is in the Durable Object’s SQLite. Task fields are Taskwarrior properties (UDAs), so task sync carries them. Short-lived things (session output, owner messages) live in their own tables and are deleted after 14 days; images are stored in an attachments table, never public. Data changes forward-only and additively, which is why an install can go back one release.

#What leaves your account

An install keeps its data. It calls only what you connect:

No analytics, no telemetry, no tracking, and no other service.

#Tests

pnpm test runs the server’s tests: crypto against TaskChampion’s own test vector, the protocol, the replica, the API, sign-in, rotation, activity, and more. Nothing reaches the network: GitHub, Claude, and Web Push are mocked. pnpm interop checks the Worker against real Taskwarrior 3: two and three replicas, API changes and claims, conflicting edits, and a replica that starts from the server’s snapshot. Run it after changing sync, the replica, or the task model.

#How breakaway is built

breakaway is built by its owner and their agents, and takes no pull requests or issues from anyone else. The agents follow the repository’s AGENTS.md: what breakaway is and isn’t, what agents never do, and the conventions. A change that people see follows the brand guide in brand/. The licence lets you change your own copy as much as you like.

pnpm install
pnpm dev        # the board, locally
pnpm test       # the tests
pnpm build      # the web app
pnpm interop    # checks sync against real Taskwarrior 3