Show HN: Rowboat – Open-source, local-first alternative to Claude Desktop (github.com)
Claude’s desktop app is brilliant. But for our own daily work we kept wanting it to be less like a chat app and more like a full-fledged work app. Rowboat is our attempt at that, including the ability to build your own work surfaces inside Rowboat (more below).
Our repo is https://github.com/rowboatlabs/rowboat, and there’s a demo video here: https://www.youtube.com/watch?v=et5yQABJ3xI
In a previous startup, we built a deep-learning product for enterprise support reps, including teams supporting P&G brands. Models took live notes, suggested replies, and recommended actions while support reps were on calls or handling emails. One lesson stuck with us: it's not enough for the AI to be right, the help has to show up where the work is happening.
So we added what we came to call “work surfaces”: dedicated areas for email, meetings, notes, browser, and parallel coding, where the assistant can help inside the workflow itself rather than only through chat:
- Email client: Rowboat has a simple email client that sorts incoming emails into important vs. everything else, and pre-creates drafts for important emails. As you edit and send emails, it takes notes on your style, so future drafts get closer to your voice.
- Meeting notes: We built a Granola-style local meeting notetaker. Notes are stored as plain Markdown files on your machine. After a meeting, Rowboat feeds the notes back into the knowledge graph and updates the relevant people, project, and topic notes.
- Browser: We added a built-in browser, isolated from your main one, where you can log in only to the accounts you want the assistant to help with. The assistant uses browser-use skills to navigate websites.
- Parallel coding: The code-mode inside Rowboat lets you spin multiple instances of Claude Code or Codex and either work with them directly or let Rowboat use your work context to orchestrate them. We built an ACP (Agent Client Protocol) client in Rowboat for this.
- Notes: Rowboat has an Obsidian-style local note-taking system. It comes with graph view, bases view, and voice notes. You can also sync Google Docs files and edit them inside Rowboat.
You can also build your own work surfaces inside Rowboat (web apps). Each app gets its own UI and a background agent, and can use all of Rowboat's tools, product integrations, and your work memory. For instance: an app to manage GitHub activity, project tracking, or ads campaign management. There are a few community apps at launch you can search and install, and you can publish your own by creating a GitHub repo for it and registering it.
Rowboat also indexes your work into a knowledge graph that all of the above surfaces use to have better context. We did a Show HN a few months back on this: https://news.ycombinator.com/item?id=46962641.
As an example that ties some of these together: you can create an app inside Rowboat that collects feature requests from your email, meetings, and Slack and ranks them, then uses Claude Code to draft a first version of the top-ranked feature, pulling prior context about it from your knowledge graph.
Rowboat is local-first: data is stored as plain Markdown files you can read, edit, or delete anytime. It is Apache-2.0 and works with any LLM, including local models through Ollama or LM Studio.
We’d love to hear your thoughts, and contributions are welcome!
97 comments
[ 3.5 ms ] story [ 77.2 ms ] threadAll of them take my notes, meeting transcripts, jira tickets, code, websites, and give me more to read.
Then everyone else in the org is doing the same, to give me more to read. At the end of the day there is too much to read.
AI is supposed to be reducing toil, but it's just making more.
The "Agent Apps" (or whatever we are calling them) from the big vendors are organized around projects/folders, and we attach apps (via plugins) to the projects.
This appears to mae the apps (work surfaces) the primary artifact?
Surfaces are the primary artifact for collaborating with the assistant - each one attaches an app to a workflow and gives both you and the agent a structured place to work, instead of everything flowing through chat.
Chat is still first class, and projects/folders exist separately to organize work around it.
What I actually ended up doing was regularly pointing Claude at the Rowboat directory. Really useful to have all of this context available as markdown files.
I use my own standard format for all context capsules, and had my own branch running with that format hacked in.
Being able to describe the format in a plugin style architecture would be awesome.
Granola notes silently stopped working when they decided to encrypt the DB, interesting to see you've got your own in there now.
Will check it out again.
We heard of others pointing Claude to the knowledge graph. It made us double down on building a Claude desktop alternative, so we could couple them deeply. For instance, there are places you could provide feedback on emails to Rowboat and that goes into the knowledge graph which then improves the email handling. Something like this would be hard, if we did not control the assistant as well.
Would love to see your context capsule format. We could definitely make it possible to describe your own format.
Granola no longer working was what led us to build it natively.
Welcome back. Would love your thoughts on the product.
https://contextcapsules.com/v2/CONTEXT_CAPSULES.md
Context Capsules cover business concepts (even org structure), all the way through to implementation. Compounding value from bounded context.
I implemented the Granola Sync when rowboat stopped pulling it in (I have a year's worth of transcripts of pretty much every conversation I've had over the past year).
One shot granola sync in both TypeScript and go from a single Context Capsule:
https://downkeep.com/sDzvgoKx/granola-sync?k=bJ0JXOTErCt1XVU...
Nightmare passing markdown files around in this day and age, and yet they are the future. DownKeep is my personal attempt at keeping some sanity, not production!
We're exploring a company brain - team-level context rather than just individual, and the context capsule seems like a great way to distill the individual knowledge graph into team level useful context!
Thanks for the Granola script. Yep, I never imagined markdown would be the killer format.
One thought, the knowledge graph rowboat creates is passive, based on context in emails, transcripts etc. A tool to pull further context from an individual would be amazing. Sit there and chat with it to flush out all of the tribal knowledge (gotchas in this spec).
We have Context Capsules running in production as agent context (amongst other layers of governance) to define metrics etc, so we can guarantee what you see in your dashboard matches exactly what your invoice says, what we're reporting externally, regardless of who is reporting it. Agent or human.
This is a great idea. Almost like an interview mode where the assistant asks pointed questions (using your capsule spec as a guideline) and writes the answers back into the graph.
And thanks for the production context - this is not something we would have come up with. So really helpful data point.
I’ve spent a ridiculous amount of time building my wiki, feature plans, retrospectives, client overviews, meta overview, log, skills, commands and the barrier to trying a new command surface or agent is always “will I maintain my edge”.
Or am I misunderstanding? Is it that I would just spawn windows to that existing harness and get to harvest additive features/data from rowboat on top?
Edit - my typical approach would be to scrape out features from a tool like this to bolt onto my harness, why would I not do that here?
Can Rowboat do this? If not, does anybody know a harness that can?
Didn't really consider putting it out in public. Is there a viable product out of this? How much would you pay.
I get that great pains have been made to make sure that doesn't happen by default. But if you really want to co-op on something, why not at the session level on a dedicated VM/login pair?
That's why we're exploring a peer-to-peer setup for group chats instead. Each person keeps their own machine and data, and the assistant knows who's who and can ask the primary user for permission if the secondary user wants to run something non-trivial.
That's what Amp is built around!
By default conversations are shares in your team (you can also make them private), and the agent has access to them.
So you can do things like "how would $teammate think about this" and the agent will read your colleague's conversations with Amp to get a feel for that and evaluate your work based on that.
Or just figuring out what everyone is doing at the moment is much easier that way
What they do have is funding and distribution, but that's the same advantage every incumbent has against every startup.
The single biggest advantage we have is that the labs are tied to their ecosystems. Claude still doesn't have image generation; Gemini-flash-lite is the best cheap model, but Gemini's apps can't use the latest models from Anthropic or OpenAI. We can always use the best tool for each job.
Also different members of the team could steer/approve what the AI did or did not do.
Ahhh found the talk: https://www.youtube.com/watch?v=ClWD8OEYgp8
Or you could use tmux and a shared login and any tui agent harness.
Obviously they would be very flawed but a place to start.
Any plans for a more opinionated way to handle memory ( but still within user's control )?
edit: syntax
Fair - it's Gmail-only today. We've thought about generic IMAP, but it seems to have some technical gaps for how our email surface works. For instance, there's no reliable cross-provider way to pre-create drafts on a thread. So we haven't prioritized it just yet. We do plan to add Outlook support soon.
Again, great app - all the best for the future!
starting with indies and SV startups and education is less risky, but the real market outside startup culture is often overlooked by those who came up inside that culture
generic IMAP is not worth the time, first class integration with M365 is worth the time
OIDC flavor "Continue with Microsoft" should be right there beside Continue with Google / Github / Whatever, on every SaaS that wants business clients small enough to make "sign up online" decisions. By contrast, for consumer, Continue with Apple would be the equivalently overlooked OIDC option if you are targeting "wallet share" (a revenue model) instead of headcount (an ad model, for instance).
* Didn't look this up. Used to be. Doesn't matter if 50% or 90%, it's substantial, and point stands: don't overlook it.
Is there a way to control the isolation myself, e.g. let it run code only in some VM?
- Codex runs under its native OS sandbox (Seatbelt on macOS, bubblewrap on Linux) — where it's sandboxed to the selected working directory with network off. - Claude Code's sandbox is opt-in and we don't enable it yet, but we load your Claude config (~/.claude/settings.json), so if you've enabled sandboxing there it should work.
Surfacing these options in the app UI is a small change on our side, which we'll pick up shortly.
2. Doesn't support generic IMAP email.
3. Doesn't accept my STT.
4. Doesn't accept my TTS.
5. Doesn't accept my SearxNG/custom search engine
1. True - no OS-level container today. The constraint is approval gating: consequential actions surface as a permission ask before they run (a separate supervisor LLM flags anything outside your intent). 2. True today. We'd deprioritized generic IMAP (drafts-on-thread is unreliable cross-provider), but you're the third person in this thread to raise it, so we'll scope it properly.
3/4/5. Today: Deepgram for STT, ElevenLabs for TTS, Exa for search.
At least for search we supported more providers earlier (e.g. Brave) and found the assistant's skills degrade when they can't lean on provider-specific capabilities, like Exa's granular search. So we trimmed and went deep on a few.
Feel free to raise a GitHub issue with what you want us to support and we'll do our best.
Right now, with my Nanoclaw, I'm running it in a container on a VM on proxmox. If things get bad, I lose a backed up machine and any services it has credentials to.
I can understand why IMAP is a pain. There's plenty of functions that can trash mailboxes. I don't envy you all in this task.
For my STT and TTS, ones on the HN front page right now: https://ariya.io/2026/03/local-cpu-friendly-high-quality-tts...
And OpenWhispr is local Whisper model that I also run locally. And still, no data leaks. And since its local, its also FAST. I also use it via HomeAssiatant.
For search, I use SearXNG. Ive even changed my daily driver to it at home, since it gets great results and none of the public cloud forced crap (llm searches when I don't want it).
Will go through these and see what we could support. If you drop your stack into a GitHub issue, that's the best place for us to work through it (and for others to +1).
My question is, can I interact with it over mobile? If I'm away from the desktop, and I want to check-in with it (query the .knowledge, or trigger some coding task etc), is there that option?
You should choose different language.