# Presentamos Octoweb: un navegador donde manda el teclado y la IA es ciudadana, no una extensión

> Octoweb es un navegador WebKit escrito en Rust para gente que vive en el teclado: paleta de comandos, ranuras de acceso rápido, atajos de readline en todas partes. Y trata a la IA como ciudadana de primera en ambas direcciones: un agente impulsado por Octomind en la barra lateral con el que hasta puedes programar, y un servidor MCP eficiente en tokens dentro del navegador para que tus agentes lo manejen. Lo construimos para nosotros mismos; cinco meses después, es nuestro navegador de cada día. macOS, código abierto, Apache-2.0.

# Presentamos Octoweb: un navegador donde manda el teclado y la IA es ciudadana, no una extensión

De repente todos los navegadores llevan IA dentro. Y todos lo hicieron de la misma manera: coge Chrome, atornilla un panel de chat en el lateral y llámalo navegador con IA. El navegador no sabe que el agente existe. El agente no puede tocar el navegador. Dos desconocidos compartiendo una ventana.

Hemos pasado este año construyendo agentes — un [runtime](https://octomind.run), [memoria](/blog/introducing-octobrain-mcp-memory-server), [búsqueda de código](/blog/octocode-semantic-code-search), [una capa de sistema de archivos](/blog/introducing-octofs) — y en algún momento la pregunta se volvió inevitable: ¿cómo sería un navegador diseñado para la IA desde el primer commit? No IA _añadida_. IA como ciudadana — en ambas direcciones. El agente vive en el navegador y puede ver lo que tú ves. Y el navegador es una herramienta que el agente puede coger y usar.

Así que lo construimos — para nosotros mismos, como se construye una herramienta en la que piensas vivir. **Octoweb** es un navegador WebKit escrito en Rust — sin Electron, sin Chromium, unas 25.000 líneas — hecho para dos públicos que se solapan: la gente que vive en el teclado y la gente que trabaja con agentes todo el día. Nosotros somos ambas cosas, y cinco meses después es el navegador en el que empezamos cada mañana: leyendo documentación, depurando nuestras propias aplicaciones web, pasándole a Octomind las tareas aburridas del navegador mientras seguimos leyendo. Hoy llega a la 0.10.0, y ya es hora de contártelo.

---

## Primero, la parte friki: no hace falta ratón

Antes de que la IA haga nada, Octoweb tiene que ganarse su sitio como navegador para gente que piensa en pulsaciones. La regla de diseño era simple: **cada acción tiene un atajo, nada exige un clic.**

El centro de todo es la paleta de comandos (`⌘⇧P`): escribe una URL, una búsqueda o cualquier fragmento de una página que hayas visitado, y hace coincidencia difusa entre pestañas abiertas e historial, ordenando por calidad de coincidencia y frecuencia de visita. Una pulsación más abre, cambia o busca. Y como la memoria muscular es sagrada, la paleta habla readline: `⌃A`/`⌃E` para saltar, `⌃K`/`⌃U` para cortar, `⌃N`/`⌃P` para moverse. Si tus dedos conocen Emacs o una shell, ya conocen Octoweb.

El resto del vocabulario:

- **Ranuras de acceso rápido** — `⌘⇧1`–`⌘⇧0` fija la página actual en una ranura numerada; `⌘1`–`⌘0` vuelve a ella desde cualquier parte. Diez páginas, una pulsación cada una, persistentes entre reinicios. Es el equivalente en navegador de las marcas de Vim. Nuevo en la 0.10.0: `⌘⇧N` fija la página actual en la primera ranura libre — y la desfija si ya estaba ahí.
- **Ciclo de pestañas por uso reciente** — `⌃N`/`⌃P` recorre las pestañas en orden de uso más reciente, como realmente alternas entre dos páginas, no en el orden en que casualmente están colocadas en la barra de pestañas.
- **Desplazamiento al estilo Vim** — `⌃D`/`⌃U` para media página, `⌃T`/`⌃B` para el principio y el final.
- **Capturas al portapapeles** — `⌘S` el viewport, `⌘⇧S` la página completa. Sin diálogo de guardado, sin fichero que limpiar después.
- **`⌃R` en el cuadro de prompt de la IA** — búsqueda incremental inversa por tu historial de prompts. Sí: pusimos la búsqueda de historial de readline en la entrada de IA del navegador, porque una vez que la has tenido en una shell la quieres en todas partes.

Los atajos globales pasan por CGEventTap, nativo de macOS y configurable. Y por eso Octoweb es solo para macOS por ahora: se apoya en la plataforma (WKWebView, AppKit, CGEventTap) en lugar de enviar un segundo sistema operativo dentro de un zip. Por eso también el navegador entero es un único binario ligero en lugar de una app de Electron de 300 MB.

---

## El agente en la barra lateral — corriendo sobre Octomind

Pulsa `⌘⇧A` y un agente se desliza sobre la página. No es un iframe con una web de chat dentro: es un proceso de agente real, corriendo en local, conectado por el [Agent Client Protocol](https://github.com/muvon/agent-client-protocol).

El agente es [**Octomind**](https://octomind.run), nuestro runtime de agentes plug-and-play — el mismo que impulsa nuestras sesiones de terminal y las revisiones en CI. Y aquí viene la parte que no haces tú: arrancarlo. Octoweb lanza `octomind acp octoweb:assistant` por sí solo — un subproceso aislado por sesión, que se reinicia si muere y se reanuda con tu conversación intacta en el siguiente arranque. Instala Octomind una vez, y la barra lateral se encarga del resto.

Esa etiqueta `octoweb:assistant` es un manifiesto del [registro comunitario de taps](https://github.com/muvon/octomind-tap): modelo, prompt de sistema y herramientas, descargados y ensamblados automáticamente. Cero ficheros de configuración escritos a mano. A partir de ahí puedes preguntar por la página que estás leyendo, pedir que te expliquen el código que hay en ella o resumir un hilo para el que no tienes tiempo — con respuestas en streaming, sesiones que persisten y se reanudan, y comandos slash con tarjetas de salida enriquecidas.

Y como es un agente de verdad, la barra lateral no es un cuadro de chat con opiniones — trabaja. Cambia la etiqueta a `developer:rust` y puedes programar desde el navegador: el agente edita ficheros en su workspace aislado, las llamadas a herramientas aparecen como filas clicables con estado en vivo, y cuando quiere enseñarte algo más rico que prosa — un formulario, una tabla, una pequeña interfaz interactiva — renderiza una superficie A2UI directamente en la barra lateral. Hemos arreglado bugs de Octoweb, desde Octoweb, mientras la página que fallaba esperaba en la pestaña de al lado.

Tres detalles que sudamos:

- **La etiqueta del agente es editable.** La cabecera de la barra lateral muestra `octoweb:assistant` por defecto, pero escribe cualquier etiqueta que tu Octomind conozca — `developer:rust`, tu propio agente personalizado — y la barra lateral se reconecta a él en el acto. Al navegador le da igual con qué cerebro está hablando.
- **El navegador nunca llama a un proveedor de IA.** Cada llamada a modelos la hace Octomind, fuera del proceso del navegador, con el acceso del agente al sistema de archivos confinado a su workspace. Ningún dato sale de tu máquina a menos que tu agente lo envíe a algún sitio — y qué agente es ese, y con qué proveedor, es decisión enteramente tuya.
- **La sesión es una calle de doble sentido.** Desde la 0.10.0, los mensajes inyectados por el runtime de Octomind — un especialista respondiendo desde el tap, una tarea programada que termina, un webhook que se dispara — llegan a la barra lateral como burbujas propias y etiquetadas, en mitad de la conversación. Tu navegador se convierte en el sitio donde tus agentes te rinden cuentas.

También hay una puerta más pequeña: selecciona texto en cualquier página, pulsa `⌘⇧E`, y un modal de edición en línea transforma la selección — reescribir, resumir, traducir. Ejecuta su propio agente dedicado del mismo tap — `octoweb:editor` — con su propio historial de prompts, con su `⌃R` y todo.

---

## El navegador como herramienta: MCP desde dentro

Esta es la dirección que nadie más construye, y es nuestra parte favorita. Octoweb ejecuta un **servidor MCP dentro del navegador** — `localhost:3434/mcp`. Cualquier cliente MCP — Claude Desktop, una sesión de Octomind, tu propio script — puede conectarse y manejarlo: veintiséis herramientas que cubren navegación, pestañas, clics, escritura, desplazamiento, capturas, extracción de contenido, salida de consola y actividad de red.

Automatización de navegador ya has visto. La diferencia aquí es que el agente no está manejando un Chromium headless en un centro de datos, sin cookies y con una diana de detección de bots en la espalda. Está manejando _tu_ navegador — tus sesiones, tus inicios de sesión, tus pestañas — mientras tú miras. Y el diseño de las herramientas se toma en serio lo de "mientras tú miras":

- **La navegación nunca roba el foco.** `browser_navigate` siempre abre en segundo plano. Exactamente una herramienta — `browser_switch_tab` — tiene permiso para cambiar lo que estás mirando. Un agente puede investigar en diez pestañas a tu espalda sin arrancarte nunca la página de debajo del cursor. Navega _a tu lado_, no _en tu lugar_.
- **Clics que no mienten.** `browser_click` reintenta hasta que el elemento está presente, estable y sin obstrucciones — y si algo lo tapa, el error dice _qué_. `browser_snapshot` devuelve un mapa de elementos interactivos con referencias `@N` estables que atraviesa iframes, shadow DOM y clicables que solo tienen listeners. `browser_wait` entiende de cuándo una SPA está lista, no solo de la carga de la página.
- **Ojos incluidos.** `browser_console_messages` y `browser_network_requests` le dan al agente los errores de consola de la página y la actividad fetch/XHR con estados y tiempos — las dos cosas por las que abrirías DevTools, como herramientas.
- **Barreras en la frontera.** El texto que sale por los snapshots y el contenido de página pasa por un sanitizador — los números de tarjeta se censuran antes de llegar jamás a un prompt.
- **Los tokens son el presupuesto.** Cada respuesta de herramienta está diseñada para un modelo, no para un depurador: `browser_snapshot` devuelve un mapa compacto de elementos en lugar de HTML crudo (borramos la herramienta `get_html` a propósito), los registros de consola y de red llegan acotados y filtrables, y las referencias `@N` hacen que el agente nunca queme media ventana de contexto adivinando selectores CSS. El turno de un agente se paga en tokens; el navegador lo respeta.

Y si tu runtime de agentes es Octomind, conectarlo es una línea dentro de una sesión:

```
/mcp add octoweb http://localhost:3434/mcp
```

El agente con el que ya estabas hablando ahora puede abrir documentación, leerla, rellenar formularios y comprobar qué está gritando la consola de una página — en mitad de la conversación, sin reiniciar. Así es como las tareas de navegador desaparecen de nuestras listas de pendientes: el agente reproduce un bug en una pestaña en segundo plano, lee la consola y vuelve con la petición que falla; recorre un panel de administración por el que no nos apetecía ir haciendo clic; comprueba que un deploy de verdad se renderizó — en nuestro navegador con la sesión iniciada, con nuestras sesiones, mientras seguimos leyendo en la pestaña en primer plano.

---

## El navegador que aprende contigo

Un experimento más: **aprendizaje proactivo**. A intervalos — 30 minutos por defecto — Octoweb despierta un segundo agente totalmente independiente, la etiqueta `octoweb:learning`, que mira tus pestañas abiertas y tu historial reciente y destila en qué estás trabajando hacia [la memoria de Octomind](https://octomind.run). En la siguiente sesión, el asistente de la barra lateral ya conoce la documentación a la que llevas tres días dando vueltas.

Viene activado por defecto — un solo interruptor en Ajustes lo apaga —, es local, el intervalo lo fijas tú, y los dos agentes son totalmente independientes: ejecuta cualquiera de los dos sin el otro. Creemos que la memoria ambiental es donde la IA de navegador se pone interesante de verdad, y preferimos enviar su v1 honesta antes que una demo.

---

## Sí, también es simplemente un buen navegador

Nada de esto importa si navegar es peor que en el navegador que dejaste. Los fundamentos están, y unos cuantos están mejor que eso:

- **Hibernación inteligente de pestañas** — las pestañas en segundo plano se congelan bajo presión de memoria, con umbrales conscientes de la RAM. Cincuenta pestañas son un estilo de vida, no una fuga. Y desde la 0.10.0 hay un tope de pestañas abiertas (500 por defecto, configurable) que cierra en silencio las de uso menos reciente cuando lo superas — un airbag para acumuladores de pestañas.
- **Bloqueo de contenido integrado** — rastreadores y anuncios mediante las listas de reglas de contenido nativas de WebKit, sin necesidad de extensión.
- **Los arranques en frío se quedan fríos** — los favicons se cachean como data-URIs, así que lanzar el navegador hace cero peticiones de red hasta que tú hagas la primera.
- **Restauración de sesión, passkeys WebAuthn, visor de PDF y DOCX, búsqueda en página** sobre la CSS Custom Highlight API, pantalla completa nativa y un manejo correcto de las ventanas emergentes.

¿Y las extensiones? Estado honesto: la integración de Safari Web Extensions (para 1Password, Bitwarden y compañía) está completamente implementada en el código — y bloqueada por el entitlement `com.apple.developer.web-browser` de Apple, una aprobación que solo Apple puede conceder. Hasta que llegue, los content scripts no se inyectan. Preferimos decírtelo así antes que fingir que las extensiones son un punto del roadmap.

---

## Cinco meses, de 0.1.0 a 0.10.0

Octoweb empezó a finales de marzo como un experimento: ¿podía un navegador de teclado con una barra lateral ACP ser usable en una semana? Para la 0.6.0 ya tenía hibernación de pestañas y las primeras herramientas de automatización MCP. La 0.7.0 trajo sesiones de chat persistentes, passkeys y comandos slash. La 0.8.0 fue la grande — el arnés de accionabilidad, la suite e2e que prueba el navegador a través de su propio servidor MCP, el sandboxing del agente, atajos configurables, superficies A2UI. La 0.9.0, cortada a finales de julio, pasó a ACP v1.2.0 con autenticación de cuentas y una larga cola de trabajo de estabilidad. Y la 0.10.0 de hoy es lo que el uso diario le hace a un roadmap: pestañas fijadas, el tope de pestañas abiertas, un estado de cuota de cuenta que se refresca solo, mensajes de especialistas aterrizando en la barra lateral — más arreglos para una fuga de memoria y procesos de agente huérfanos, el tipo de cosa que solo encuentras dejándolo correr durante semanas.

Lo que empezó como un experimento es ahora el navegador en el que realmente vivimos. No va a sustituir a tu navegador principal este año — puede que se convierta en el que coges cuando quieres pensar.

---

## Consíguelo

Una línea en cualquier Mac, Apple Silicon o Intel:

```bash
brew install --cask muvon/tap/octoweb
```

O baja un archivo precompilado de [GitHub Releases](https://github.com/muvon/octoweb/releases), o compila desde fuente con una toolchain de Rust:

```bash
git clone https://github.com/muvon/octoweb
cd octoweb
./build.sh --dev        # ad-hoc signed, no cert needed
open dist/Octoweb.app
```

Para la barra lateral, instala [Octomind](https://octomind.run) e inicia sesión:

```bash
curl -fsSL https://raw.githubusercontent.com/muvon/octomind/master/install.sh | bash
octomind login
```

`octomind login` es un inicio de sesión por código de dispositivo en [Octomind Cloud](https://octomind.run/cloud) — la suscripción incluye el acceso a modelos, así que no hay nada más que configurar, y la barra lateral muestra tu cuenta y el estado de tu cuota. ¿Prefieres tus propias claves? Sáltate el login y exporta la clave de cualquier proveedor (`OPENROUTER_API_KEY`, `ANTHROPIC_API_KEY`, …) — BYOK es un camino de primera clase. En cualquier caso, eso es toda la puesta en marcha: lanza Octoweb, pulsa `⌘⇧A` y saluda — el navegador arranca y gestiona el proceso del agente por su cuenta. La configuración es un fichero TOML en `~/Library/Application Support/octoweb/config.toml`; los Ajustes son `⌘,`.

Octoweb está [en GitHub](https://github.com/muvon/octoweb) bajo Apache-2.0, como todo lo demás que enviamos. Si vives en el teclado, o tus agentes merecen un navegador de verdad en lugar de uno headless — pruébalo y [cuéntanos qué le falta](https://github.com/muvon/octoweb/issues). Las funcionalidades pedidas por los primeros usuarios son la razón de que la 0.10.0 no se parezca en nada a la 0.1.0.

— Don

_Octoweb es código abierto bajo Apache-2.0, desarrollado por [Muvon Un Limited](https://muvon.io). Corre sobre [Octomind](https://octomind.run), nuestro runtime de agentes de IA plug-and-play. Consíguelo en [GitHub](https://github.com/muvon/octoweb) — issues y pull requests bienvenidos._
