Show HN: Octoweb – A Keyboard-First Browser with AI as a Citizen

donk8r1 pts0 comments

Introducing Octoweb: A Keyboard-First Browser Where the AI Is a Citizen, Not an Extension | Muvon

Introducing Octoweb: A Keyboard-First Browser Where the AI Is a Citizen, Not an Extension

Every browser suddenly has AI in it. And every one of them did it the same way: take Chrome, bolt a chat panel onto the side, call it an AI browser. The browser doesn't know the agent exists. The agent can't touch the browser. Two strangers sharing a window.

We spent this year building agents — a runtime, memory, code search, a filesystem layer — and at some point the question became unavoidable: what would a browser look like if it were designed for AI from the first commit? Not AI added. AI as a citizen — in both directions. The agent lives in the browser and can see what you see. And the browser is a tool the agent can pick up and use.

So we built it — for ourselves, the way you build a tool you intend to live in. Octoweb is a WebKit browser written in Rust — no Electron, no Chromium, about 25,000 lines — made for two overlapping audiences: people who live on the keyboard, and people who work with agents all day. We're both, and five months later it's the browser we start every morning in: reading docs, debugging our own web apps, handing the boring browser chores to Octomind while we keep reading. Today it hits 0.10.0, and it's time to tell you about it.

First, the geek part: no mouse required

Before the AI does anything, Octoweb has to earn its place as a browser for people who think in keystrokes. The design rule was simple: every action has a shortcut, nothing requires a click.

The center of it is the command palette (⌘⇧P) — type a URL, a search query, or any fragment of a page you've visited, and it fuzzy-matches across open tabs and history, ranked by match quality and visit frequency. One more keystroke opens, switches, or searches. And because muscle memory is sacred, the palette speaks readline: ⌃A/⌃E to jump, ⌃K/⌃U to kill, ⌃N/⌃P to move. If your fingers know Emacs or a shell, they already know Octoweb.

The rest of the vocabulary:

Fast-access slots — ⌘⇧1–⌘⇧0 pins the current page to a numbered slot; ⌘1–⌘0 jumps back from anywhere. Ten pages, one keystroke each, persisted across restarts. It's the browser equivalent of Vim marks. New in 0.10.0: ⌘⇧N pins the current page to the first free slot — and unpins it if it's already there.

MRU tab cycling — ⌃N/⌃P walks tabs in most-recently-used order, the way you actually switch between two pages, not the order they happen to sit in the tab bar.

Vim-style scrolling — ⌃D/⌃U for half pages, ⌃T/⌃B for top and bottom.

Screenshots to clipboard — ⌘S viewport, ⌘⇧S full page. No save dialog, no file to clean up later.

⌃R in the AI prompt box — reverse incremental search through your prompt history. Yes: we put readline's history search in the browser's AI input, because once you've had it in a shell you want it everywhere.

Global shortcuts run through CGEventTap, macOS-native and configurable. And this is why Octoweb is macOS-only for now — it leans on the platform (WKWebView, AppKit, CGEventTap) instead of shipping a second operating system in a zip file. That's also why the whole browser is a single lean binary instead of a 300 MB Electron app.

The agent in the sidebar — running on Octomind

Press ⌘⇧A and an agent slides in over the page. Not an iframe with a chat website in it — a real agent process, running locally, connected over the Agent Client Protocol.

The agent is Octomind , our plug-and-play agent runtime — the same one that powers our terminal sessions and CI reviews. And here's the part you don't do: start it. Octoweb launches octomind acp octoweb:assistant itself — a sandboxed subprocess per session, restarted if it dies, resumed with your conversation intact on the next launch. Install Octomind once, and the sidebar takes it from there.

That octoweb:assistant tag is a manifest from the community tap registry: model, system prompt, and tools, fetched and assembled automatically. Zero config files written by hand. From then on you can ask about the page you're reading, get code on it explained, or summarize a thread you don't have time for — with responses streaming in, sessions that persist and resume, and slash commands with rich output cards.

And because it's a real agent, the sidebar isn't a chat box with opinions — it works. Swap the tag to developer:rust and you can code from the browser: the agent edits files in its sandboxed workspace, tool calls show up as clickable rows with live status, and when it wants to show you something richer than prose — a form, a table, a small interactive UI — it renders an A2UI surface right in the sidebar. We've fixed bugs in Octoweb, from Octoweb, while the failing page sat in the next tab.

Three details we sweated:

The agent tag is editable. The sidebar header shows octoweb:assistant by default, but type any tag your Octomind knows — developer:rust, your own custom agent — and the sidebar reconnects...

browser agent octoweb from page first

Related Articles