diff --git a/.github/workflows/electron-build.yml b/.github/workflows/electron-build.yml
index 787e28e6..e68ce4f4 100644
--- a/.github/workflows/electron-build.yml
+++ b/.github/workflows/electron-build.yml
@@ -163,12 +163,25 @@ jobs:
run: pnpm install --frozen-lockfile
working-directory: apps/x
+ - name: Build node-pty native binary for Linux
+ working-directory: apps/x
+ run: |
+ # node-pty ships prebuilt binaries only for darwin/win32; compile the
+ # linux-x64 binary so bundle.mjs can stage it into the package. Without
+ # this the Linux app crashes on launch (missing prebuilds/linux-x64/pty.node).
+ PTY="node_modules/.pnpm/node-pty@1.1.0/node_modules/node-pty"
+ cd "$PTY"
+ npx node-gyp rebuild
+ mkdir -p prebuilds/linux-x64
+ cp build/Release/pty.node prebuilds/linux-x64/
+
- name: Build electron app
env:
VITE_PUBLIC_POSTHOG_KEY: ${{ secrets.VITE_PUBLIC_POSTHOG_KEY }}
VITE_PUBLIC_POSTHOG_HOST: ${{ secrets.VITE_PUBLIC_POSTHOG_HOST }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: npx electron-forge publish --arch=x64,arm64 --platform=linux
+ ROWBOAT_SKIP_PACMAN: '1' # Arch Linux package is built locally only, never in CI
+ run: npx electron-forge publish --arch=x64 --platform=linux
working-directory: apps/x/apps/main
- name: Upload workflow artifacts
diff --git a/.github/workflows/x-tests.yml b/.github/workflows/x-tests.yml
new file mode 100644
index 00000000..f657d478
--- /dev/null
+++ b/.github/workflows/x-tests.yml
@@ -0,0 +1,40 @@
+name: apps/x tests
+
+on:
+ pull_request:
+ paths:
+ - "apps/x/**"
+ - ".github/workflows/x-tests.yml"
+ push:
+ branches: [main]
+ paths:
+ - "apps/x/**"
+ - ".github/workflows/x-tests.yml"
+ workflow_dispatch:
+
+jobs:
+ test:
+ runs-on: ubuntu-latest
+ defaults:
+ run:
+ working-directory: apps/x
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: pnpm/action-setup@v4
+ with:
+ version: 10
+
+ - uses: actions/setup-node@v4
+ with:
+ node-version: 22
+ cache: pnpm
+ cache-dependency-path: apps/x/pnpm-lock.yaml
+
+ - name: Install dependencies
+ run: pnpm install --frozen-lockfile
+
+ # Builds @x/shared (core/renderer tests import its dist), then runs
+ # the shared, core, and renderer vitest suites in order.
+ - name: Run tests
+ run: npm test
diff --git a/.gitignore b/.gitignore
index 086ea0b5..c9eee447 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,6 @@
data/
.venv/
.claude/
+
+# Local-only meeting-prep planning doc
+/PLAN.md
diff --git a/CLAUDE.md b/CLAUDE.md
index 75a0f6a5..5e762a33 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -109,7 +109,9 @@ Long-form docs for specific features. Read the relevant file before making chang
| Feature | Doc |
|---------|-----|
| Live Notes — single `live:` frontmatter block (one objective + optional cron / windows / eventMatchCriteria) that turns a note into a self-updating artifact, panel UI, Copilot skill, prompts catalog | `apps/x/LIVE_NOTE.md` |
+| Calls (video mode) — one hands-free call engine with four presets (voice / video / share screen / practice coaching), device-derived surfaces (full-screen ⇄ floating popout), frame pipeline, prompts catalog | `apps/x/VIDEO_MODE.md` |
| Analytics — PostHog event catalog, person properties, use-case taxonomy, how to add a new event | `apps/x/ANALYTICS.md` |
+| Turn/session runtime — event-sourced storage, reference model, the `npm run inspect` debugger | `AGENTS.md` (repo root), `apps/x/packages/core/docs/turn-runtime-design.md`, `session-design.md` |
## Common Tasks
diff --git a/README.md b/README.md
index 361b87a0..934ab3b4 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,8 @@
-
-
-
-
A desktop AI coworker with a memory of your work and built-in surfaces to act on it.
+ -# Rowboat -**Open-source AI coworker that turns work into a knowledge graph and acts on it** - -Rowboat connects to your email and meeting notes, builds a long-lived knowledge graph, and uses that context to help you get work done - privately, on your machine. +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. -You can do things like: -- `Build me a deck about our next quarter roadmap` → generates a PDF using context from your knowledge graph -- `Prep me for my meeting with Alex` → pulls past decisions, open questions, and relevant threads into a crisp brief (or a voice note) -- Track a person, company or topic through live notes -- Visualize, edit, and update your knowledge graph anytime (it’s just Markdown) -- Record voice memos that automatically capture and update key takeaways in the graph Download latest for Mac/Windows/Linux: [Download](https://www.rowboatlabs.com/downloads) +
+
+
+
+
+ Demo - apps to code · Demo - knowledge graph +
+ + ⭐ If you find Rowboat useful, please star the repo. It helps more people find it. -## Demo -[](https://www.youtube.com/watch?v=7xTpciZCfpw) +--- +## Overview -[Watch the full video](https://www.youtube.com/watch?v=7xTpciZCfpw) +
+Brain+Rowboat indexes email, meetings, slack and assistant conversations into a living Obsidian-style backlinked knowledge graph. + |
+
+ |
+
|
+ |
+
+ |
+
+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. + |
+
+ |
+
+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. + |
+
+ |
+
+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. + |
+
+ |
+
+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. + |
+
+ |
+
+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. + |
+
+ |
+
+Integrations+Includes one-click integrations to most popular products. + |
+
+ |
+