~ / проекты / platform-for-one

Platform for One_

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

Local LLM LiteLLM Python Laravel 12 n8n MCP Ansible Grafana
36 ГБ один ноутбук, не сервер
49 ток/с локальная модель 30B
49 / 49 документов разобрано по схеме
1 200+ тестов платформы
6 каналов публикации
Читать build log

// архитектура

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

$ cat platform.yml
  web ui    automation    finance app    scripts
     │           │             │            │
     └───────────┴──────┬──────┴────────────┘
                        │  one key per client
                 model gateway   roles · caps · ledger
                 ┌──────┴───────┐
        local runtime      cloud roles
        (laptop GPU)       (capped, opt-in)

01. Шлюз моделей

Роли вместо имён моделей, ключ на клиента, потолок расхода на роль. Роль без fallback — единственный способ сказать «никогда в облако» настройкой, а не обещанием.

02. Локальный рантайм

Мультимодальная модель 30B работает нативно на GPU ноутбука. Квантование KV-кеша дало окно 65 536 токенов за 0,3 ГБ памяти.

03. Платформа заданий

Задачи с арендой, повторами и уборщиком осиротевшей работы; менеджер песочницы — единственный держатель сокета контейнеров.

04. Хаб, который не спит

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

// что она делает

Платформа окупается на настоящей работе, а не на демо.

01. Финансовые документы без интернета

  • ▶ 49 из 49 настоящих счетов и выписок разобраны строго по схеме за 15 минут, без сети
  • ▶ 13 из 13 номеров счетов точно — после повышения разрешения рендера
  • ▶ Номера карт маскируются до записи; неоднозначная дата сверяется с банком, а не угадывается

02. Агенты по расписанию

  • ▶ Сессии агента-кодера запускает хаб — с токеном, которому открыты только нужные заданию инструменты
  • ▶ Карточки ошибок из трекера: девять проектов дают 2 карточки на 69 нерешённых ошибок — решает порог, а не модель
  • ▶ Предложения по бюджету на месяц строятся из агрегатов, сырые операции наружу не уходят

03. Конвейер публикаций

  • ▶ Коммиты и отчёты становятся кандидатами в посты; агент-редактор берёт не больше трёх из пачки
  • ▶ Линтер отклоняет любой текст, из которого торчит инфраструктура
  • ▶ Без моего «Утвердить» в личке не уходит ничего: Telegram, X, сайт на двух языках, Dev.to, Threads

04. Деньги под контролем

  • ▶ Потолки на клиента и на роль, алерты на 50, 80 и 100 процентах, проверка раз в пять минут
  • ▶ Закрытая роль для рутинных задач откатывается на локальную модель, а не падает
  • ▶ Каждый облачный вызов оценён в журнале; цена потоковых берётся из книги шлюза

// откуда я знаю, что работает

Фича сделана, когда её чек-лист приёмки пройден наблюдением — код ответа, строка на экране, запись в базе, — и чек-лист помнит, на каком коммите.

01. Сначала спека

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

02. Самотест

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

03. Честные числа

В build log остаются и провалы: бенчмарк, который измерял сам себя, тест, который нельзя провалить, три таймаута, вложенные не в ту сторону.

// стек

Модели
llama.cpp · Metal
Qwen3-VL 30B (MoE)
Шлюз LiteLLM
Whisper (локально)
Платформа
Python · FastAPI
PostgreSQL · Redis
Docker Compose
launchd
Продукты поверх
Laravel 12 · Filament
Inertia · React
Сценарии n8n
Серверы MCP
Эксплуатация
Ansible · SOPS
Traefik · WireGuard
Loki · Prometheus · Grafana
GitHub Actions