Rowboat Turns Memory Into Markdown

The open-source AI coworker stores context in a local, editable vault, then uses permissions, skills, and MCP to act on it.

11 min read • View on GitHub • More from rowboatlabs

A wide desk scene shows emails, calendar cards, meeting notes, and folders connected by black threads into one orderly file cabinet. A small mechanical assistant sorts the papers into linked notebook pages, illustrating how Rowboat turns scattered work artifacts into a local memory system.
Rowboat's core idea is simple to see: convert everyday work artifacts into a file-based memory that both people and agents can read.
Key Takeaways

Most AI assistants fail in the same boring way. They forget the last useful thing you told them. Rowboat attacks that problem by making memory local, inspectable, and editable, so context is not a mystery box hidden behind a vendor API.

Every AI tool I’ve used has the same problem... next time you come back, it’s forgotten everything. You’re starting from scratch. Every. Single. Time. It’s like hiring an assistant who gets amnesia at the end of every conversation.

Suganthan Mohanadasan, Author · Rowboat AI coworker post

A coworker, not a chat window

Rowboat Labs built Rowboat around a simple premise: your work context already lives in email, calendars, notes, and docs, so the assistant should meet it there. The repo describes a local-first coworker that builds a transparent knowledge graph of people, projects, decisions, commitments, and open questions.

That shifts the product away from the usual ask-and-answer loop. Rowboat is trying to be a durable working layer, one that remembers enough to draft, organize, and act without making the user rebuild context every time.

A close-up shows a single notebook page with backlinks, margins, and threaded connections extending to other pages. A human hand edits one line while a mechanical quill traces the links outward, showing that changing one fact changes the whole memory graph.
The memory layer is not hidden behind a service boundary. It is a vault of notes the user can inspect, edit, and move.

Why Markdown matters

The most unusual choice in Rowboat is also the clearest: it uses plain Markdown notes with backlinks as working memory. That means the AI's context lives in a format you can open in Obsidian, edit by hand, diff in git, or move elsewhere without a migration project.

If the model gets a fact wrong, the fix is a text edit, not a retraining cycle. That is a very different trust model from cloud memory systems, where the underlying state is usually opaque and hard to correct.

Under the hood: events, permissions, and subflows

The CLI runtime is event-driven, not prompt-driven. In runtime.ts, the trigger path takes a run lock, replays the run log, and streams events through an agent state machine. Messages, tool calls, permissions, and nested subflows all become first-class events, which makes the system easier to pause, resume, and audit.

Rowboat's loop turns external events into local memory, then uses that memory to shape the next action.

That permission gate matters. Before a tool can do something external or destructive, Rowboat pauses for approval. The result is less flashy than a demo that fires commands freely, but much easier to trust when the agent is touching real data.

Skills and MCP keep the core small

Rowboat also avoids the giant prompt trap. Instead of stuffing every instruction into one system message, it uses a skill catalog and a loadSkill tool so the model can fetch guidance only when it needs it. The MCP layer does the same thing for tools. listMcpServers and executeMcpTool let the core runtime stay small while the ecosystem supplies connectors like Slack or GitHub.

That architecture gives Rowboat a useful asymmetry. The core stays narrow, but the surface area for capability can grow almost without limit.

Such an approach could eliminate the need to repeatedly reconstruct global context from scratch. It also reduces reliance on ad-hoc, quickly outdated .md reports. With a maintained knowledge graph, higher-level tasks could be delegated without assembling full context manually each time or worrying that the model will overlook subtle constraints.

Murgur, Forum Contributor · Cursor forum thread

What Rowboat is really competing with

Rowboat is not only competing with chatbots. It is competing with a stack: cloud assistants that forget, note apps that do not act, and agent platforms that can feel powerful while hiding too much of the state. The comparison is less about feature checklists and more about where memory lives, who controls it, and how safely actions are executed.

SystemMemory modelUser controlMain trade-off
RowboatLocal Markdown vault with backlinksHigh, the files are inspectable and editableMore setup than a chat app, more trust than a black box
Cloud chatbotsVendor-managed or session-based contextLow to mediumFast and familiar, but the memory boundary stays opaque
Obsidian aloneHuman notes without an agent runtimeVery highGreat for writing and recall, but not for autonomous action
Agent platformsUsually app-specific or cloud stateMediumBroad capability, less transparency around what persists

That is the real bet. Rowboat is not trying to win by sounding smarter in a single turn. It is trying to become the place where useful context accumulates, stays visible, and can be acted on without handing the whole memory layer to a service you cannot inspect.