RU /EN
Обсудить проект
Разработка · ML · Системы

Проект с нуля — до работающего продукта.

Беру сложные software- и ML-продукты целиком: от продуктовой задачи и архитектуры до backend, inference, нативного приложения и production-инфраструктуры. Один инженер отвечает за технический результат вместо цепочки несвязанных подрядчиков.

  • macOS · iOS · Linux · GPU
  • Swift · Rust · Python · Kotlin
  • MLX · CUDA · vLLM · Core ML

Избранные проекты

01 / 05
01

KRT Studio

Production-продукт

Единая self-hosted AI-студия: генерация и редактирование изображений, видео и аудио на собственных GPU, в одном интерфейсе.

Главный экран KRT Studio: сессии слева, сетка результатов от четырёх моделей в центре, справа AI-помощник, который развернул короткий запрос в подробный промпт, ниже параметры генерации и индикатор VRAM в шапке
Один интерфейс на все модальности. Справа AI Director: «Pomeranian with glasses» разворачивается в полный промпт локальной моделью Qwen3.5-4B. В центре — один и тот же запрос на четырёх моделях, каждый кадр подписан. Параметры и запас VRAM видны не покидая экран.
Зачем появился
Открытые модели живут в десятках отдельных веб-интерфейсов: у каждой свой запуск, свои параметры и своя история результатов. KRT Studio собирает их в один рабочий инструмент на собственном железе — без облачных API. Новая модель добавляется в существующую студию, а не поднимает очередной UI.
Что сделал
Продукт целиком, самостоятельно: архитектура, backend на FastAPI, собственный протокол и супервизор воркеров, model runtime с учётом VRAM, React-фронтенд, встроенный редактор изображений на 12 инструментов и очередь массовой генерации.
Что технически интересно
Каждая модель объявляет свои возможности и границы — шаги, guidance, разрешения, LoRA — а интерфейс показывает только те параметры, которые применимы к выбранной. Хранилище и база подключаются конфигом: S3, MinIO или локальный диск; PostgreSQL или SQLite. AI Director работает через любой OpenAI-совместимый endpoint, так что привязки к конкретному вендору нет нигде в цепочке.
Что получилось
40+ открытых моделей в одной студии: изображения, редактирование изображений, видео, музыка, TTS и звуковые эффекты. Общие сессии и проекты, перенос результата между image-, video- и audio-сценариями, batch-генерация и сравнение результатов.
  • 40+ моделей
  • image · video · audio · TTS
  • 12 инструментов редактора
  • VRAM-aware runtime
Frontend React 19 · TypeScript · Zustand · Fabric.js · Tailwind · Vite
Backend Python · FastAPI · asyncio · SSE · PyTorch (CUDA 12.8)
Infra worker supervisor · PostgreSQL / SQLite · S3 / MinIO / local disk

Реальный batch-прогон

Первый прогон дал 6 600 изображений на 11 моделях. Затем набор расширился до 17 моделей — весь массив генерировался через KRT Studio, длительные batch-задачи прошли без перезапуска процесса. Результат опубликован как открытый датасет и интерактивное сравнение: можно выбрать промпт и сравнить модели рядом.

600
промптов
17
моделей
10 200
изображений
~72 ч
генерации суммарно
Окно batch-генерации KRT Studio с прогрессом по каждой модели и промпту
Один из прогонов набора. Batch идёт в фоне: прогресс по каждой модели и каждому промпту, окно можно закрыть.
02

Recompose

Нативное приложение

Нативное OCR-приложение для macOS, которое восстанавливает документ, а не только распознаёт текст.

88
тестов на пайплайн
64
эксперта в MoE-декодере
Top-6
маршрутизация токенов
Зачем появился
Обычный OCR отдаёт поток текста: таблицы разваливаются, схемы теряются, структуру приходится собирать заново руками. Recompose возвращает документ: таблицы остаются таблицами, заголовки — заголовками, диаграммы переносятся вырезом.
Что сделал
Полный inference Unlimited-OCR на Swift и MLX: SAM Vision Encoder, CLIP-подобный Vision Encoder, Vision Fusion и MoE-декодер. Плюс сборка документа, экспорт и две поверхности — CLI и GUI.
Что технически интересно
MoE-декодер на 64 экспертов с Top-6 routing, полностью на native Metal runtime. В поставке нет Python: модель работает внутри приложения, а не рядом с ним.
Что получилось
Экспорт в DOCX, восстановленный PDF и searchable PDF. Из изображения документа получается настоящий редактируемый файл. 88 тестов.
  • 88 тестов
  • 64 MoE-экспертов · Top-6
  • текст · таблицы · диаграммы
  • без Python runtime
Stack Swift · MLX · Metal · Unlimited-OCR · DOCX / PDF
03

turna

Инфраструктура

Собственный TURN/STUN-сервер на Rust, созданный для закрытой системы видеосвязи, где нужен контролируемый networking stack вместо внешней инфраструктуры.

Клиент за NAT
STUN binding RFC 5389
TURN: выделение relay RFC 5766 · 8656
turna Rust
Production-путь
  • relay поверх UDP и TCP
  • батчевый I/O: recvmmsg / sendmmsg
  • long-term credentials, JWT, лимиты
  • session migration, graceful drain
Preview: за Cargo-фичами
  • DTLS · QUIC · WebTransport · TLS/TCP
  • io_uring · AF_XDP
  • кластеризация: gossip, hash ring
  • RFC 6062: обкатан меньше
gRPC control plane turnactl Prometheus OpenTelemetry состояние: in-memory / Tarantool
Зрелость фич в репозитории описана таблицей гарантий — включая то, чего сервер не обещает.
Зачем появился
Когда прямое соединение между устройствами невозможно, звонок идёт через relay. Проекту требовался relay, который разворачивается и контролируется самостоятельно — со своими лимитами, своей политикой доступа и без зависимости от чужого сервиса.
Что сделал
Протокольный слой, архитектура и эксплуатационный контур — самостоятельно: от разбора пакетов до Helm-чарта, gRPC control plane и CLI.
Что технически интересно
STUN binding и полный TURN allocation lifecycle по RFC 5389, 5766 и 8656, relay поверх UDP и TCP. Батчевый UDP I/O: SO_REUSEPORT-воркеры с recvmmsg/sendmmsg и арена-буферами на батч. Парсеры STUN и TURN под непрерывным фаззингом, весь unsafe-код инвентаризован и ограничен транспортом и relay.
Что получилось
Production GA 0.3.0 под Apache 2.0: Prometheus и OpenTelemetry, gRPC control plane и CLI turnactl, graceful drain, восстановление конфигурации и лимитов после перезапуска, Docker и Helm. Матрица зрелости в репозитории отделяет production-путь от preview-фич.
  • Rust
  • RFC 5389 · 5766 · 8656
  • непрерывный фаззинг парсеров
  • Production GA 0.3.0
Core Rust · STUN / TURN · UDP · TCP · Tokio
Ops gRPC · Prometheus · OpenTelemetry · Tarantool · Docker · Helm
04

Dictum

Нативное приложение

Локальная голосовая AI-утилита для macOS: диктовка, транскрибация, интервью и обработка текста без обязательного облака.

Микрофон пользователь
Системный звук собеседник
Core Audio Process Taps Aggregate Device IOProc realtime ring buffer
Разметка говорящих — по построению diarization-модель не нужна
Две дорожки пишутся раздельно, поэтому кто говорит — известно точно, без модели и без зависимости от акустики помещения.
Зачем появился
Голосовой ввод и расшифровка встреч обычно означают отправку звука на чужой сервер. Dictum делает то же самое на устройстве: распознавание и обработка текста работают локально, а облачная модель подключается только если она нужна самому пользователю.
Что сделал
GigaAM v3 через собственный MLX-порт, локальный Qwen для обработки текста и OpenAI-совместимый API как опция. Системная часть: глобальные горячие клавиши, Accessibility API, захват системного звука через Core Audio Process Taps и Aggregate Device, realtime ring buffer, собственный chunking, SQLite.
Что технически интересно
Микрофон — это пользователь, системный звук — собеседник. Источники разделены на уровне системы, поэтому режиму интервью не нужна отдельная diarization-модель: разметка говорящих получается из архитектуры захвата, а не из вывода ещё одной модели.
Что получилось
Диктовка в любое приложение, расшифровка встреч с разделением говорящих и обработка текста — на устройстве.
  • GigaAM v3 · MLX
  • Core Audio Process Taps
  • без diarization-модели
  • работает без облака
Stack Swift · MLX · Core Audio · Accessibility API · SQLite
05

ACE-Step Studio

Нативное приложение

Нативная macOS-версия музыкального сценария KRT Studio — отдельный lightweight-продукт для Apple Silicon.

~7,7 с
на 30 секунд музыки, M1 Max
~3,9×
быстрее реального времени
25 GB → ~400 MB
буферы VAE после tiled decoder
Prompt
Tokenizer bit-exact
Qwen3 3,39×10⁻⁵
Conditioning
DiT 4,35×10⁻⁵
VAE 25 GB → ~400 MB
Audio
подписи под этапами — расхождение с исходной реализацией
На VAE прямолинейный декод требовал около 25 GB буферов; tiled decoder срезал их до ~400 MB — именно это делает генерацию возможной на обычном Mac.
Зачем появился
KRT Studio — полноценная self-hosted платформа для собственного GPU-парка. Далеко не всем нужен сервер: ACE-Step Studio берёт из неё музыкальный сценарий и упаковывает в приложение, которое целиком работает на одном Mac.
Что сделал
Полный native pipeline на Swift и MLX: Prompt → Tokenizer → Qwen3 → Conditioning → DiT → VAE → Audio. Портирование, runtime и приложение.
Что технически интересно
Пошаговая проверка соответствия исходной реализации: tokenizer bit-exact, Qwen3 — 3,39×10⁻⁵, DiT — 4,35×10⁻⁵, индексы токенизатора совпали 50 из 50. Tiled decoder срезал VAE buffer cache с 25 GB до ~400 MB.
Что получилось
~7,7 с на 30 секунд музыки на M1 Max — примерно ~3,9× быстрее реального времени, локально и без сервера.
  • ~7,7 с / 30 с аудио
  • ~3,9× realtime
  • 25 GB → ~400 MB
  • Swift + MLX
Stack Swift · MLX · Metal · ACE-Step · Qwen3 · DiT · VAE

Не начинаю с технологии

Сначала разбираю продуктовую задачу и ограничения. Иногда правильное решение — большая ML-модель. Иногда — обычный алгоритм без ML. Архитектура выбирается под результат, а не наоборот.

Recompose
Сложный multimodal ML действительно нужен: восстановить структуру документа по изображению без модели не получится.
timesense
LLM не нужен и вреден. Календарной автоматизации нужна детерминированность: одинаковая фраза обязана давать одинаковое событие каждый раз. Словари и регулярные выражения это гарантируют, модель — нет.
Dictum · режим интервью
Отдельная diarization-модель не нужна: микрофон — это пользователь, системный звук — собеседник. Источники разделены на уровне системы.

Что делаю

Лучше всего подхожу для задач, где готового решения нет или его недостаточно.

Product Engineering

От сырой продуктовой идеи до работающего приложения: архитектура, backend, native- или web-клиент, deployment и production.

Applied ML

Inference, fine-tuning, LoRA, RAG, embeddings и reranking, multimodal-пайплайны и встраивание моделей в реальные продукты.

Native / Local AI

Перенос Python- и PyTorch-моделей в native runtime, MLX и Core ML, квантизация, конвертация и inference без облачного API.

Systems Engineering

Rust, распределённый backend, сетевые протоколы, realtime-системы, GPU-инфраструктура и высоконагруженные сервисы.

Open source и остальная работа

T2I Model Comparison

Открытое сравнение text-to-image моделей на одном наборе промптов: не подборка удачных кадров, а полный прогон с опубликованным результатом

  • 600 промптов
  • 17 моделей
  • 10 200 изображений
gigaam-v3-mlx

Native GigaAM v3 inference для Swift и MLX на Apple Silicon — распознавание русской речи целиком на устройстве

timesense

Детерминированный парсер естественного языка для дат, событий и повторов — без LLM и без ML. «каждый второй вторник в 18:30 ретро» → структурированное событие, RFC 5545 rrule или готовый .ics. Русский и английский, zero-dependency, меньше 1 мс на фразу.

VaultGuard

Менеджер паролей с открытым исходным кодом: локальный файл KeePass (.kdbx) вообще без сервера или любой Bitwarden / Vaultwarden-совместимый сервер — собственный или облачный. Автозаполнение, TOTP, биометрия, пиннинг сертификата. Apache 2.0.

Beta · отправлено на ревью в App Store

Как работаю

  1. 01

    Разбираю продуктовую задачу

    Не начинаю с выбора framework или модели.

  2. 02

    Проектирую решение

    Определяю MVP, архитектуру, стек, модель, ограничения и критерии результата.

  3. 03

    Реализую

    Самостоятельно беру ключевые инженерные части: backend, ML, native runtime, инфраструктуру — в зависимости от проекта.

  4. 04

    Довожу до продукта

    Тестирование, packaging, deployment, публикация, эксплуатация.

Ширина инженерии

Native apps ·ML inference ·Fine-tuning / LoRA ·RAG ·Model conversion ·Realtime audio ·Networking ·Distributed backend ·GPU infrastructure ·Document reconstruction

Обо мне

Антон Крутилин. В коммерческой разработке с 2011 года, архитектором — с 2019. Сейчас архитектор стрима в одном из двух крупнейших банков страны; архитектурный контур стрима — 60+ человек. Помимо самостоятельной разработки продуктов работаю архитектором крупных enterprise-систем и принимаю архитектурные решения в стриме такого масштаба.

KRUATECH — независимая инженерная студия. Один инженер закрывает значительную часть технического пути продукта: product architecture, backend, ML, нативное приложение и инфраструктуру. Для стартапа это большой объём engineering без необходимости сразу собирать полноценную техническую команду.

Коммерческая разработка
с 2011
Архитектура
с 2019
Текущий масштаб
стрим 60+ человек
Инженерия
Product · ML · Systems
Код
Swift · Rust · Python

Можно работать и в одной команде

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

Обсудить роль →
  • Architecture
  • ML / Inference Systems
  • Product / Systems Engineering

Есть задача? Давайте разберём её.

Можно прийти с готовым ТЗ или просто с продуктовой идеей. Помогу определить, что действительно нужно построить, выбрать архитектуру и довести решение до работающего продукта.

Для предложений о работе →