Open-source AI coworker, with memory https://www.rowboatlabs.com
Find a file
Prakhar Pandey a1db0e395a feat: Sign in with ChatGPT — OAuth sign-in, token storage, and settings UI
Lets users connect their ChatGPT Plus/Pro subscription instead of pasting
an API key. Sign-in half only: the codex model client consumes the session
via getChatGPTAccessToken().

- PKCE OAuth against auth.openai.com using the official Codex CLI public
  client id (constants verified against the openai/codex sources); system
  browser + loopback callback server on the pre-registered fixed port
  127.0.0.1:1455, state validated, stale callbacks rejected
- token store (core): single config/chatgpt-auth.json holding non-secret
  display fields (email, accountId, expiresAt) plus the token material
  encrypted via the safeStorage cipher bridge (plaintext-with-marker
  fallback when no keychain, matching the GitHub token path); no token
  value ever written in the clear or logged
- getChatGPTAccessToken(): single-flight refresh within 5 min of expiry;
  refresh rejection (400/401) clears to a clean signed-out state and
  throws typed ChatGPTAuthRequiredError; 5xx/network kept as transient
- sign-out with best-effort token revocation
- IPC chatgpt:getStatus/signIn/cancelSignIn/signOut — raw tokens never
  cross to the renderer; real cancellation settles the in-flight attempt,
  frees the port, and a retry starts a fresh attempt (new PKCE/state)
- settings UI: ChatGPT Subscription section on the OpenAI card
  (sign in / waiting + cancel / connected as {email} + sign out) via a
  useChatGPT hook

Vitest covers the token store, single-flight refresh, and
transient-vs-terminal refresh handling.
2026-07-17 17:23:46 +05:30
.github/workflows ci(x): typecheck test files — the gap vitest and the build tsconfigs both miss 2026-07-10 16:30:26 +05:30
apps feat: Sign in with ChatGPT — OAuth sign-in, token storage, and settings UI 2026-07-17 17:23:46 +05:30
assets fix brain image 2026-07-10 10:16:50 +05:30
.env.example Run mongodb in docker 2025-04-07 13:30:27 +05:30
.gitattributes Mega UI revamp 2025-04-03 17:56:31 +05:30
.gitignore chore: remove meeting-prep PLAN.md from repo (keep local-only) (#652) 2026-07-02 00:44:28 +05:30
build-electron.sh wip-electron 2026-01-16 12:05:33 +05:30
CLAUDE.md ci(x): typecheck test files — the gap vitest and the build tsconfigs both miss 2026-07-10 16:30:26 +05:30
docker-compose.yml merge job workers 2025-08-17 11:06:53 +05:30
Dockerfile.qdrant improve embedding index docs and setup 2025-05-09 09:38:09 +05:30
google-setup.md Small cleanup in rowboat 2026-07-12 21:14:14 +03:00
LICENSE Fill license placeholder 2025-01-31 16:29:39 +05:30
README.md Small cleanup in rowboat 2026-07-12 21:14:14 +03:00
start.sh Revert auth related changes to start.sh 2025-09-16 16:55:29 +04:00

rowboat-github-2

Rowboat

A desktop AI coworker with a memory of your work and built-in surfaces to act on it.

rowboatlabs/rowboat | Trendshift

Website Discord Twitter Y Combinator

Rowboat indexes your work into a living knowledge graph and uses that to get work done on your machine. It includes work surfaces for collaborating with AI: email client, notes, browser, code mode, meeting note taker, and workspaces for different projects.

Download latest for Mac/Windows/Linux: Download

Rowboat Apps to Code demo

Demo - apps to code · Demo - knowledge graph

If you find Rowboat useful, please star the repo. It helps more people find it.


Overview

Brain

Rowboat indexes email, meetings, slack and assistant conversations into a living Obsidian-style backlinked knowledge graph.
Brain graph screenshot

Email

The built-in email client sorts emails into important and everything else. Rowboat automatically drafts responses for important email using all the work context.
Email screenshot

Background agents

You can set up background agents that run on events like new email or on schedule like every day at 8am. They can connect to tools, search the web, use the browser and write code using Claude Code or Codex.
Background agents screenshot

Built-in Browser

Rowboat includes a browser that lets you and assistant collaborate on web tasks. Because its isolated from your main browser, you can log in only to the accounts that want the assistant to access.
Browser screenshot

Meeting Notes

A local meeting note-taker that taps into mic & speaker, produces live transcript and summarizes the meeting in a markdown file and updates the knowledge graph.
Meeting notes screenshot

Code Mode

Code mode lets you spin up parallel coding agents with Claude Code or Codex, and have Rowboat drive them with all the work context where needed.
Code mode screenshot

Apps

You can bulild your own work surfaces inside Rowboat — they get acess to all the tools and integrations, and you can share them with other people.
Apps screenshot

Integrations

Includes one-click integrations to most popular products.
Integrations screenshot

Installation

Download latest for Mac/Windows/Linux: Download

All release files: https://github.com/rowboatlabs/rowboat/releases/latest

Google setup

To connect Google services (Gmail, Calendar, and Drive), follow Google setup.

Voice input

To enable voice input and voice notes (optional), add a Deepgram API key in ~/.rowboat/config/deepgram.json

Voice output

To enable voice output (optional), add an ElevenLabs API key in ~/.rowboat/config/elevenlabs.json

To use Exa research search (optional), add the Exa API key in ~/.rowboat/config/exa-search.json

External tools

To enable external tools (optional), you can add any MCP server or use Composio tools by adding an API key in ~/.rowboat/config/composio.json

All API key files use the same format:

{
  "apiKey": "<key>"
}

How its different

Most AI tools reconstruct context on demand by searching transcripts or documents.

Rowboat maintains long-lived knowledge instead:

  • context accumulates over time
  • relationships are explicit and inspectable
  • notes are editable by you, not hidden inside a model
  • everything lives on your machine as plain Markdown

The result is memory that compounds, rather than retrieval that starts cold every time.

Bring your own model

Rowboat works with the model setup you prefer:

  • Local models via Ollama or LM Studio
  • Hosted models (bring your own API key/provider)
  • Swap models anytime — your data stays in your local Markdown vault

Extend Rowboat with tools (MCP)

Rowboat can connect to external tools and services via Model Context Protocol (MCP). That means you can plug in (for example) search, databases, CRMs, support tools, and automations - or your own internal tools.

Examples: Exa (web search), Twitter/X, ElevenLabs (voice), Slack, Linear/Jira, GitHub, and more.

Local-first by design

  • All data is stored locally as plain Markdown
  • No proprietary formats or hosted lock-in
  • You can inspect, edit, back up, or delete everything at any time