# charlesnl7/rowboat architecture

> Architecture diagram of the GitHub repository charlesnl7/rowboat, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/charlesnl7/rowboat
- Repository: https://github.com/charlesnl7/rowboat

## Overview

Rowboat is a local-first AI coworker: it turns work data into editable, linked knowledge, then uses that context to help users act across work surfaces. The graph emphasizes that memory-to-assistance workflow and preserves the README’s major surfaces and integrations. Sampled source confirms the knowledge pipeline, agent runtime, code-mode provisioning, and renderer entry point; several product capabilities are documented but their implementation was not sampled, so their wiring is not inferred.

Main entry points: [`apps/x/packages/core/src/runtime/legacy/engine.ts`](https://github.com/charlesnl7/rowboat/blob/main/apps/x/packages/core/src/runtime/legacy/engine.ts) (Agent engine), [`apps/x/packages/core/src/knowledge`](https://github.com/charlesnl7/rowboat/tree/main/apps/x/packages/core/src/knowledge) (Source indexing), [`apps/x/packages/core/src/knowledge/run_pipeline.ts`](https://github.com/charlesnl7/rowboat/blob/main/apps/x/packages/core/src/knowledge/run_pipeline.ts) (Graph and tagging), [`apps/x/packages/core/src/code-mode/acp/engine-provisioner.ts`](https://github.com/charlesnl7/rowboat/blob/main/apps/x/packages/core/src/code-mode/acp/engine-provisioner.ts) (Code mode)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_memory["Work memory"]
  node_sync["Source indexing"]
  node_pipeline["Graph and tagging<br/>[run_pipeline.ts]"]
  node_knowledge["Knowledge notes"]
  node_localdata[("Local Markdown")]
end

subgraph group_assistant["Assistant runtime"]
  node_engine["Agent engine<br/>[engine.ts]"]
  node_workspace["Workspace context<br/>[engine.ts]"]
  node_code["Code mode"]
end

subgraph group_surfaces["Work surfaces"]
  node_chat["Chat"]
  node_email["Email client"]
  node_browser["Built-in browser"]
  node_meetings["Meeting notes"]
  node_apps["User-built apps"]
  node_editor["Document editor<br/>[save-pipeline.ts]"]
end

subgraph group_integration["Integrations"]
  node_mcp{{"MCP tools<br/>[engine.ts]"}}
  node_models{{"Model providers<br/>[engine.ts]"}}
  node_oauth{{"OAuth services<br/>[oauth-client.ts]"}}
end

node_user(("User"))
node_workdata["Work data"]

node_user -->|"supplies context"| node_workdata
node_workdata -->|"indexes sources"| node_sync
node_sync -->|"prepares inputs"| node_pipeline
node_pipeline -->|"builds and tags"| node_knowledge
node_knowledge -->|"writes notes"| node_localdata
node_localdata -->|"provides context"| node_workspace
node_workspace -->|"loads context"| node_engine
node_user -->|"collaborates"| node_chat
node_user -->|"works with"| node_email
node_user -->|"works with"| node_browser
node_user -->|"records meetings"| node_meetings
node_user -->|"builds surfaces"| node_apps
node_user -->|"edits documents"| node_editor
node_chat -->|"invokes"| node_engine
node_email -.->|"uses assistance"| node_engine
node_browser -.->|"uses assistance"| node_engine
node_meetings -.->|"updates graph"| node_knowledge
node_engine -->|"streams model output"| node_models
node_engine -.->|"exposes tools"| node_mcp
node_user -->|"starts coding agents"| node_code
node_code -.->|"authenticates"| node_oauth

click node_sync "https://github.com/charlesnl7/rowboat/tree/main/apps/x/packages/core/src/knowledge"
click node_pipeline "https://github.com/charlesnl7/rowboat/blob/main/apps/x/packages/core/src/knowledge/run_pipeline.ts"
click node_engine "https://github.com/charlesnl7/rowboat/blob/main/apps/x/packages/core/src/runtime/legacy/engine.ts"
click node_workspace "https://github.com/charlesnl7/rowboat/blob/main/apps/x/packages/core/src/runtime/legacy/engine.ts"
click node_code "https://github.com/charlesnl7/rowboat/blob/main/apps/x/packages/core/src/code-mode/acp/engine-provisioner.ts"
click node_chat "https://github.com/charlesnl7/rowboat/tree/main/apps/x/apps/renderer/src"
click node_email "https://github.com/charlesnl7/rowboat/tree/main/apps/x/apps/renderer/src"
click node_browser "https://github.com/charlesnl7/rowboat/tree/main/apps/x/apps/renderer/src"
click node_meetings "https://github.com/charlesnl7/rowboat/tree/main/apps/x/apps/renderer/src"
click node_apps "https://github.com/charlesnl7/rowboat/tree/main/apps/x/apps/renderer/src"
click node_editor "https://github.com/charlesnl7/rowboat/blob/main/apps/x/apps/renderer/src/components/pptx/save-pipeline.ts"
click node_mcp "https://github.com/charlesnl7/rowboat/blob/main/apps/x/packages/core/src/runtime/legacy/engine.ts"
click node_models "https://github.com/charlesnl7/rowboat/blob/main/apps/x/packages/core/src/runtime/legacy/engine.ts"
click node_oauth "https://github.com/charlesnl7/rowboat/blob/main/apps/x/packages/core/src/auth/oauth-client.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_sync,node_pipeline,node_knowledge,node_localdata,node_user toneBlue
class node_engine,node_workspace,node_code toneAmber
class node_chat,node_email,node_browser,node_meetings,node_apps,node_editor toneMint
class node_mcp,node_models,node_oauth toneRose
class node_workdata toneIndigo
```

## Components

### Work memory

- [Source indexing](https://github.com/charlesnl7/rowboat/tree/main/apps/x/packages/core/src/knowledge): `apps/x/packages/core/src/knowledge`
- [Graph and tagging](https://github.com/charlesnl7/rowboat/blob/main/apps/x/packages/core/src/knowledge/run_pipeline.ts): `apps/x/packages/core/src/knowledge/run_pipeline.ts`
- **Knowledge notes**
- **Local Markdown**

### Assistant runtime

- [Agent engine](https://github.com/charlesnl7/rowboat/blob/main/apps/x/packages/core/src/runtime/legacy/engine.ts): `apps/x/packages/core/src/runtime/legacy/engine.ts`
- [Workspace context](https://github.com/charlesnl7/rowboat/blob/main/apps/x/packages/core/src/runtime/legacy/engine.ts): `apps/x/packages/core/src/runtime/legacy/engine.ts`
- [Code mode](https://github.com/charlesnl7/rowboat/blob/main/apps/x/packages/core/src/code-mode/acp/engine-provisioner.ts): `apps/x/packages/core/src/code-mode/acp/engine-provisioner.ts`

### Work surfaces

- [Chat](https://github.com/charlesnl7/rowboat/tree/main/apps/x/apps/renderer/src): `apps/x/apps/renderer/src`
- [Email client](https://github.com/charlesnl7/rowboat/tree/main/apps/x/apps/renderer/src): `apps/x/apps/renderer/src`
- [Built-in browser](https://github.com/charlesnl7/rowboat/tree/main/apps/x/apps/renderer/src): `apps/x/apps/renderer/src`
- [Meeting notes](https://github.com/charlesnl7/rowboat/tree/main/apps/x/apps/renderer/src): `apps/x/apps/renderer/src`
- [User-built apps](https://github.com/charlesnl7/rowboat/tree/main/apps/x/apps/renderer/src): `apps/x/apps/renderer/src`
- [Document editor](https://github.com/charlesnl7/rowboat/blob/main/apps/x/apps/renderer/src/components/pptx/save-pipeline.ts): `apps/x/apps/renderer/src/components/pptx/save-pipeline.ts`

### Integrations

- [MCP tools](https://github.com/charlesnl7/rowboat/blob/main/apps/x/packages/core/src/runtime/legacy/engine.ts): `apps/x/packages/core/src/runtime/legacy/engine.ts`
- [Model providers](https://github.com/charlesnl7/rowboat/blob/main/apps/x/packages/core/src/runtime/legacy/engine.ts): `apps/x/packages/core/src/runtime/legacy/engine.ts`
- [OAuth services](https://github.com/charlesnl7/rowboat/blob/main/apps/x/packages/core/src/auth/oauth-client.ts): `apps/x/packages/core/src/auth/oauth-client.ts`

### Other components

- **User**
- **Work data**

## Connections

- User → Work data: supplies context
- Work data → Source indexing: indexes sources
- Source indexing → Graph and tagging: prepares inputs
- Graph and tagging → Knowledge notes: builds and tags
- Knowledge notes → Local Markdown: writes notes
- Local Markdown → Workspace context: provides context
- Workspace context → Agent engine: loads context
- User → Chat: collaborates
- User → Email client: works with
- User → Built-in browser: works with
- User → Meeting notes: records meetings
- User → User-built apps: builds surfaces
- User → Document editor: edits documents
- Chat → Agent engine: invokes
- Email client → Agent engine: uses assistance
- Built-in browser → Agent engine: uses assistance
- Meeting notes → Knowledge notes: updates graph
- Agent engine → Model providers: streams model output
- Agent engine → MCP tools: exposes tools
- User → Code mode: starts coding agents
- Code mode → OAuth services: authenticates
