EnglishРусский Map

middleman

title
middleman
type
toolbox
summary
Local-first панель для ревью PR и issue в GitHub, GitLab, Forgejo и Gitea
tags
go, svelte, github, code-review, dashboard, local-first, kenn-software
language
Go
license
MIT
created
2026-05-22
updated
2026-05-22
lang
ru
translation_of
middleman
source_updated
2026-05-22
translated
2026-09-01
translator
lllm/antigravity/gemini-3.7-flash-medium

Local-first дашборд для мейнтейнеров, которые проводят ревью pull request'ов и issue по множеству репозиториев и не хотят тонуть в потоке почтовых уведомлений GitHub'а. Один бинарник на Go синхронизирует данные PR и issue в локальный SQLite и отдаёт быстрый UI на Svelte 5. Часть kenn-software-suite.

Что делает

Единая лента активности по всем вашим репозиториям - комментарии, ревью, коммиты - в виде плоского списка или тредов, с фильтрацией по временному диапазону (24h/7d/30d/90d), типу события, репозиторию и типу сущности. Из того же UI можно работать с PR'ами: оставлять комментарии, подтверждать (approve), мержить (выбирая стратегию коммита), снимать статус черновика (draft), закрывать/переоткрывать и отмечать элементы звёздочкой для быстрой фильтрации. Diff'ы отображаются прямо в интерфейсе: есть сворачиваемое дерево файлов, группировка по директориям, бейджи статуса и подсветка синтаксиса через Shiki. Локальная kanban-доска перемещает PR'ы по колонкам New/Reviewing/Waiting/Awaiting-Merge с помощью drag-and-drop - состояние доски хранится внутри middleman и не трогает метки в GitHub.

Поддержка нескольких провайдеров: GitHub, GitHub Enterprise, GitLab, Forgejo и Gitea. Действия, изменяющие данные, отображаются только тогда, когда провайдер сообщает об их поддержке.

Как устроен технически

Бэкенд на Go (~57%) плюс фронтенд на Svelte 5 / TypeScript, встроенный в бинарник. SQLite подключён через pure-Go драйвер modernc.org/sqlite, поэтому CGO не требуется; включён режим WAL. REST API построен на фреймворке Huma. Сервер по умолчанию слушает loopback (127.0.0.1:8091) - это персональный инструмент, а не общая инфраструктура. Поддерживается настраиваемый базовый путь для работы за reverse-proxy и корректное завершение работы (graceful shutdown) по сигналам SIGINT/SIGTERM.

Конфигурация по умолчанию лежит в ~/.config/middleman/config.toml: интервал синхронизации (по умолчанию 5 мин), адрес для прослушивания, параметры ленты активности по умолчанию, а также хост провайдера и токен для каждого репозитория. Токены индексируются по паре (provider, host), поэтому учётные данные для разных хостов (например, github.com и экземпляр Enterprise) не конфликтуют. Миграции находятся в internal/db/migrations/, встроены в бинарник и применяются при запуске через golang-migrate; состояние dirty migration требует удаления и повторного создания базы данных.

Встраивается двумя способами: как библиотека на Go через тип Instance (который предоставляет http.Handler), а фронтенд поставляется отдельно в виде пакета @middleman/ui для собственных сборок.

Базовое использование

make build          # needs Go 1.26+, plus Bun or mise for the frontend
./middleman         # starts the server, syncs, opens the UI on 127.0.0.1:8091

Упор на управление с клавиатуры: j/k для перемещения, 1/2 для переключения экранов, Escape для закрытия. Тёмная тема автоматически подстраивается под системные настройки с возможностью ручного переключения.

Ограничения

  • Работает только на loopback по задумке - инструмент не предназначен для использования в качестве командного сервиса.
  • Локальное состояние (колонки kanban, звёздочки, ссылки на worktree) нельзя восстановить, если миграция сломалась и пришлось пересоздавать базу данных.
  • Действия, изменяющие данные, заблокированы, если провайдер не сообщает о поддержке соответствующих возможностей.

Связанные страницы

  • forge - универсальный CLI/библиотека на Go от Nesbitt'а для того же набора forge-платформ; forge служит мостом для скриптов и агентов, а middleman - интерфейсом для человека.
  • roborev - инструмент непрерывного код-ревью от Kenn Software; дополняет его (roborev локально проверяет ваши собственные коммиты, а middleman разбирает чужие PR'ы на стороне forge-платформы).
  • kenn-software-suite - остальные инструменты набора.

Репозиторий

github.com/kenn-io/middleman - Go (1.26+) + Svelte 5, MIT, 110 звёзд, релизов с тегами пока нет. Никаких хостинг-сервисов, телеметрии или учётных записей.