Публичные проекты

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

Большинство этих проектов я начинал прежде всего для себя — потому что существующие решения оказывались слишком тяжёлыми, неудобными, зависимыми от облачных сервисов или просто не совсем подходили под мою задачу.

Некоторые проекты уже можно использовать в повседневной работе. Другие продолжают активно меняться, а часть остаётся исследовательскими экспериментами без гарантии, что когда-нибудь превратится в законченный продукт.

Основные проекты

Верстак

Локальное рабочее пространство для проектов, клиентов, серверов, заметок, файлов и истории работы.

Обзор рабочего пространства Верстак

Информация о длительной работе почти всегда оказывается разбросана по разным местам: файлы лежат в каталогах, решения — в заметках, ссылки — во вкладках браузера, задачи — в отдельном менеджере, пароли — ещё где-нибудь, а часть контекста остаётся только в памяти.

Верстак пытается собрать всё это в одном локальном рабочем пространстве.

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

Данные хранятся в локальном вольте и остаются под контролем пользователя. Файлы и заметки не запираются в облачном сервисе или проприетарной базе: они остаются обычными файлами, доступными и без Верстака.

Для локальной работы не нужны регистрация, учётная запись или подключение к интернету.

Основные возможности

  • организация работы по Делам;
  • обычные файлы и каталоги внутри вольта;
  • Markdown-заметки и связи между ними;
  • обзор недавней работы и материалов, требующих внимания;
  • задачи внутри отдельных Дел и на уровне всего вольта;
  • журнал выполненной работы и история активности;
  • общая корзина с возможностью восстановления;
  • защищённое хранение данных доступа;
  • шаблоны повторяющихся рабочих структур;
  • отправка страниц, ссылок, текста и файлов из браузера;
  • расширяемая система плагинов;
  • необязательная синхронизация через собственный сервер.

Верстак состоит не только из настольного приложения. В проект также входят SDK для разработки плагинов, набор официальных плагинов, расширение для браузера, сервер синхронизации и отдельная документация по архитектуре.

Статус: активная разработка, альфа; публичная линия 0.1.x. Форматы хранения и программные интерфейсы пока могут изменяться.
Платформы: Linux и Windows; выпускаются DEB, AppImage и Windows ZIP.
Технологии: Go, Wails 2, Svelte 4, TypeScript/JavaScript.
Лицензия: AGPL-3.0-or-later.

Ссылки:
Релизы ·
Документация ·
Исходный код ·
Сообщить об ошибке


MirvMon

Self-hosted-система мониторинга серверов и небольшой собственной инфраструктуры.

Главный экран MirvMon

MirvMon предназначен для ситуации, когда одному администратору нужен понятный обзор собственных серверов без развёртывания большого enterprise-стека мониторинга.

Нативные агенты сами отправляют данные на сервер по HTTPS, поэтому наблюдаемым машинам не нужны входящие порты или белые IP-адреса. MirvMon хранит историю метрик и доступности, показывает текущее состояние серверов, фиксирует инциденты и позволяет управлять мониторингом из единого веб-интерфейса.

Основные возможности

  • мониторинг Linux и Windows нативным агентом на Go;
  • исходящие HTTPS-соединения от агентов;
  • метрики CPU, памяти, дисков, сети, нагрузки, температуры и других параметров;
  • наблюдение за сервисами и процессами;
  • история метрик, доступности и графики;
  • группы серверов и оперативные сводки по группам;
  • пороговые значения, уведомления и режим обслуживания;
  • Incidents / Events с активными проблемами и историей восстановления;
  • установка и обновление агентов непосредственно из веб-интерфейса;
  • отдельные совместимые сборки для старых Windows-систем;
  • диагностика самого MirvMon, базы данных, фоновых worker’ов и очереди уведомлений;
  • append-only журнал административных действий с защитой от попадания секретов;
  • русский и английский интерфейс;
  • Docker-развёртывание и работа за reverse proxy.

Статус: активная разработка; текущая линия релизов 0.4.x.
Платформы: сервер — Docker; агенты — Linux и Windows.
Технологии: PHP, Slim, Twig, FrankenPHP, PostgreSQL, TimescaleDB, Go, Bootstrap, Chart.js.
Лицензия: MIT.

Ссылки:
Инструкция по установке ·
Скриншоты ·
Исходный код ·
Сообщить об ошибке


sshkeeper

Консольный менеджер SSH-подключений, маршрутов, секретов и туннелей.

Терминальный интерфейс sshkeeper

sshkeeper не заменяет OpenSSH, а организует работу с ним: хранит информацию о серверах в локальной SQLite-базе, секреты — в зашифрованном vault, а для подключения использует системный ssh.

Основной интерфейс — TUI на Bubble Tea. Для скриптов и автоматизации те же данные доступны через CLI.

Основные возможности

  • профили SSH-серверов, группы и теги;
  • авторизация по ключу, через ssh-agent, по паролю и с passphrase;
  • зашифрованное локальное хранилище секретов;
  • ProxyJump и цепочки jump-host’ов;
  • Local, Remote и SOCKS port forwarding;
  • управление запущенными SSH-туннелями;
  • шаблоны команд;
  • поиск по серверам, маршрутам и портам;
  • импорт существующего ~/.ssh/config;
  • генерация OpenSSH-конфигурации;
  • TUI и полноценный CLI.

Статус: активная разработка; текущая линия релизов 0.3.x.
Платформы: Linux amd64/arm64 и macOS amd64/arm64; Windows amd64 — экспериментально.
Технологии: Go, Bubble Tea, Cobra, SQLite, OpenSSH.
Лицензия: MIT.

Ссылки:
Релизы ·
Руководство ·
Скриншоты ·
Исходный код ·
Сообщить об ошибке


Burned Ground

Браузерная пошаговая артиллерийская стратегия с разрушаемым ландшафтом.

Бой в Burned Ground: разрушенный ландшафт и попадание Heavy Missile

Проект вдохновлён классической DOS-игрой Scorched Earth, но написан с нуля и не использует ресурсы оригинальной игры.

В основе — артиллерийский бой с углом и мощностью выстрела, ветром и изменяемым рельефом. Взрывы оставляют воронки, грунт естественно осыпается, танки могут падать вместе с землёй или оказаться засыпанными.

Основные возможности

  • пошаговые многопользовательские артиллерийские бои;
  • детерминированно генерируемый разрушаемый ландшафт;
  • естественное осыпание и насыпание грунта;
  • урон от падения и возможность засыпать танк землёй;
  • ветер и широкий диапазон мощности выстрела;
  • 19 видов оружия: от обычных ракет до MIRV, Death’s Head, Leapfrog, Funky Bomb и земляных зарядов;
  • щиты, парашюты и ремонтные комплекты;
  • боты нескольких уровней сложности;
  • настраиваемые публичные и приватные комнаты;
  • наблюдатели и чат;
  • регистрация, профили игроков, история матчей и статистика;
  • рейтинг Elo и таблица лидеров;
  • переподключение к продолжающемуся бою;
  • Docker-развёртывание и health endpoint.

Статус: Alpha, активная разработка.
Платформы: клиент — современный веб-браузер; сервер — Node.js или Docker.
Технологии: Node.js, Express, Socket.IO, Phaser 3, SQLite.
Лицензия: AGPL-3.0-only.

Ссылки:
Исходный код ·
Сообщить об ошибке


Web Writer

Self-hosted веб-приложение для написания, организации, хранения и публикации больших художественных текстов.

Редактор Web Writer

Web Writer создавался как самостоятельный инструмент для работы с книгами и рассказами без привязки к сторонним издательским платформам и облачным редакторам.

Приложение позволяет организовывать книги и серии, работать с главами и короткими рассказами, публиковать материалы и предоставлять к ним публичный доступ.

Основные возможности

  • книги и серии книг;
  • главы и отдельные короткие рассказы;
  • WYSIWYG-редактор;
  • автосохранение текста;
  • изменение порядка глав drag-and-drop;
  • обложки книг и данные авторов;
  • публикация и публичные ссылки по токену;
  • авторские страницы;
  • экспорт в PDF, DOCX, HTML и TXT;
  • интерактивное содержание экспортируемых книг;
  • управление пользователями и администраторами.

Web Writer не претендует на роль большой издательской платформы. Это инструмент для автора или небольшой группы авторов, которым важно хранить тексты на собственном сервере и самостоятельно управлять публикацией.

Статус: работоспособный проект; текущая реализация развивается и проходит техническую и UX-ревизию.
Платформа: self-hosted Web.
Технологии: PHP, MySQL, Bootstrap, Quill.js, Sortable.js, PhpWord, TCPDF.
Лицензия: AGPL-3.0-only.

Ссылки:
Инструкция по установке ·
Лицензия ·
Скриншоты ·
Исходный код ·
Сообщить об ошибке

Исследовательские проекты

TOS — TextOS


Загрузка экспериментальной операционной системы TOS

Экспериментальная операционная система, исследующая идею системы, в которой исходное дерево является установленной системой.

Главная идея TOS заключается в том, что установленный компонент системы должен оставаться доступным в виде исходного текста, который владелец компьютера может прочитать, изменить, проверить и снова загрузить. Скомпилированный код, IR, индексы, boot-образы и другие бинарные артефакты рассматриваются как производные результаты, а не как самостоятельная версия установленной системы.

Идентичность работающей системы привязана к коммиту репозитория. Это позволяет рассматривать ОС как версионируемое дерево исходного кода: создавать собственные ветки, сравнивать состояния, откатывать изменения и воспроизводить известную версию системы.

Одновременно проект исследует, как совместить такую модель владения системой с безопасностью: проверяемым происхождением производных артефактов, fail-closed проверками, capability-моделью и строгими контрактами между компонентами.

Что уже реализовано

  • загрузочная основа для x86_64 и UEFI;
  • запуск и автоматическая проверка системы в QEMU/OVMF;
  • воспроизводимые загрузочные и системные артефакты с проверкой происхождения;
  • TOS Core V1 и рабочий тракт frontend → IR → verifier → runtime;
  • системные интерфейсы и capability-ограниченные операции;
  • межпроцессное взаимодействие;
  • монотонное системное время;
  • аппаратная вытесняющая многозадачность и round-robin scheduler;
  • одновременное существование нескольких пользовательских процессов;
  • первые системные компоненты, написанные непосредственно на TOS Core;
  • автоматизированный набор архитектурных, conformance и release-gates.

TOS всё ещё остаётся исследовательской операционной системой. У неё пока нет полноценного пользовательского окружения, обычного набора программ или цели немедленно заменить Linux, Windows и другие зрелые системы.

Сейчас работа смещается от доказательства отдельных базовых механизмов к построению из них собственной системной среды.

Статус: исследовательская разработка; активный Stage 3.
Платформы: x86_64, UEFI, QEMU/OVMF.
Технологии: Rust, TOS Core, UEFI, QEMU, OVMF, Git.
Лицензия: GPL-3.0-or-later для системной реализации; Apache-2.0 для публичных интерфейсов и SDK; CC-BY-SA-4.0 для документации; Unicode-3.0 для включённых данных Unicode.

Ссылки:
Исходный код ·
Документация ·
Ход разработки ·
Сообщить об ошибке


Barrymore

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

Barrymore исследует идею постоянного локального помощника, который не привязан к одной языковой модели или одному coding agent. Личность, память, состояние дел, правила безопасности и решения принадлежат собственному runtime; локальную модель или внешнего исполнителя можно заменить, не начиная работу заново с пустого контекста.

Основной пользовательский интерфейс — «Приёмная»: обычный разговор, в котором служебные сущности вроде нитей и поручений по возможности остаются скрытой инфраструктурой. Barrymore сам связывает разговор с текущими делами, предлагает новые нити, фиксирует память и может либо выполнить безопасное действие собственным инструментом, либо предложить поручить работу внешнему агенту.

Что уже реализовано

  • разговорный интерфейс с локальной моделью через llama-server;
  • долговечные асинхронные ходы разговора с отображением живого прогресса;
  • нити, память и восстановление состояния между запусками;
  • автоматическое обнаружение и supervision локального llama-server;
  • собственные безопасные умения Barrymore для простых действий без вызова внешнего агента;
  • делегирование Hermes, OpenCode и другим установленным агентам;
  • объяснимый выбор исполнителя и модели;
  • read-only запуск поручений через bubblewrap;
  • контролируемая запись: исполнитель изменяет изолированную копию каталога, а изменения применяются к рабочему дереву только после решения владельца;
  • накопление опыта по способам работы и отключение повторяющихся неудачных способов;
  • подключение незнакомых инструментов через безопасное исследование их собственной справки;
  • сквозные API- и browser E2E-проверки настоящего сервера.

Проект уже выполняет полный контур делегирования на реальных агентах, но остаётся исследовательским: ещё не закончены удалённый доступ, внешние интеграции и отдельная модель репутации исполнителей.

Статус: активная исследовательская разработка; базовые этапы 0–8 реализованы.
Платформа: Linux; проверяется на Debian 13.
Технологии: Go, SQLite, systemd, bubblewrap, llama.cpp / llama-server, Playwright.
Лицензия: пока не указана в репозитории.

Ссылки:
Исходный код ·
Текущее состояние ·
Документация ·
Сообщить об ошибке


PerfectWorld

Экспериментальная система процедурного построения связного мира для Luanti и Mineclonia.


Поселение, созданное PerfectWorld в Mineclonia

PerfectWorld исследует возможность создавать не отдельные случайные здания, а связный мир: регионы, хутора, деревни и города, дороги, мосты, здания, население и специализации, зависящие от окружающей местности.

При планировании учитываются рельеф, вода, почва, лес, камень и другие особенности территории. Поселения получают специализацию, которую должна поддерживать окружающая среда: например рыболовство, земледелие, лесное хозяйство или добычу камня.

Здания описываются декларативными схемами. Сейчас каталог содержит десятки схем и несколько архитектурных стилей. Дороги пытаются следовать рельефу, обходить препятствия, пересекать воду, использовать мосты и тоннели или заканчиваться причалом там, где сухопутный путь продолжить невозможно.

Проект проверяется не только синтетическими тестами: отдельные инструменты физически генерируют участки мира и измеряют, что действительно увидит игрок. Это выявило класс проблем, которые обычные тесты планировщика раньше скрывали.

Что уже реализовано

  • детерминированное деление мира на регионы;
  • планирование хуторов, деревень и городов;
  • экологический выбор места для поселения;
  • 61 декларативная схема зданий в пяти архитектурных стилях;
  • специализации поселений и население из жителей Mineclonia;
  • региональная сеть дорог;
  • мосты, тоннели, причалы и городские ворота;
  • серверный интерфейс восприятия мира для автономного игрока;
  • автоматическое тестирование и проверки на реальном сгенерированном мире;
  • инструменты измерения качества генерации.

Что остаётся исследовательской задачей

Генератор уже способен создавать настоящие поселения с улицами и несколькими зданиями, но связный процедурный мир остаётся сложной задачей.

Часть запланированных мест всё ещё не удаётся материализовать из-за геометрии участков, склонов и конфликтов с дорогами. Реальные проверки также выявляют здания, до входа которых нельзя пройти по правилам игрового pathfinding.

Эти проблемы измеряются и воспроизводятся, но не все из них имеют простое локальное исправление. Поэтому PerfectWorld по-прежнему остаётся исследовательским проектом, а его архитектура может заметно меняться.

Статус: исследовательская разработка; рабочий генератор с известными нерешёнными проблемами геометрии и доступности.
Платформа: Luanti / Mineclonia.
Технологии: Lua, Luanti, Mineclonia, Docker, Python.
Лицензия: MIT.

Ссылки:
Текущее состояние ·
Документация ·
Исходный код

Другие разработки

Помимо основных проектов, в моих публичных репозиториях находятся небольшие утилиты, старые программы, скрипты системного администратора, проекты для Arduino, эксперименты с 3D-печатью и другие разработки.

Некоторые из них больше не поддерживаются. Другие создавались для решения одной конкретной задачи и не оформлялись как полноценные продукты.

Я сохраняю их открытыми: возможно, кому-нибудь пригодится исходный код, отдельная идея или описание найденного решения.

Все публичные репозитории

Об этих проектах

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

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

Сообщения об ошибках, предложения и практический опыт использования приветствуются. Даже простой рассказ о том, что проект удалось установить и применить в реальной работе, помогает понять, куда его развивать дальше.