У Octoweb теперь свой дом — и он по-прежнему работает на ваших моделях, а не на наших
Три недели назад мы представили Octoweb — клавиатурный WebKit-браузер, в котором сами тихо жили с марта. Реакция оказалась лучше, чем мы ждали, и к ней прилагался один вопрос, заданный в полудюжине разных интонаций:
То есть он работает только с вашим облаком, да?
Предположение справедливое. Сайдбар работает на Octomind — так же называется и наше платное облако. В посте было написано «установите Octomind и войдите в аккаунт», и разумный читатель делает вывод, что браузер — это воронка: сменить браузер — значит начать арендовать модель у нас.
Не значит и никогда не значило. То, что ответ не был очевиден, — наш провал в документации, и начинается он с URL: страница продукта жила по адресу octomind.run/product/octoweb, а такой адрес говорит это фича той штуки, за которую вы платите ещё до того, как вы прочитали хоть слово.
Так что сначала мы исправили URL, а потом переписали объяснение.
Octoweb теперь живёт на octoweb.xyz. Бесплатно, Apache-2.0, macOS 13+, без аккаунта. И браузер ни разу в жизни не обращался к провайдеру моделей — в нём просто нет такого кода.
Новый дом
- TABГорячие клавиши — все биндингиoctoweb.xyz/shortcuts⌘1
- TABMCP-сервер — 29 инструментов для вашего агентаoctoweb.xyz/mcp⌘2
- ИСТОРИЯЧто браузер хранит и что отправляетoctoweb.xyz/privacy⌘3
Это командная палитра — ⌘⇧P — с нечётким поиском по открытым вкладкам и истории; в Octoweb именно так вы и попадаете куда угодно. Заодно это честное превью сайта, потому что сайт — в основном справочник, а не маркетинг:
- /shortcuts — все 48 биндингов в шести группах, включая те, что существуют только внутри палитры и поля ИИ-промпта.
- /mcp — все 29 MCP-инструментов, сгруппированные по назначению, с конфигом для копипасты в Claude Code, Claude Desktop и Cursor.
- /privacy — куда на диске ложится каждый файл, что слушает на loopback, и честная оговорка, что на сайте стоит Google Analytics, а в браузере телеметрии нет вообще.
- /blog — короткие продуктовые заметки. Этот пост остаётся на muvon.io, а там будут жить релиз-ноты.
Статический сайт на SvelteKit в Cloudflare, пререндер, никаких клиентских запросов — тот же стек, что и у страницы, которую вы читаете. Занял вечер. Надо было сделать его ещё в марте.
Собственно ответ: чья это модель?
Вот то, что три недели назад стоило написать прямым текстом.
Сайдбар Octoweb — не чат-клиент. Когда вы нажимаете ⌘⇧A, браузер поднимает дочерний процесс — octomind acp octoweb:assistant в песочнице — и разговаривает с ним по Agent Client Protocol. Все вызовы моделей в системе делает этот процесс. Прогрепайте 36 000 строк Rust-кода браузера в поисках HTTP-запроса к провайдеру моделей — не найдёте, потому что его там нет. Браузер умеет отрисовать разговор. Что такое OpenAI, он не знает.
Это важно, потому что весь вопрос «какая модель» сдвигается на один процесс влево — в конфиг Octomind, где он умещается в одну строку:
[model]
name = "octohub:auto" # Octomind Cloud, one key, we route it
# name = "anthropic:claude-opus-5"
# name = "openrouter:qwen/qwen3-coder"
# name = "local:qwen3-coder-30b" # your box, your GPU, your electricity
Модель всегда задаётся как provider:model — имя без префикса не угадывается, а отвергается. За этими префиксами octolib — слой провайдеров, общий для всех инструментов Muvon, — сейчас резолвит 28 штук: openrouter, openai, anthropic, google-vertex, google-studio, groq, cerebras, deepseek, fireworks, together, xai, moonshot, minimax, nvidia, amazon, cloudflare, zai, alibaba и остальные.
Два префикса из этого списка — то, ради чего написан этот пост:
local:смотрит на любой OpenAI-совместимый сервер, по умолчанию наhttp://localhost:11434/v1/chat/completions. Из коробки это Ollama; задайтеLOCAL_API_URL— и это LM Studio на 1234, LocalAI на 8080 или машина с vLLM у вас под столом. С машины не уходит ничего.cli:управляет уже установленным у вас агентским CLI —codex,claude,cursor,gemini— как будто это эндпоинт модели. Если вы за что-то из этого уже платите, сайдбар может этим пользоваться, и второй счёт не появится.
И ключи никогда не попадают в конфиг. octomind config --api-key откажется сохранять ключ: учётные данные читаются из окружения, затем из пользовательского .env, затем из .env проекта. Ваш ключ Anthropic лежит там же, где и все остальные ваши ключи.
Где здесь Octomind Cloud: это простой путь, а не обязательный. octomind login — вход по коду устройства, как gh auth login. Он записывает один секрет — OCTOHUB_API_KEY, — а дальше модель по умолчанию octohub:auto маршрутизирует каждый вызов по назначению (основной, супервизор, сжатие) на подходящую модель на нашей стороне. Один ключ вместо шести, один лимит трат, за которым можно следить, и бесплатный тариф для старта. Мы считаем, что это выгодно, — поэтому так и стоит по умолчанию. А чтобы это перестало быть вашей конфигурацией, достаточно поправить девять символов в TOML-файле. Плашка аккаунта в сайдбаре — закрываемое уведомление, а не шлагбаум.
Тег в заголовке сайдбара редактируется, так что одно и то же окно может минуту говорить с octoweb:assistant, а в следующую — с вашим собственным агентом developer:rust. А с 0.14.0 это поле автодополняется тегами, которые ваш локальный Octomind действительно знает, — вбивать их вслепую больше не нужно.
Три недели, четыре релиза
После вводного поста Octoweb выпустил версии с 0.11.0 по 0.14.0 — 62 коммита. Две вещи изменили ощущение от работы.
Рабочие пространства (⌘⇧O). Изолированные профили — и изолированные по-настоящему: у каждого пространства свои вкладки, своя история, свои ИИ-сессии, свой MRU-порядок, свои слоты быстрого доступа и свой WKWebsiteDataStore, так что cookie, localStorage и кеш никогда не пересекаются. Два аккаунта на одном сайте, залогинены одновременно, без театра с инкогнито. Это та фича, о необходимости которой мы не подозревали — до того дня, когда нам перестал быть нужен второй браузер под клиентский проект.
- ⌘1personal14 вкладок
- ⌘2client-acme6 вкладок▶ meet.google.com
- ⌘3agent-scratch2 вкладкиMCP
MCP теперь маршрутизируется по пространствам. Единственный сервер на localhost:3434/mcp читает токен X-Octoweb-Workspace и работает только внутри указанного профиля. То есть агент может управлять фоновым пространством — под черновым аккаунтом, на своих cookie, — пока вы работаете в своём, и случайно забрести в вашу сессию он не может. Манифест возможностей идёт дальше: без токена он вообще не отдаёт сервер клиенту, вместо того чтобы по умолчанию подставить пространство, которое сейчас на экране.
Остальное коротко — и всё это в ваших руках, а не в наших:
- Доверенный нативный ввод. Клики и нажатия из MCP теперь — настоящие
NSEventиз AppKit, доставленные вWKWebViewвкладки: страница видитisTrusted=true, полноценный пользовательский жест, рабочий:hoverи нативные действия по умолчанию. Работает на скрытых фоновых вкладках и не крадёт у вас фокус. Синтетические DOM-события никогда не давали всех четырёх сразу. - Каждое действие отвечает тем, что изменилось. Любой вызов инструмента возвращает однострочную сводку эффекта — навигация, смена URL в SPA, новый текст на экране, диалоги, сетевая активность, перемещение фокуса — или прямо говорит «наблюдаемых изменений нет». Агенту больше не нужно жечь целый ход на перечитывание страницы, чтобы понять, сработал ли клик. По дороге чувствительные параметры запросов вычищаются из отчёта о сетевой активности.
- Загрузки наконец есть. Рантайм-патч заставляет WebKit учитывать
Content-Disposition: attachmentне только в главных фреймах, но и в сабфреймах — именно так работает Google Drive, — а имя скачанного файла попадает в сводку эффекта, даже если страница не сказала ни слова. browser_dismiss_overlay. Убирает cookie-баннеры и баннеры согласия, причём предпочитает Отклонить — соглашаться за вас он не станет.- A2UI v1.0. Агент может отрисовать в сайдбаре настоящий интерактивный интерфейс с привязкой данных и валидацией — карточки, формы, списки выбора, слайдеры, модальные окна — и ждать до получаса, пока вы на что-нибудь нажмёте. Действия с последствиями должны идти именно через него: сначала спросить, потом делать.
- Вкладки с живым медиа. Переключатель пространств показывает, в каких вкладках играет звук или видео и где занят микрофон, — так что встреча, оставленная включённой в другом профиле, находится, а не преследует вас.
Две вещи, в которых мы ошиблись в августе
Правило у нас такое: если прошлый пост ошибся, следующий об этом говорит.
Глобальные шорткаты не работают через CGEventTap. Мы написали, что работают, — код ушёл с него ещё в мае. CGEventTap требует разрешения Accessibility в macOS, а просить у штуки в форме браузера доступ уровня кейлоггера — плохой размен ради фичи, которую никто не просил. Вместо этого Octoweb использует локальный монитор NSEvent из AppKit: ноль разрешений и честные границы — клавиши он видит, только пока Octoweb на переднем плане. «Системные» — неправильное слово для правильного решения.
Passkeys там нет. В августовском посте WebAuthn стоял в списке уже готовых базовых вещей. Коммит, который его добавлял, откатили в мае, а мы не заметили этого до публикации. В 0.14.0 его нет.
Ещё две мелкие поправки, раз уж мы здесь: в MCP-сервере 29 инструментов, а не 26 — с тех пор появились browser_fill_form, browser_dismiss_overlay, browser_get_playing_tabs и render_ui. А «около 25 000 строк» — это теперь 35 972.
Забирайте
brew install --cask muvon/tap/octoweb
macOS 13 или новее, Apple Silicon или Intel, без аккаунта. Или соберите сами — нужен Rust-тулчейн и примерно минута:
git clone https://github.com/muvon/octoweb
cd octoweb
./build.sh --dev
open dist/Octoweb.app
Без единой настройки ИИ Octoweb остаётся браузером: палитра, слоты, рабочие пространства, поиск по странице, блокировка контента, гибернация вкладок. Сайдбару нужен установленный рядом Octomind, а дальше выбор модели — решение в одну строку: octomind login для нашего облака или экспортированный ключ и строка provider:model для всего остального. Мы пользуемся и тем, и другим на разных машинах — смотря какая работа и какая вокруг сеть.
Всё под Apache-2.0: браузер, рантайм, слой провайдеров. Если запустите его на локальной модели и что-то окажется медленнее или тупее, чем должно быть, — заводите issue: этот путь тестируется меньше облачного, и починить это можно только вашими сообщениями.
— Don
Octoweb — открытый код под Apache-2.0, разработан Muvon Un Limited. Теперь он живёт на octoweb.xyz, работает на Octomind и дружит с любой моделью, на которую вы его направите. GitHub — issues и pull request-ы приветствуются.



