Сайд-проект · в работе · май 2026

Голос на линзах, Claude на сервере.

Личный AI-экзокортекс, доступный через смарт-очки Even Realities G2. Голосовой запрос на линзах, полный пайплайн идёт через самохостинговую инфраструктуру на сервере Fedora, всё маршрутизируется через Claude Max OAuth, так что потокенной оплаты API нет. Многоязычно с первого дня (английский, немецкий, русский, французский), с личной базой знаний, которая индексируется в фоне.

4 рабочих языка ~1-3 с Sonnet туда-обратно с линз $0 маржинальная стоимость API (Claude Max OAuth) 1 постоянно работающий сервис (Meridian) День 5 · базовый процесс завершён
Предпосылка

Разговор как основной ввод.

Сесть за ноутбук, открыть терминал, набрать вопрос; вся эта петля слишком тяжела для большинства того, что я хочу спросить у AI за день. Очки убирают петлю. Голос идёт через костный микрофон, через несколько секунд ответ живёт на линзах. Ни одно устройство не достаётся из кармана, ни одно приложение не открывается, нет переключения контекста.

Цель не заменить ноутбук для реальной работы; цель в том, чтобы вопросы на десять секунд действительно занимали десять секунд, а не минуту трения, из-за которой их никогда не задают.

Архитектура

Самохостинг, end-to-end.

Голос и отображение происходят на очках. Всё остальное работает на сервере Fedora дома. Очки достигают сервера через Tailscale, поэтому латентность ~6 мс даже когда я не за столом.

G2 glasses 16 shades green HUD Pixel 7 Tailscale node Fedora server Even Terminal :3456 patched Claude Code OpenKB 44 docs indexed Meridian Sonnet 4.6 router Notion notes / journal Asana tasks All endpoints reached via MCP, scoped per query
Очки G2                      (голос в, дисплей линз наружу)
    ↓ Bluetooth
Телефон Pixel 7              (компанион-приложение Even Realities)
    ↓ Tailscale (LAN, ~6 мс)
Сервер Fedora 43
    ↳ Even Terminal :3456     (мост от очков к Claude)
        ↳ Claude Code         (пропатчен: Sonnet по умолчанию, MCP в allowlist)
            ↳ CLAUDE.md       (единый источник правды для маршрутизации инструментов)
            ↳ openkb MCP      (личная база знаний, stdio FastMCP)
                ↳ openkb CLI
                    ↳ LiteLLM → Meridian :4000 → Claude Max OAuth
                        ↳ Sonnet 4.6
            ↳ Notion / Asana / Calendar / Gmail MCP
            ↳ opus-thinker     (субагент, на буквальное слово "opus")

Один systemd-юнит (Meridian) включён постоянно; всё остальное запускается по требованию. MCP-серверы это stdio-подпроцессы, которые Claude Code порождает при вызове инструмента; нет демона, нет порта, нет контейнера.

Что работает end-to-end

Проверено, на линзах.

Статус на день пять: каждый из этих путей чисто проходит от голосового запроса до отображения на линзах. Тег в скобках это сигнал модели + использования инструментов, который несёт каждый ответ, чтобы я всегда знал, какой путь обслужил запрос.

Прямой запрос к знаниям
[sonnet] · ~1-3 с
Голос на входе, Sonnet 4.6 отвечает из обучения, линзы показывают результат. Дефолтный путь для большинства вопросов.
Извлечение из личной KB
[sonnet + 1 tool call] · ~5-10 с
Явный вызов читает локальное openkb-вики: договоры, депозитарные документы, исследования, всё, что заиндексировано.
Запись в Notion голосом
[sonnet + 1 tool call]
«Сохрани это в Notion под X» создаёт страницу в правильном teamspace. Правила маршрутизации живут в CLAUDE.md.
Глубокое рассуждение по запросу
[opus субагент] · ~30-60 с
Буквальное слово "opus" в промпте эскалирует к субагенту claude-opus-4-7. Медленный намеренно, для тяжёлых вопросов.
Самовосстанавливающиеся сервисы
systemd
И Meridian, и Even Terminal перезапускаются автоматически. Логи стекают в journalctl. Закрытие крышки при питании оставляет машину работать.
Healthcheck шесть-из-шести
одна команда
Один скрипт проверяет все шесть подвижных частей: Even Terminal слушает, Meridian отвечает, openkb достижим, MCP зарегистрирован, claude CLI аутентифицирован, Tailscale поднят.
Тяжёло доставшиеся уроки

Вещи, которые стоили мне вечера.

Кеш аутентификации Петля 401 с протухшим токеном. Редактировать токен в компанион-приложении недостаточно; приложение кеширует сессии. Нужно force-stop приложения, открыть заново, заново вставить токен, прозондировать и сохранить. Без force-stop сотни 401 копятся в логе моста, а запросы с линз висят бесконечно.
systemd-тип Type=forking + tmux переживает restart. tmux-сессия юнита моста сохраняет аутентификацию через systemctl restart; можно патчить и перезапускать без повторного pair'а с телефоном. Type=simple делает обратное. Усвоено тяжело после четырёх повторных pair'ов.
Гигиена API-ключей Unset ANTHROPIC_API_KEY везде. Если она установлена в любой shell, LiteLLM молча обходит прокси Meridian и счёт идёт в реальное API. Весь смысл маршрутизации через Claude Max OAuth держать маржинальную стоимость в нуле; одна случайная env-переменная это сжигает.
Выбор модели openkb компилирует на Sonnet, не Haiku. Изначальный архитектурный документ говорил Haiku для шага компиляции вики. На практике Sonnet 4.6 даёт более сильное связывание концептов и более плотные межудокументные графы, а разница в скорости не важна для фонового задания.
Opt-in эскалация Opus только opt-in. Дефолт Sonnet ради скорости, эскалация к claude-opus-4-7 только когда промпт буквально содержит "opus" или "use opus". Каждый ответ несёт тег ([sonnet], [sonnet + N tool calls], [opus субагент]), чтобы было всегда понятно, какой путь отвечал.
Стек и статус

Честно о том, что в коробке.

Железо
Смарт-очки Even Realities G2 · телефон Pixel 7 · домашний сервер Fedora 43 · смарт-кольцо как вторичный биометрический захват. Tailscale-mesh между всем.
Модели
Claude Sonnet 4.6 по умолчанию (claude-sonnet-4-6), Claude Opus 4.7 (claude-opus-4-7) по opt-in. Оба маршрутизируются через Meridian, который говорит с Claude Max по OAuth.
Мост
Even Terminal (вендорный, патч на месте) на :3456. Патч идемпотентен и переживает npm-апгрейды.
Знания
openkb, самохостинговая личная KB с интерфейсом FastMCP stdio. Компилирует запрашиваемое вики из PDF, договоров, исследовательских заметок, журналов. Компилирует Sonnet 4.6.
Маршрутизация инструментов
Один CLAUDE.md автоматически подгружается в каждую сессию через --setting-sources=user,project. Явные правила: openkb только при явном вызове, Notion для «моих заметок», веб-поиск для актуальных событий, внутреннее для всего остального.
Постоянно вкл.
Один systemd-юнит (meridian.service, Type=simple). Всё остальное запускается по требованию.
Языки
Английский, немецкий, русский, французский, в живом использовании; юридический и налоговый корпус индексируется по ночам на каждом.
Что дальше
POV-видеозахват с линз в пассивную память; календарно-осведомлённый утренний-брифинг пайплайн; рой агентов личной жизни в духе DevSwarm, но для не-разработческой работы.