How it Works
Everything you need to know to work with Catena.
What is Catena?
Catena is a patch-based version control system. Every change is a Patch — an atomic package of file operations. Patches are chained together in a linear sequence.
Every change is a self-contained, reviewable package
One single truth, no diverging histories
Conflicts are detected immediately, not at integration time
The server is the source of truth, sync is trivial
Comment directly on code lines in a patch
Core Concepts
Patches
A patch is a collection of file operations:
Every patch has an author, description, timestamp, and a Maturity level.
Trunk
The trunk is the current, correct state of the project. No main branch, no develop. Just the trunk. When a patch is accepted, the trunk grows — patch by patch, linearly.
Maturity — The Lifecycle of a Patch
catena withdraw to continue working on it.
Overlaps (Conflicts)
When two proposed patches modify the same file, Catena detects it immediately:
Overlaps are highlighted in red on the Timeline and in the Patches view.
Dependencies
Patches can depend on each other. A patch can only be accepted once all its dependencies are accepted.
Accept order: Payment + Email → API Auth → Frontend Types
Sync
catena sync without down asks for confirmation if you have local changes. With explicit catena sync down it doesn't ask — you know what you're doing.
Roles
Getting Started
Start the server
On first run an admin key is displayed. Save it!
Create a project
Make changes & check status
Push changes
Propose & Accept
Workflows
Daily Workflow
Resolving Conflicts
Building on a Patch
Hotfix on Release + Trunk
CLI Reference
catena initCreate or connect a workspacecatena statusShow local changescatena sync upPush changes to servercatena sync downPull trunk statecatena proposeSubmit patch for reviewcatena accept <id>Accept patch into trunkcatena withdraw <id>Pull back a proposed patchcatena logShow patch historycatena diff <id>Show patch detailscatena release <v>Create release snapshotcatena draftSet dependencies / targetsWeb UI
Available at /app after login.
Dashboard
Overview: stats, activity feed, overlap count
Patches
Master-detail with diff, inline comments, overlaps
Timeline
Patch chain graph with dependencies and overlaps
Files
Trunk file tree with code viewer
Releases
Frozen snapshots with version tags
Settings
Team, roles, API keys, webhooks
The UI updates live — when someone creates or accepts a patch via CLI or API, you see it instantly in the browser.
Design Decisions
Trunk, not Branches
Catena has one trunk — the single source of truth. Parallel work happens through proposed patches: they live side by side, not in separate histories. Overlap detection shows immediately when two patches collide.
Online-first
The server is the source of truth. Sync is trivial, overlaps are instantly visible, comments are native. You can still work offline: catena draft creates local drafts.
Linear History
Every patch is atomic — either fully in trunk or not at all. The history is a chain, not a graph. This makes it easier to understand and debug.