← Paul Barrick

// the agentic os

Collab

A discussion and work layer over a markdown vault: notes, tasks, roadmaps, goals, memory and annotations, for me and for agents. The files stay the source of truth; the database is an index.

live · Tower

An architecture decision record open in Collab, from a fictional demo vault: one sentence in the Decision section is highlighted, and three comment threads anchored to that exact passage sit below it, each marked EXACT.
what
system of record
role
Designer and sole engineer
when
Aug 2026 – present
stack
TypeScript · SvelteKit · Tauri v2 · Rust · PostgreSQL · Supabase GoTrue · Docker Compose · MCP

The problem

My notes live in a markdown vault in git. That part works. What didn’t work was everything around it once agents joined in. An agent’s findings landed wherever that session happened to write them. A comment on a passage meant nothing once the passage was edited. And every new tool wanted to keep its own copy of the truth.

Commenting on markdown is a crowded category, and “markdown with comments” is a worse Notion. The part nobody handled was a review surface where half the collaborators are agents.

What I built

Collab is the system of record for my whole agentic setup. It indexes the vault and serves it to people and agents: documents, tasks, roadmaps, bugs, features, goals, memory, annotations, and a daily note. You can highlight a passage, comment on it, address the thread to an agent, and get a threaded reply that carries the model, the sources it read, and the cost.

Collab's Today home in a fictional demo vault: a focus card for the day with a did-it-happen check, a week calendar, collapsible todos and favorites, and recent activity listing the documents touched.
The Today home: one focus for the day, the week around it, and what changed in the vault.

It ships as one TypeScript bundle in three shells — an Android app, a macOS app and the web — talking to one SvelteKit server on Tower, my home server. Agents reach the same server through an MCP endpoint with 223 tools.

How it works

Decisions worth noting

Never silently re-anchor. An annotation either resolves to the right text or reports itself shifted or orphaned. A confidently wrong anchor is a defect; a missing one is a state. I measured this before building anything on top: 2,000 randomised edit scripts produced zero confident mis-attributions, and roughly 2,900 resolutions replayed through real git history produced zero more. Survival ranged from 84% on an append-mostly backlog to 30% on a file rewritten across 31 commits — and in that file, orphaning was the correct answer.

No live co-editing in v1. An agent proposes a diff and a person accepts or rejects it. That’s smaller and auditable, and you never want an agent quietly rewriting prose.

Document text is data, never instructions. An instruction found inside a document is surfaced, not obeyed. A hostile fixture document runs in CI to keep it that way.

Honest about offline. On the phone, Collab is offline-tolerant, not local-first. Reads come from a bounded cache; voice notes queue and retry; typed captures fail with a visible error. I wrote that asymmetry down as a finding instead of calling the app local-first.

Where it fits

Rule one of the whole system is that the vault owns the data — Collab indexes it, and nothing else becomes a second store of truth. Loop reads goals and starred roadmaps from Collab and writes status back. Collab’s own events go out to Headlines. Surface reads host vitals that the vault records. Loop and Mac the Reaper each appear inside Collab as plugins, but both run standalone first; the plugin mirrors them.

The Collab desktop app open on the Agentic OS manifest, with a rail of plugins down the left: Vault, Portfolio, Review, Ontology, Daily Digest, Kong, Loop, Reap, Releases and RevOps.
My real vault: the Agentic OS manifest, with plugins for Loop, Mac the Reaper, releases and revenue on the rail.

Outcome

Every agent in my setup is told to search Collab before answering from memory, and to write plans, decisions and bugs into it rather than into loose files. It has taken about 1,300 commits since August 2026. The anchoring model came out of that first measurement intact and everything else is built on it.

It also taught me where health checks lie. A process can answer “I’m up” while its database is hung. Collab now has a second health route that does a real read under a three-second deadline and returns 503 when it can’t. After one outage where the alert fired on every run and never reached me, “Collab unreachable” now posts straight to Discord as well.

← All of the Agentic OS