← Back to all work

2026

Bladbase

A documentation workspace your team and your coding agents share — realtime editing for people, and an MCP surface where agents read and write as themselves, inside your workspace roles.

Bladbase editor — a deploy runbook with typed documents in the sidebar, live status, and revision history

Stack

SvelteKit · Svelte 5 · Tiptap · Yjs

Outcome

Agents are workspace members with their own role and token — the trail reads 'MarketPilot drafted · you approved', never both as you

The problem

Every documentation tool assumes one kind of author: a person at a keyboard. Then coding agents showed up and started needing to read the runbook, tick the task, and draft the decision record — and the only way in was a shared human login, a scrape, or copy-paste. That breaks the audit trail the moment it matters. A page that says you approved something should mean you approved it, not that an agent posting as you did. I built Bladbase because I needed that boundary to exist and nothing on the market drew it.

The build

Bladbase treats an agent as a member. It gets its own identity, its own role, and its own scoped, hashed, expiring token, and it connects over the Model Context Protocol to search, read, and publish inside the same workspace rules a person lives under. Anything that asks for approval waits at 'awaiting review' until a human clicks once — and any later edit withdraws that approval. Documents carry a type and a lifecycle, so an ADR moves from proposed to accepted and a plan from draft to complete. Underneath, it is SvelteKit with Svelte 5, a Tiptap block editor on Yjs for conflict-free realtime editing, Typesense for typo-tolerant search filtered by what you can actually see, and four Cloud Run services — web, collab, worker, and mcp — over Firebase Auth, Firestore, Cloud Storage, and Cloud Tasks, with Terraform in the repo.

The name is Swedish: blad is a leaf, or a sheet of paper. The product is a documentation workspace with two kinds of author — people writing together in realtime, and coding agents reading and writing the same pages over MCP under their own identity.

That second half is the whole reason it exists. When Claude Code or another agent needs to update a runbook, tick a task in a plan, or draft a decision record, the options everywhere else are a shared human login, a scrape, or a copy-paste. All three destroy the one thing documentation is for: knowing who actually said what. Bladbase gives the agent a membership and a role instead. It writes as itself. If the change needs a person’s sign-off, it waits at “awaiting review” until someone clicks once, and the approval is a record. Edit the page afterward and the approval is withdrawn, because approving a draft is not approving what it became.

The editor is a Tiptap block editor on Yjs, so two people in the same paragraph see each other’s cursors and neither loses a word. Every save is a revision you can read back, and every revision can show exactly what it changed — reviewing an edit does not mean rereading the page. Documents carry a type and a lifecycle: an ADR is proposed, then accepted; a plan runs draft to complete. An agent updating the section it owns edits that section rather than replacing a page it did not write.

Search is Typesense, typo-tolerant, and filtered by what you are a member of, so a result you cannot open never appears. Publishing goes three ways — private, share-by-link, or public on your workspace address — and public pages expose llms.txt and raw Markdown at the same URL so answer engines read the text rather than the chrome. Google Drive connects as a source: index Docs where they live, import them when you are ready, never a bidirectional sync.

The infrastructure decision was to own the boundary. It is Firebase-native throughout — Auth, Firestore, Cloud Storage, Cloud Tasks — with four Cloud Run services and no Redis, and Terraform in the repo so the whole thing deploys to your own Google Cloud project. Permissions are checked on the server before anything is read. Tokens are hashed, scoped, and expiring.

I build it in itself. The repository’s thirteen architecture decision records live as pages in a Bladbase workspace, the restore runbook had its first recorded run against production, and a bladbase check step in CI reports back to each ADR which source files still cite it — so the documentation knows whether it is still true.

It is live in beta at bladbase.com, free and without a card.

Bladbase screenshot 1
Bladbase screenshot 2
Bladbase screenshot 3

The outcome

It is live in beta at bladbase.com, free and without a card. The project is built in itself: its thirteen architecture decision records live as pages in a Bladbase workspace, the restore runbook has a recorded run against production, and a CI step reports back to each ADR which source files still cite it. Five roles are enforced on the server on every request, deleted pages and workspaces come back for thirty days, and every published page exposes llms.txt and raw Markdown so answer engines read the real text.

  • Agents are workspace members with their own role and token — the trail reads 'MarketPilot drafted · you approved', never both as you
  • One-click review gate: work waits at 'awaiting review', and any later edit withdraws the approval
  • Realtime, conflict-free editing on Yjs with cursors, presence, and a revision for every save
  • Typed documents with lifecycles — ADRs go proposed → accepted, plans go draft → complete
  • Four Cloud Run services (web, collab, worker, mcp) on Firebase, no Redis, Terraform in the box
  • Five server-enforced roles, ACL-aware Typesense search, 30-day trash and restore
  • Published pages ship llms.txt and raw Markdown; Google Drive connects as a source
  • Dogfooded: 13 ADRs live in Bladbase itself, with a CI check that tells each ADR which files cite it

Have a similar problem?

Book a 30-minute call and we'll scope it together — no pitch, just a plan.

Book a call →