Repo deep dive · September 2026

Rowboat
makes AI multiplayer.

A local-first personal assistant for work, where each teammate brings their own memory and agent into one shared Space.

Source rowboatlabs/rowboat Snapshot 2fdae42 Licence Apache 2.0
A beginner-first explainer, architecture deep dive, and implementation guide.
01 / START HERE

The short version, before the plumbing.

Rowboat is trying to solve a simple but stubborn problem: your AI knows your work, but your team can’t collaborate with that context without handing it to a shared bot.

TL;DRBEGINNER VIEW

Every teammate gets their own assistant. The team shares the room.

Your Rowboat reads the context you choose on your machine, acts through your tools, and posts only the result you decide to bring into the Space.
The idea

Private by default

Email, meetings, notes, code and model keys stay with the person who owns them.

The shared layer

One Space

Messages, files, threads, reactions, polls and whiteboards live in a common collaboration surface.

The bridge

@rowboat

Mention your own agent. It gathers private context locally, then acts as you in the room.

Source: README · Spaces: the multiplayer part

WHY IT MATTERSTHE PAIN

Most team AI starts with a compromise.

01
Single-player context

One person has to paste the background into a chat, or the assistant sees only a thin slice of the work.

02
Shared bot exposure

A central assistant becomes the easiest place to connect everyone’s inboxes, notes and private history.

03
Memory that doesn’t compound

Important relationships and decisions remain trapped in separate transcripts and tools.

Rowboat’s bet is that collaboration should happen around explicit shared artefacts, while personal context remains personal.Interpretation of the repo’s “local-first” and Spaces design
Important nuance: “Private by default” doesn’t mean “nothing leaves your machine”. It means the boundary is explicit: what gets posted to a Space is visible to the team.
BENEFITSWHAT IT UNLOCKS

Useful when the work is contextual, collaborative and messy.

Faster hand-offs

Ask your agent to turn your meeting context into a proposal, then let the team review the same file in the Space.

Living project memory

Keep decisions, files, threads and history together rather than relying on a static wiki or a lost chat transcript.

Many agents, one substrate

Claude Code, Codex or another MCP-capable agent can operate through the same Space surface with member attribution.

Inspectable work

Files are Markdown, history has diffs and restore, and the shared layer is open source and self-hostable.

Examples are grounded in the repo’s documented flows: meeting notes → proposal, review → implementation, local knowledge graph, code mode and MCP extensions.

USE CASESCONCRETE FLOWS

Four ways the model feels different in practice.

01 / PRODUCTMeeting → briefYour local note-taker summarises a meeting. Your agent turns it into a shared proposal file.
02 / ENGINEERINGProposal → codeA teammate asks their Rowboat to hand the Space files to Claude Code or Codex, then posts the changes for review.
03 / RESEARCHEvidence → decisionPersonal notes, papers and browser research remain local; the Space holds the selected evidence and decision record.
04 / OPERATIONSEvent → actionBackground agents watch for new email or schedules, then create or update a shared artefact when appropriate.

First two flows are directly shown in the README. The research and operations examples are reasonable applications of the documented local knowledge graph, browser, background-agent and MCP capabilities.

02 / DEEP DIVE

The important design choice is the boundary.

Rowboat is not just a desktop chat client. The repo is a collaboration system with a local assistant on one side and Harbor, a shared server, on the other.

ARCHITECTUREONE SHARED SUBSTRATE

Local context stays local. The Space is the negotiated surface.

Vivid’s RowboatBrain · email · meetings · notes · code · model keys
only what is posted
Harbor / SpaceMessages · threads · Markdown files · whiteboards · history · events
only what is posted
Teammate’s RowboatTheir context · tools · model keys · agent attribution
REST/v1 routes for render and data access
WebSocket/v1/live for live updates and resume
MCP/mcp for agents, with no privileged Rowboat path

Fact: the repo describes Harbor as the Space server and says the agent uses the same MCP surface as any other agent. README · How it fits together

SPACE ANATOMYSHARED WORK

A Space is a channel plus a shared folder.

Conversation

Messages & threads

Topics, DMs, reactions, polls, mentions, read state and activity all ride the same collaboration substrate.

Artefacts

Markdown & whiteboards

Files are versioned, diffable and restorable. A whiteboard is treated as an asset with ephemeral relay frames.

Coordination

Invites & attribution

Invite binding, member identity and “Name (via agent)” receipts make authorship visible in the room.

The collaboration primitive is not the bot. It’s the shared, inspectable state that people and agents can both read and change.
YOUR OWN ROWBOATLOCAL CAPABILITIES

The personal side is deliberately broad.

Brain

A living, Obsidian-style backlinked knowledge graph over work context.

Email

Important email triage and drafts informed by accumulated work context.

Background agents

Event-triggered or scheduled work that can browse, search and write code.

Meeting notes

Local transcription, summaries and graph updates in Markdown.

Code mode

Parallel coding agents driven through Claude Code or Codex with relevant context.

Browser & MCP

Isolated browser access plus extensions to search, CRM, support, code and automation tools.

Source: README · Your own Rowboat

AGENT SURFACEMCP PARITY

Rowboat’s agent is a member, not a superuser.

What the repo says
A
One MCP door

The Space exposes a streamable HTTP MCP server at /mcp.

B
Thirty tools

Read, post, react, manage threads, work with assets, search, invite and catch up on activity.

C
Attribution travels

Actions are attributed to the member, with the agent name recording how the action happened.

# Register a Space for Claude Code claude mcp add --transport http my-team \ https://<org-address>/mcp # Then ask the agent to read the shared proposal > Read the proposal in the Space, identify open decisions, and post a review. # No separate privileged path exists

Fact: the tool surface and parity are described in CONTRACT.md · agent face.

DATA MODELEVENTS, HISTORY, CONFLICTS

Shared work is a log with projections, not a magic document.

01 / READRead current versionAgents receive content, version and recent history.
02 / PROPOSESend base versionEvery agent change carries a reason and its base.
03 / MERGEThree-way mergeNon-overlapping edits merge. Collisions return as normal outcomes.
04 / RESUMEReplay by offsetWebSocket subscribers catch up after a disconnect.
Implemented

History is first-class

Change-sets, diffs, restore, event offsets and golden merge fixtures make the collaboration state inspectable.

Implemented

Conflicts are not failures

A stale base returns current content, colliding regions and recent history so a well-behaved agent can retry.

Source: CONTRACT.md · conflict semantics

TRUST BOUNDARYPRIVACY + AUTH

Local-first is a product rule, not just a storage choice.

Private

Read only what the task needs

The repo explicitly warns agents not to pull a whole HR directory just to message one member.

Shared

Answer only what was asked

Private emails, DMs and notes should not leak into the shared reply as incidental context.

Auditable

Receipts describe action

The room sees what the agent did, not every private source it read to do it.

OAuth is the production boundary; dev tokens are explicitly for local development and tests only. Never expose dev auth publicly.

Source: README · privacy rules and CONTRACT.md · auth.

HARBORRUN IT YOURSELF

Start in memory. Move to Postgres when the Space needs to persist.

Dev / local

Single-org stub

One process, seeded Roadboard Space, in-memory by default, port 4272, dev tokens. Restarting resets the store.

cd apps/harbor pnpm install && pnpm build cd packages/server pnpm dev
Deployment

Multi-org Harbor

One process can serve multiple orgs through Postgres, host-based routing, OIDC, and disk or S3-compatible blob storage.

DATABASE_URLdurable state
AUTH_ISSUERpinned OIDC
APEX_DOMAINorg routing
Maturity note: the Spaces protocol is explicitly v0 and deliberately unstable. Breaking changes are expected while the project dogfoods the system.

Source: README · Run your own Harbor and Spaces Protocol Contract v0.

READ THE SIGNALEVIDENCE + LIMITS

Promising architecture. Still a moving target.

Evidence

Repo + tests

The repository includes protocol schemas, golden merge fixtures, API tests, MCP parity tests, WebSocket tests and a “day in the life” integration suite.

Interpretation

Strongest differentiator

The most interesting design move is not “AI in a team chat”. It is explicit sharing between multiple personal agents.

Decision point

Use it where context matters

It is a better fit for agentic project work than for a simple FAQ bot or a central inbox summariser.

!
Not production maturity by default

Protocol v0, active dogfooding and explicit deferred features mean you need to pin versions and expect change.

!
Privacy still depends on behaviour

A local boundary reduces exposure, but a careless prompt can still post sensitive content into a shared Space.

If you adopt Rowboat, treat the shared Space as a governed collaboration surface, not as a private notebook with a nicer UI.Recommendation for implementation
03 / HOW TO IMPLEMENT

Get one useful loop working before you build a platform.

The fastest path is: install the desktop assistant, create one Space, post one shared artefact, then connect an MCP-capable agent to review or implement it.

QUICK STARTBEGINNER PATH

Start with the smallest useful loop.

01 / INSTALLDownload RowboatUse the Mac, Windows or Linux build from the official downloads page.
02 / CONNECTChoose contextConnect only the email, calendar, notes, browser and model provider you actually need.
03 / CREATEOpen a SpaceInvite one collaborator. Put a real work artefact in the shared folder.
04 / PROVEAsk @rowboatUse one scoped prompt and check the receipt, file history and attribution.
Validation checkpoint: if you can explain what context was private, what entered the Space, and what changed in the file history, your first loop is working.

Download link: rowboatlabs.com/downloads

SELF-HOSTHARBOR DEV MODE

Run the shared layer locally in a minute.

Prerequisites
1
Node + pnpm

The Harbor workspace declares pnpm 10.20.0 as its package manager.

2
A local client

Use the Rowboat desktop app’s Spaces dialog to add a dev server.

3
A safe environment

Dev auth is intentionally not suitable for public exposure.

# from the cloned repo cd apps/harbor pnpm install && pnpm build # run the seeded single-org Harbor cd packages/server pnpm dev # connect the app to: http://localhost:4272 # seeded dev auth example Bearer dev-ramnique

This is the repo’s documented dev path. It starts in memory; set DATABASE_URL for durable Postgres-backed state. README instructions

BRING AN AGENTMCP SETUP

Connect the agent after the Space already has something worth reading.

01 / SPACECreate or joinGet a Space URL and authenticate as a member.
02 / MCPRegister the endpointUse the org’s /mcp URL with an MCP-capable client.
03 / SCOPERead before writingGive the agent a narrow task, with an explicit reason for changes.
04 / REVIEWCheck the receiptReview the diff, attribution, and what the agent chose to post.
# Claude Code example from the repo README claude mcp add --transport http my-team \ https://<org-address>/mcp # Example prompt Read the current proposal in the Space, list the unresolved decisions, and post a review without copying private meeting notes.

Other agents can use the same MCP door if they support streamable HTTP and the repo’s auth flow. README · Bring any agent

APPLY ITA PRACTICAL ADOPTION MAP

Use Rowboat as the collaboration layer around the work you already have.

CoworkOS

Shared project memory

Use a Space for the decision log, working files and review threads. Keep personal connectors local to each contributor.

Kingdom of Hype

Design room for agents

Let one agent maintain narrative state, another prototype systems, and humans review changes through shared artefacts.

VAI Santé showcase

Governed evidence room

Keep sensitive source material local, share only depersonalised outputs, and use file history plus receipts as the review trail.

FlavourMind

Research-to-proposal loop

Use personal research context to draft a proposal, then bring the selected evidence, assumptions and open questions into the Space.

Recommended pattern: one Space per bounded project or decision stream, with clear rules for what may cross from private context into shared artefacts.
ROLLOUTDONE WHEN…

A sensible first-week rollout has five proof points.

01

One real Space

At least one human collaborator can find the shared files and understand the room.

02

One local source

The agent can use a bounded personal context source without needing a shared inbox.

03

One agent action

A scoped prompt produces a visible, attributable result in the Space.

04

One merge conflict

The team has seen how a stale change returns current content and how to retry safely.

05

One privacy rule

Everyone can state what stays local, what can be posted, and who reviews the receipt.

Next

Then scale the substrate

Only after the loop works should you add Postgres, OIDC, deployment routing or more agents.

TAKEAWAYSTHE LAST SLIDE

Rowboat’s real product idea is a social contract for agents.

Private context compounds on each person’s machine. Shared work becomes useful when the boundary is explicit, the artefacts are inspectable, and every agent action has a human owner.
Remember

Personal agents

Each person brings their own memory, tools and model keys.

Remember

Shared artefacts

The Space is where decisions, files and collaboration become visible.

Remember

Explicit boundaries

Read narrowly. Post deliberately. Review what changed.

Repo snapshot reviewed 18 September 2026 · commit 2fdae42589992c19958f53ad64d52d1846c4b288.

SOURCESREAD FURTHER

Everything in this deck is anchored to the repo.

The repo contains no separate research paper at the supplied URL; this deck is a source-grounded repository deep dive. Where a slide labels “interpretation” or “advice”, that is synthesis from the implementation and documentation rather than a direct repo claim.

← → navigate · O overview · F fullscreen