Skip to main content
Rowboat is built with a local-first philosophy: your data stays on your machine. All processing, storage, and AI inference happen locally, giving you complete control and privacy.

Core Principles

Local Storage

All your emails, meetings, and notes are stored in ~/.rowboat/ on your machine

No Cloud Lock-in

Your knowledge graph uses standard markdown files - readable and portable

Privacy First

Data never leaves your machine unless you explicitly share it

You Own Your Data

Plain text files you can read, edit, search, and back up however you want

Data Storage

Directory Structure

Rowboat stores everything in a well-organized directory:
All files are human-readable markdown or JSON. You can browse, search, and edit them with any text editor.

Markdown Format

Notes use Obsidian-compatible markdown with frontmatter:
Benefits:
  • Open format (works with Obsidian, VS Code, etc.)
  • Human-readable
  • Grep-able
  • Version controllable with git
  • Easy to backup

Version Control

Rowboat automatically tracks all changes to your knowledge base using Git:
Every batch of entity updates creates a commit, providing:
  • Complete audit trail
  • Ability to revert changes
  • Debugging information
  • Export capability

AI Model Configuration

Rowboat supports multiple LLM providers - you choose where to send requests:
Supported providers:
  • Anthropic (Claude)
  • OpenAI (GPT-4, etc.)
  • Google (Gemini)
  • OpenRouter (access to many models)
When using cloud providers, only the prompt and conversation context are sent. Your stored files and notes never leave your machine.
Configuration file: ~/.rowboat/config/models.json

OAuth & Credentials

Rowboat needs OAuth access for Gmail and meeting tools:

How OAuth Works

1

Initial authorization

You authorize Rowboat via OAuth flow (opens browser)
2

Token storage

Access and refresh tokens are stored in ~/.rowboat/config/google_oauth.json
3

Token refresh

Rowboat automatically refreshes expired tokens without re-authorization
4

Scope limiting

Only requests minimal required scopes (e.g., gmail.readonly)
Security:
  • Tokens are stored with file permissions 0600 (owner read/write only)
  • Never logged or transmitted except to authorized APIs
  • Can be revoked at any time through Google account settings

Scopes Requested

Rowboat only requests read-only access. It never sends, modifies, or deletes your emails or meetings.

Data Portability

Export Your Data

Since everything is markdown and JSON:

Use with Other Tools

Obsidian

Open ~/.rowboat/knowledge/ as an Obsidian vault

VS Code

Browse and edit notes with full markdown support

Command Line

Use grep, ripgrep, or any text tool to search
Example searches:

Privacy Considerations

What Stays Local

✅ Always local:
  • All synced emails and meetings
  • Your entire knowledge graph
  • Service logs
  • Configuration files
  • OAuth refresh tokens

What Gets Sent to LLM APIs

⚠️ When using cloud LLMs:
  • Agent prompts and instructions
  • Specific conversation context
  • Entities being processed in current batch
Batch processing limits exposure: Only the current batch (10 files) is sent to the LLM at a time, not your entire knowledge base.
❌ Never sent:
  • Your full email archive
  • Your complete knowledge graph
  • Unrelated notes or conversations

Using 100% Local Setup

For complete privacy:
  1. Use local LLM (Ollama, LM Studio)
  2. Disable telemetry (Rowboat has none by default)
  3. Air-gapped option: Sync data externally, then disconnect

Open Source Benefits

Audit the Code

Review exactly how your data is processed

Self-Host Everything

Run Rowboat on your own infrastructure

Customize Freely

Modify agents, storage, or processing to your needs

No Vendor Lock-in

Standard formats mean you can migrate anytime
Source code: github.com/rowboat-ai/rowboat

Source Code Reference

Key implementation files:
  • apps/x/packages/core/src/config/config.ts - WorkDir and configuration paths
  • apps/x/packages/core/src/knowledge/version_history.ts - Git versioning
  • apps/x/packages/core/src/models/models.ts - LLM provider configuration
  • apps/x/packages/core/src/knowledge/google-client-factory.ts - OAuth handling