Depotwin
Open-source-платформа, сделана с Claude Code · Цифровой двойник автопарка в реальном времени
Живой 3D-цифровой двойник 240 смоделированных машин в Москве: конвейер на Go и NATS JetStream в TimescaleDB, модели отказов, предупреждающие о поломках за дни, копилот на локальной LLM поверх запросов только на чтение и приложение водителя, работающее без сети.

Задача
Панели автопарка показывают, где машины, но не то, что вот-вот сломается, а их оповещения и прогнозы редко сверяют с тем, что произошло на самом деле.
Решение
Потоковый конвейер в живой 3D-двойник, модели отказов, сравнённые с пороговыми правилами на незнакомых автопарках, LLM-копилот только с запросами на чтение и приложение водителя, работающее без сети, — всё измерено по скрытой эталонной разметке.
Под капотом
Перегрев замечен за 4,5 дня (правила: 3,0) с меньшим числом ложных тревог; 17 из 18 отложенных вопросов к копилоту — верно; 200 запросов в секунду без ошибок под нагрузкой; онлайн-демо и CI для каждой части.
Обзор
Depotwin — open-source-платформа, которую я сделал с Claude Code, чтобы показать систему реального времени целиком и измерить её по эталонной разметке. Симулятор на Go ведёт 240 фургонов, грузовиков и микроавтобусов по дорожной сети Москвы из OpenStreetMap, отправляет показания, как GPS-трекеры, и вносит неисправности: слив топлива, отказ термостата и аккумулятора, подмену GPS, ночные поездки. Что произошло на самом деле, публикуется отдельно, поэтому детекторы оцениваются, не видя этого.
Показания идут через NATS JetStream в TimescaleDB (13,4 млн записей в повторе — без пропусков и дублей при перезапусках) и дальше в 3D-двойник на React, MapLibre и three.js. Сервис оповещений на FastAPI находит неисправности по мере появления, а модели LightGBM на дневных признаках предупреждают о поломках: на незнакомых автопарках они заметили 156 из 157 перегревов за 4,5 дня до отказа против 3,0 дня у пороговых правил и с меньшим числом ложных тревог. Копилот на локальной Qwen 3.5 9B может вызывать только семь проверяемых запросов на чтение и показывает данные за каждым ответом; на 17 из 18 отложенных вопросов он ответил верно.
Водители пользуются приложением на Expo: смены, осмотры и сообщения о неисправностях с фото копятся без сети и уходят по порядку без дублей, а неисправность сразу видна в двойнике. Prometheus и Grafana следят за каждым этапом, правила оповещений покрыты тестами, а нагрузочный тест k6 нашёл, где API ломался; после исправлений он выдерживает 200 запросов в секунду без ошибок при 200 подключённых зрителях.
Что делает
- Моделирует на Go 240 фургонов, грузовиков и микроавтобусов на реальной дорожной сети Москвы (OpenStreetMap) с неисправностями и эталонной разметкой, которую работающая система не видит
- Передаёт показания через NATS JetStream в TimescaleDB и по WebSocket в 3D-двойник (React, MapLibre, three.js), в реальном времени или в повторе
- Предсказывает перегрев и разряд аккумулятора за дни с помощью LightGBM; локальная LLM (Qwen 3.5 9B) отвечает на вопросы на русском, английском и арабском через фиксированные запросы только на чтение
- Приложение водителя на Expo (React Native) работает без сети; в эксплуатации — Prometheus и Grafana, правила оповещений с тестами и нагрузочный тест k6
Что дальше
Ищете full-stack- или Python-разработчика — или нужно сделать что-то похожее? Давайте обсудим.
Открыт к предложениям: офис или гибрид в Москве, либо удалённо; полная занятость или контракт. Отвечаю в течение 48 часов, в Telegram — быстрее.