Show HN: Rowboat – Open-source, local-first alternative to Claude Desktop (github.com)

5 points by segmenta ↗ HN
Hi HN,

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 ] thread
The growing problem with this and many other AI offerings is the asymmetry of effort.

All 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.

Have you tried having AI read it for you? /s
The AI should be doing the reading, then deciding what to do, then doing it, right? While you are at the beach, or unemployed. That's what Sam says.
Fair point. But our goal with Rowboat is to do the opposite, to distill down only the parts you care about. For instance, you are not expected to read meeting notes, the important parts from it are added to you knowledge graph. That way next time you want to know something like 'where are we on x', you can find exactly that without having to wade through irrelevant information to get there.
This is neat, excited to try it. Over the last months I’ve been exclusively using Codex for non-coding tasks. It’s not bad, but there’s much to improve. This seems like a step in the right direction!
Thanks! Would love to hear what you think, after you get a chance to try it.
This looks great, but let's see if I have this right ...

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?

Yes, that's mostly right.

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.

Really cool, how long did something like this take to build?
I actually was using this quite a lot earlier this year, thanks for this!

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.

That is great to know!

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.

The format is:

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!

This is brilliant, thanks for sharing!

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.

I'll be watching closely, we're moving this way very quickly. If you get there it'll save me a job!

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.

Thanks - would love to have this work for you.

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 have a lot of thoughts on this, I should start writing a bit more publicly.
Looks great. Is there an onboarding/xfer workflow from an existing Claude code harness?

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?

What I'm looking for right now is a tool like this that lets more than one person participate in the conversation: right now Claude Code and similar tools are great for working alone, but I'd like to effectively pair-prompt with a partner who can see what's happening, and take turns steering the conversation.

Can Rowboat do this? If not, does anybody know a harness that can?

Not yet, but we're actively working exactly toward this - group chats with the assistant, where people can see the session and take turns steering. We're exploring a peer-to-peer connection for it so there's no server in the middle, which keeps it consistent with the local-first setup.
I use a tool called linzumi for this
I built a harness in the cloud with slack like interface for this, allowing multiple people to join. It allows chat members to tag action items, work on files and sync to GitHub. My team uses it to coordinate on our task and teM context together, setup meetings which are auto transcripted and ingested into the attached wiki, and connect to calendar to setup meetings. Built it for our needs.

Didn't really consider putting it out in public. Is there a viable product out of this? How much would you pay.

This isn't exactly what you're looking for but for just the coding part, I am working on https://www.buildautomaton.com to allow multiple people to participate on a shared coding session. It's also bring your own agent subscription, uses ACP to talk to any agent (Cursor, Claude, Codex, etc), and is end-to-end encrypted for most of your IP.
Looks great, but the pricing model is a challenge for a small team. If there was a generous trial period (for testing) with a lower small team price I might be able to consider it, but it’s hard to justify constantly increasing AI and compute costs (already paying for several model subscriptions, existing orchestration tools… in addition to typical infrastructure)
Thanks for the honest feedback. I'm still playing around with the pricing and trying to get it right.
Rather than a single application, is it possible to run a VM and have multiple remote access sharing one login session?

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?

Today the UI and the server run as a single app. We're working on separating that, so you could technically have one server with multiple clients. But even then, for collaboration with others, there are two issues with sharing a login session: (1) the system doesn't know these are two separate people, and (2) it has access to someone's email etc. - if it doesn't know who the user is, everyone gets the same access and can run anything.

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.

Disclaimer: I'm part of the team building it

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

I have a hunch that both OpenAI and Anthropic are building towards this very quickly. It's one of the startup ideas that will be killed overnight when it's "officially" launched. Claude Tag was just released which lets Claude participate in chats in Slack - only a matter of time until they move those chats out of Slack and into their own platform.
That hunch is probably right - the labs are likely building towards this. However, our bet is that in knowledge work the labs don't have a structural advantage: the model isn't the product there, unlike coding where it mostly is - and even in coding, opencode and others are gaining real traction.

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.

I seem to remember GitHub working on something similar. I remember having seen a video from a conference talk someone at GH gave at an European AI conference a while back. She presented some current prototype/early version they were working in. Where AI was basically like a team member in a chat interface with access to the task boards, issue tickets and also the whole conversation of the team, if I remember correctly.

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

You might want to take a look at AionUI. Its a desktop app. I was an early contributor there and they do seem to work on like AI collaborations conversations rather than a single user only chat.
Have you tried using a purpose built pair programming app? Essentially these are tools with low latency screen sharing and remote control. Then you can pair-prompt in a call.
Haven't tried them but there are ways to wire a coding agent to slack, that gives you a multi-user session right there doesn't it?

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.

Super neat; will test. Initial read suggests the memory accretion continues indefinitely. Asking partially since I am still working on a personal way to deal with that as an issue:

Any plans for a more opinionated way to handle memory ( but still within user's control )?

edit: syntax

Update. It has a lot of potential ( and it did get better since I remember it from the original ShowHN ). There are pieces missing, but this may be a project to which I can happily contribute the pieces I think are missing.
That's great to hear! Would love your contributions. Please feel free to find us or DM me on Discord if you want to have a quick chat on anything.
this is the first harness ive been excited to try in a while. looks pretty feature rich and suits most of my needs.
Thanks, that's great to hear. Would love to know how it goes once you've tried it - and if anything's missing for your setup, let us know (we are active on Discord).
Look really great! I'm a bit sad that the only way to connect to email is gmail. Is a generic IMAP connector on your roadmap?
Thanks!

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.

Thanks for the straight answer, sadly I use neither of those providers. As a suggestion: maybe you could add an option to just disable e-mail integration, for users like me? Right now I'll be getting, "finalize your app setup" vibes... forever.

Again, great app - all the best for the future!

That's totally fair. We will try to add a way to disable email if you don't want to connect. Appreciate the kind words!
What I would find lovely is to connect my already existing Thunderbird profile that exists locally. I have 5 email accounts connected and there is no real need to sync them twice on the same machine.
That is a neat idea. We could tap into the locally-synced Thunderbird files for the knowledge graph, which would make ingestion straightforward. We could explore this. The write side - pre-creating drafts on threads, sending etc. still needs the provider work that made us defer IMAP for all email handling.
85%* of small to midsize biz in United States are on Microsoft's office platform, not Google Workspace and Gmail.

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.

Makes a ton of sense, and the framing is correct - it's easy to build for the ecosystem you live in. We plan to add M365 (Outlook) soon. And noted on "Continue with Microsoft" at sign-in.
Another wrapper . Guys please build something real, AI cost too much $$ to just keep building things that already exist.
How does sandboxing work?

Is there a way to control the isolation myself, e.g. let it run code only in some VM?

There's no app-enforced sandbox today. However, coding tasks get delegated to Claude Code or Codex using ACP.

- 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.

This looks very close to what I want from AI tools: not just chat, but memory + actual work surfaces around
Thanks, that's exactly the bet. Chat-heavy AI usage seems like a temporary phase.
1. No container to constrain a off-the-rails LLM.

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

Fair list:

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.

Thank you for addressing my list. I'd like to use it, but requirements on non-local services is a deal breaker for me.

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).

Thanks for the concrete list! I understand where you are coming from.

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).

Really interesting, thanks for creating this. I've been slow to adopt the desktop apps (although use the web interface and VS code plugins for all the main players). This might just be the point at which there's a vendor-agnostic option worth investing my effort into setting up.

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?

Rowboat markets itself as "local-first," but if you look in the actual codebase, transcription is Deepgram cloud, voice is ElevenLabs, analytics is PostHog, and the LLM is a cloud API.
I had a hunch that would be the case. I'm always nervous pointing any AI tool at my email, browser, and finances. Any similar solution that's truly local-first?
Not right now but I'm actually exploring this idea space — doing user research —. I would be happy to chat with you – or whoever happens to read this and is into this topic – about that. simone [at] breadboards.io
(comment deleted)
[dead]
Instead of having to define what “local-first” means to you personally you should emphasize that the data lives on your local machine. For some example messaging take a look at how Apple is marketing their new Siri AI.
That's fair - "your data lives on your machine as plain files" is the concrete claim, and something we should lead with. Will take a look at how Apple frames it, thanks.
You have completely misused and re-purposed this term. The common interpretation is that the software will continue to function without an internet connection which is not the case for your product.

You should choose different language.