amigo@fps:~$ ls projects/

Проекты

То, что я собрал — примерно в порядке того, сколько жизни на это ушло.

Ocelotiq — AI-шлюз

OpenAI-совместимый API-шлюз. Одна точка входа, много провайдеров: направляешь на неё свой существующий OpenAI-клиент и получаешь GPT-4o, Claude, Gemini или Llama, не трогая код.

  • Единый REST-слой, приводящий запросы и ответы разных провайдеров к общему виду.
  • Аутентификация, управление API-ключами и квоты на ключ.
  • Маршрутизация с выбором провайдера по доступности, задержке и цене.
  • Аналитика по токенам, тратам, ошибкам, времени ответа и аптайму.

Python · PostgreSQL · Docker · Linux

ocelotiq.ru ->

Chaff — туннельный протокол

Свой протокол и клиент-серверная реализация на Rust. IP-трафик передаётся внутри браузерных сессий на порту 443 — TLS 1.3 + HTTP/2 либо QUIC. Фингерпринт рукопожатия и форма запросов соответствуют Chrome.

  • Два транспорта на одном порту: HTTP/2 поверх TCP и QUIC DATAGRAM поверх UDP. Режим auto пробует UDP, при недоступности переключается на TCP.
  • Пакеты кодируются в потоки загрузки ассетов и аналитические биконы. Собственные заголовки не передаются; идентификатор линка закодирован в хеше пути запроса.
  • Аутентификация Ed25519 в составе cookie. При неверном ключе соединение проксируется на сайт-приманку.
  • ChaCha20-Poly1305, ключи привязаны к TLS-экспортеру соединения. Скользящее окно защиты от повтора на 2048 позиций. Ротация ключей в канале в TCP-режиме, в QUIC — штатные key updates.

Производительность

Кодек собирает пакеты в записи по 16 КБ — один HTTP/2 DATA-фрейм и одна TLS-запись. Коалесинг адаптивный: при мелкой очереди пакеты отправляются без задержки, на объёмной передаче добавляется до 1 мс батчинга; ICMP и голые ACK не задерживаются. Ключевое расписание строится один раз на поток, шифрование выполняется на месте.

Трафик разделён на два класса: интерактивный обслуживается отдельной очередью перед объёмным, в обоих направлениях. Контроль перегрузки задаётся по направлению: BBR на загрузке, CUBIC на отдаче.

MTU пути определяется по текущей ёмкости соединения на каждом пакете; при нехватке пакет фрагментируется. Трафик распределён по четырём параллельным линкам с закреплением TCP-потока за линком, фрагменты одной датаграммы передаются по одному линку. Глубина очередей и размеры буферов рассчитаны от BDP канала.

пропускная способность, QUIC234 Мбит/с
пропускная способность, TCP110/84 Мбит/с
задержка под нагрузкой95 мс при 68 мс в покое
джиттер, интерактивный трафик5,5 мс
потери, интерактивный трафик под нагрузкой1,5 %
кодек, одно ядро9,5 Гбит/с

Rust · TLS 1.3 · HTTP/2 · QUIC · TUN · ChaCha20-Poly1305

Исходники закрыты.

Робототехника и автоматизация

Работа в Indrobo: ПО для робототехнических платформ и линий промышленной автоматизации.

  • Управляющее ПО и интеграция датчиков, контроллеров и встраиваемых устройств.
  • Инфраструктура для развёртывания и обслуживания оборудования на объектах.

Rust · C/C++ · Python · Linux

Трекинг тела (FBT)

Самодельная система full-body tracking, собранная с нуля — потому что готовые стоят дороже, чем я был готов отдать.

  • Собственная схемотехника на инфракрасных передатчиках и приёмниках.
  • Прошивка и свой протокол связи между узлами.

C · embedded · разводка плат

Остальное

Что помельче — лежит на GitHub. Если что-то из этого интересно, напиши мне.