Обновить
512K+

Open source *

Открытое программное обеспечение

764,65
Рейтинг
Сначала показывать
Порог рейтинга

Представлен открытый проект Liquid Glass. Это решение добавляет жидкое стекло от Apple в веб‑продукты и приложения. Проект помогает создавать полупрозрачные кнопки, панели и другие элементы с реалистичным преломлением фона. Работает в Chrome, Firefox, Safari и Electron.

Теги:
+3
Комментарии4

Разработчик Радиум Ванг запустил Doom на камере Hasselblad X2D стоимостью $8000 в рамках открытого проекта с прошивкой Hasselblad X-System CIM Firmware Research & Feature Extensions.

Камера Hasselblad X2D оснащается 3,6-дюймовым экраном, позволяющим бегать по уровням и целиться во врагов. Экран устройства сенсорный, а для игровых действий можно использовать экранные элементы управления, а также физические кнопки (например, можно стрелять, нажимая на кнопку затвора камеры).

Теги:
+1
Комментарии0

NanoMuse 

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

Это важный сдвиг в восприятии подобных решений. Закрытый SaaS обычно предлагает набор функций, а open-source-репозиторий позволяет отдельно посмотреть на архитектурные решения, ограничения и границы применимости. NanoMuse не обязательно воспринимать как универсальную замену существующим инструментам. Скорее, это практический материал для тех, кто хочет разобраться, как могут быть устроены кросс-девайсные AI-агенты.

Что здесь представляет интерес

У агента, который работает с телефоном и компьютером, есть несколько связанных задач:

  • взаимодействовать с интерфейсами разных устройств;

  • передавать контекст между ними;

  • выполнять действия в соответствии с поставленной целью;

  • сохранять понятные границы ответственности и контроля.

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

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

Как подходить к проверке

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

Перед запуском стоит отдельно ответить на несколько вопросов:

  1. Какие права нужны агенту на телефоне и компьютере?

  2. Какие данные передаются между устройствами и где они хранятся?

  3. Можно ли ограничить набор доступных действий?

  4. Как остановить выполнение сценария и вернуть систему в безопасное состояние?

  5. Какие операции требуют обязательного подтверждения человека?

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

Кому стоит изучить репозиторий

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

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

Итог

NanoMuse стоит рассматривать не как универсальный SaaS с заранее заданным способом работы, а как открытый пример кросс-девайсного AI-агента. Его ценность — в возможности изучить идею на практике, развернуть проект в контролируемом окружении и адаптировать его под собственные сценарии автоматизации.

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

Ссылки

Теги:
-3
Комментарии0

Представлен открытый проект Papermorph — скилл для Claude, чтобы усилить пользовательский опыт чтения, например, с помощью преобразования PDF в интерактивную веб‑книгу:

  • можно загрузить PDF, а дальше Claude сам создаст план книги, сториборды, озвучку, анимации и даже квизы для лучшего запоминания

  • в результате будет полноценный интерактивный учебный проект.

Теги:
+6
Комментарии0

Rhun: что даёт редактор кода на ассемблере

Rhun — open-source редактор кода, написанный на ассемблере. Уже этого достаточно, чтобы посмотреть на проект не как на ещё одну замену привычной IDE, а как на инженерный эксперимент: что происходит с повседневным инструментом, если собрать его на максимально низком уровне?

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

Что обычно скрывает редактор

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

В ассемблерном проекте эти детали становятся частью архитектуры. Нужно отдельно решить:

  • как хранить текст и положение курсора;

  • как обрабатывать ввод и навигацию;

  • как связать изменения документа с перерисовкой;

  • как работать с памятью и ресурсами;

  • какие части зависят от конкретной платформы.

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

Почему это интересно разработчику

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

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

  1. Где заканчивается логика редактирования и начинается интерфейс?

  2. Что даёт контроль над памятью и ресурсами?

  3. В каких местах низкий уровень увеличивает сложность?

  4. Что произойдёт при переносе на другую платформу?

Ответы на них помогают лучше понимать любой developer tool — даже если в итоге вы продолжите работать в привычной IDE.

Цена контроля

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

Это особенно заметно в трёх местах:

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

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

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

Кому стоит посмотреть Rhun

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

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

Вывод

Rhun не обязательно оценивать по вопросу «заменит ли он привычный редактор». Важнее то, что проект показывает редактор без привычной магии готовых слоёв. За вкладками, курсором и перерисовкой видны конкретные инженерные решения — и их цена.

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

Ссылки

Теги:
+3
Комментарии5

Представлен открытый проект Spotifast — проработанный и оптимизированный клиент для Spotify на Rust для ПК на Linux, macOS и Windows, который занимает 100–250 МБ ОЗУ при работе. В решении доступны плейлисты, поиск, подкасты и управление музыкой на других устройствах через Spotify Connect. Можно редактировать подборки и слушать музыку в фоне после закрытия окна. Примечательно, что есть скины от Winamp, эквалайзер и визуализации.

Теги:
+3
Комментарии2

Команда ArtCraft выпустила 7 открытых приложений для работы с картинками, видео, векторной графикой, фотографиями, PDF, анимацией и вёрсткой для замены сервисов Adobe.

Весь набор написан с нуля на Rust для Windows, macOS и Linux. Интерфейс приложений и хоткеи сделаны максимально привычными для пользователей Adobe. При этом приложения не обязательно устанавливать — можно использовать в браузере.

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

Теги:
+7
Комментарии5

Навайбкодил Плиточки

Плиточки - небольшая панель быстрого запуска для Windows: сетка плиток с ярлыками, папками и вкладками, встроенный гибкий поиск и мини-проводник с консолью и избранными командами. Один портативный EXE, без установки, из зависимостей только .NET Framework 4.8.
Очевидный рефернс с пуска win10 - попытался взять лучшее, добавить функционала, убрать недостатки, добавить свои недостатки, максимально шустро
Tilettes repo

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

Функционал

Панель — плитки 1×1…6×6, неограниченные вкладки (несколько рядов, полный кастом), папки внутри вкладки или всплывающим окном, drag-and-drop из Проводника, настраиваемая сетка (колонки/строки/прозрачность), масштаб иконок, цветная аура иконок.
Дополнительные строки позволяющие слайдить вниз основной панели, если не хватает места

Легковестность и открытый код
Один портативный exe на C# ~0.5 МБ, все данные в папке, ~30 МБ памяти.
Иконка извлекается из системы ровно один раз за жизнь плитки.
Быстрый, индексированный поиск.
Единственный сетевой запрос к github проверка обновлений, опционально.
Код собирается через github actions.

Поиск
По именам, именам файлов, метаданным, полным путям и пользовательским описаниям.
Делает полное зеркало обычного Пуска(для поиска).
Fuzzy-поиск с настраиваемой точностью и корректный поиск на неправильной раскладке (руддщ → hello).
Результаты ранжируются по качеству совпадения, совпавшие символы подсвечиваются, повторные запросы получают свой раздел для поиска

Мини-проводник
Для меня частый сценарий быстро зайти куда то написать команду/несколько команд поэтому на отдельное сочетание ctrl+пкм открывается мини проводник с встроенной консолью и набором избранных команд.
Сочетания ctrl+пкм можно заменить на другой файловый менеджер или консоль.

Интеграция с системой

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

Попробовать

Хотел скриншотов побольше сделать, но похоже из-за песочницы больше 1 мне дает добавить.

Разработка вышла сложнее чем ожидал, но результат приятно выглядит.
Возможно есть какие то мелкие недоработки - Issues.

Теги:
+3
Комментарии0

В открытом доступе появился открытый проект Visual Basic Browser Studio — классическая среда разработки (IDE) Visual Basic 6 (VB6), работающая непосредственно в браузере.

Примечательно, у разработчика этого проекта Веслава Шолтеса есть также решение SharpForge — браузерная IDE для C#, вдохновленная современной Visual Studio.

Теги:
+9
Комментарии0

Представлен открытый проект SCSKiller, который помогает заранее компилировать шейдеры в кэш игрового драйвера на движке Unreal Engine 5, чтобы игры не подвисали, готовя очередную сцену. Проект сам находит игры из Steam, Epic, Xbox и других лаунчеров, а после обновления драйвера умеет повторять подготовку. Работает на Windows с Nvidia и AMD: поддерживает DirectX 12, а на Nvidia ещё и DirectX 11. По тестам автора на RTX 5090, число задержек в Star Wars Jedi: Survivor сократилось с 9038 до 11, в Hogwarts Legacy — с 1014 до 87, а в Final Fantasy VII Rebirth — с 19 до нуля.

Теги:
+3
Комментарии0

Представлен открытый проект netboot.xyz — универсальный установщик netboot на Jinja. Проект работает так:

  • установить программу на флешку.

  • далее установщик подключит ПК к интернету и предложит установку нужной системы.

  • на выбор есть Linux, Windows 7/8/10/11, Fedora и другие ОС

  • дальше проект скачает и установит чистую систему.

Теги:
+3
Комментарии0

Прикручивал свой diff к git и прошелся по граблям

Я пишу небольшую утилиту datadiff на Rust. Она разбирает два файла JSON, YAML, CSV, TOML или XML и сравнивает получившиеся деревья, поэтому переставленные ключи и переформатирование ее не волнуют. Изменения она печатает путями вроде spec.replicas: 3 → 5. Долго это была отдельная команда, про которую надо было вспомнить, так что я решил встроить ее прямо в git diff. Первой версией была строчка в README: шелл-функция, которая из семи аргументов, передаваемых git внешнему драйверу, брала второй и пятый (там лежат старая и новая версии файла). Работало, пока не попался первый кривой файл.

git diff до и после datadiff
git diff до и после datadiff

Оказалось, git считает любой ненулевой код выхода падением драйвера. Пишет fatal: external diff died и дальше ничего не показывает, все файлы после сломавшегося просто пропадают из вывода. А datadiff как нормальный CLI возвращал 1, если нашел различия, и 2 на невалидном файле. Хуже всего, что невалидный конфиг это обычное состояние: открыл YAML, начал править, запустил git diff глянуть что наделал, и получил fatal. Теперь в режиме драйвера datadiff всегда выходит с нулем, а про файл, который не смог разобрать, печатает короткую заметку и подсказку про git diff --no-ext-diff.

Внешний драйвер git вызывает только для самого git diff. git log -p, git show и git blame его игнорируют, туда можно попасть только через textconv, это фильтр, который превращает файл в текст перед обычным построчным сравнением. Я сделал для него режим normalize, он печатает файл в каноническом виде с отсортированными ключами. Если файл не разбирается, normalize отдает его как есть, и тут я накосячил: читал его через read_to_string(...).unwrap_or_default(). Файл не в UTF-8 превращался в пустую строку с обеих сторон, git видел две одинаковые пустоты и молча выкидывал файл из git log -p. Сейчас там чтение байтов и тест на это.

Самые обидные грабли нашлись не в git, а в CSV. В статье на Хабре про самодельный формат конфигов автор объяснял, зачем ему маркер «бери как есть»: чтобы 00544 не превратилось в 544. Я пошел проверять datadiff, и он делал ровно это. CSV типов не хранит, поэтому каждая ячейка, которая разбиралась как число, становилась числом, и замена 00544 на 544 считалась отсутствием изменений. Пока чинил, вылезло еще два случая. Слова, которые f64 честно принимает за число, вроде Nan и inf: человек по имени Nan превращался в NaN, а NaN не равен сам себе, так что неизменившаяся ячейка показывалась как измененная. И целые длиннее i64: они уходили во float и теряли цифры, так что два 20-значных номера счета, отличавшиеся последней цифрой, сравнивались как равные. Правило в итоге такое: ячейка становится числом, только если при этом ничего не теряется. Ведущий ноль перед цифрой, слова вроде nan и inf и слишком длинные целые оставляют ее строкой, а 100 и 100.0 по-прежнему равны. Это вошло в релиз 0.4.1.

Еще запомнился CI. После одного коммита на Windows падал actions/checkout, даже до сборки не доходило. Виноват был файл Icon\r, в нем macOS хранит кастомную иконку папки, в конце имени у него возврат каретки, и он случайно уехал в репозиторий. Windows создать такое имя не может вообще. Тесты при этом падали через раз на всех трех ОС, потому что дочерний процесс успевал завершиться раньше, чем тест дописывал ему stdin, и unwrap ловил EPIPE. Сам проект тут: https://github.com/dimanovikov/datadiff настройка для git в README занимает три строки.

Теги:
+3
Комментарии0
redb
redb

redb 4.2.0: единый контракт трассировки, коннектор AS4 и семь шаблонов проектов

Вышла 4.2.0 сразу по четырём продуктам экосистемы: хранилище redb, интеграционный фреймворк redb.Route, рантайм redb.Tsak и OpenID-сервер redb.Identity.

Коротко о главном.

Безопасность. В Identity выход из сессии теперь действует на сессию самого браузера: userId в запросе больше не выбирает, кого разлогинить. Полный выход отзывает не только сессии, но и гранты. Отозванный ключ подписи больше не предлагается никому по построению, а не по порядку регистрации. В Tsak модуль с http-входом, у которого никто не проверял учётные данные, теперь просто не стартует. В Route ssl=true у RabbitMQ honoured на всех путях подключения, включая именованные фабрики, где TLS не включался вовсе.

Ломающее. Трассировка стала единым контрактом в ядре, и ему следуют все транспорты: спаны приёма стали корневыми, сообщение без контекста открывает свой корень, имена спанов несут назначение. Форма трасс меняется на полутора десятках коннекторов, от Kafka и RabbitMQ до gRPC, SOAP, AS2 и AS4. Очереди seda: и vm: ограничены по умолчанию тысячей, как в Camel. Типизированное чтение заголовка или тела падает на непарсящемся значении вместо тихого значения по умолчанию.

Новое. Коннектор AS4 (eDelivery AS4 1.16 поверх ebMS 3.0) рядом с AS2.

Коллекция из семи шаблонов проектов redb.Templates. Входная аутентификация Basic и Bearer на http:-потребителях и Rest(...).

тут страничка с чего начать

RedbQuery умеет вернуть один объект, количество или да/нет, фильтровать и сортировать по базовым полям.

Полный текст выпуска со всеми ломающими изменениями и ссылками на релизы: redb 4.2.0.

Если было полезно, ⭐ на GitHub поможет другим это найти.

Теги:
+3
Комментарии0

Ближайшие события

Представлен клон MS Word — открытый проект под названием EdenText для работы с docx‑ и dot‑документами прямо в браузере. Возможности проекта:

  • автоматическая нумерация, колонтитулы, оглавление, сноски, поля и прочее.

  • можно устанавливать стили абзацев, таблиц и других элементов.

  • возможности по работе с таблицами и даже формулы как в Excel.

  • вставка изображений и подписей к ним.

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

  • работает без интернета, без регистрации и без лицензионных ключей.

Теги:
+5
Комментарии0

Открытый проект Unofficial search plugins позволяет искать торренты прямо в qBittorrent. Это каталог поисковых плагинов, которые подключают торрент-сайты к самому клиенту. Можно выбрать нужные источники и искать по нескольким местам сразу с помощью одного запроса. В списке проекта есть Rutor, Nyaa, The Pirate Bay и даже Academic Torrents с научными данными.

Теги:
+4
Комментарии0

Представлен открытый проект proxy-scraper для выявления в сети открытых сервисов прокси, которые работают штатно и более менее безопасно.

«Большинство списков бесплатных прокси на 95% состоят из нерабочих адресов, а значительная часть оставшихся — это либо „ловушки“ (honeypots), либо прокси, внедряющие скрипты в загружаемые вами страницы. Инструмент proxy‑scraper собирает публичные прокси (HTTP, SOCKS4 и SOCKS5) из более чем 700 источников и сохраняет только те, что успешно проходят все проверки. При каждом запуске программа анализирует эффективность источников, а полученный результат может преобразовать в единый ротируемый прокси‑адрес. В цифрах: за одни сутки было проверено 3,6 миллиона бесплатных прокси — работоспособными оказались 1,1%, причём более половины из тех, что ответили на первый запрос, не прошли проверку повторным запросом», — пояснил создатель проекта.

Теги:
+7
Комментарии0

Представлен открытый проект Terminal Velocity (tvty) — двадцать агентов ИИ, работающих в циклах (loop). В центре внимания — задачи (тикеты). Одно окно. Никаких поисков нужной вкладки.

«tvty — для тех, кто хочет вести разработку с Claude на максимальной скорости. Это нативный терминал для одновременного запуска множества агентов Claude Code: терминалы сгруппированы по проектам, а тикеты каждого проекта находятся прямо рядом с ними — агент задаёт вопрос, вы принимаете решение, работа продолжается. Почему это удобно Одно окно вместо двадцати вкладок. Видны все проекты, все агенты и то, что требует вашего внимания: принятие решения, непрочитанный ответ или тикет, блокирующий остальные задачи. Терминал каждого агента работает в реальном времени. Прямая привязка к сессии, высокая скорость, никаких лишних прослоек вроде tmux. Переключение одним нажатием клавиши или выбор из миниатюр, отображающих текущее состояние всех окон. Тикеты — рядом с терминалом. Планы, решения, эскалации, изображения: принимайте, отклоняйте или отвечайте, не отрываясь от клавиатуры», — пояснил автор решения.

Теги:
+1
Комментарии0

Как проверить, что после обновления АТС люди слышат друг друга — без двух телефонов и тестировщика

Сделал расширение для k6, где абоненты - объекты в скрипте: звонят друг другу через АТС и проверяют АОН, переводы и слышимость. Один скрипт — и регресс в CI, и нагрузка на тысячи звонков. Под картинкой - настоящий вывод: лесенка SIP сигнализации одного звонка из trace() и метрики расширения.

Подробно, со схемами звонков и разбором «под капотом» — в статье: https://habr.com/ru/articles/1086816/

Теги:
+5
Комментарии0

Сравнение redb.Route.Redis и Redis в MassTransit

была статья недавно и меня спросили, отвечаю
это разные вещи, которые решают разные задачи. Прямого «один в один» аналога нет.

1. Роль Redis

redis
redis

2. Философия

  • MassTransit — это message bus.
    Redis здесь — просто быстрый key-value store для хранения состояния саг.
    Основные транспорты — RabbitMQ, Azure Service Bus, SQS, Kafka, SQL и т.д.
    Redis не является транспортом сообщений.

  • redb.Route — это EIP-роутер в стиле Apache Camel.
    Redis становится полноценным endpoint’ом:
    From(Redis.XRead(...)) → .To(Redis.Set(...)) → .To(Redis.Publish(...))
    Всё в одном декларативном маршруте с единым подключением, телеметрией и shutdown.

3. Ограничения MassTransit Redis

  • Поддерживает только корреляцию по CorrelationId (нет query-based correlation).

  • Нужен интерфейс ISagaVersion (поле Version для optimistic concurrency).

  • Optimistic (по умолчанию) и Pessimistic concurrency.

  • Поддерживает Valkey (форк Redis).

  • Нет встроенной поддержки Redis Streams, Pub/Sub или очередей на списках как транспорта.

Краткий вывод

  • MassTransit Redis = быстрый и удобный saga store.

  • redb.Route.Redis = Redis как полноценный интеграционный endpoint (кэш, события, стримы, очереди, Claim Check).

Они почти не пересекаются по назначению.
Если вам нужны саги в MassTransit .
Если вам нужно активно работать с разными структурами Redis внутри маршрутов  redb.Route.Redis намного богаче и удобнее.

Теги:
+3
Комментарии0

Представлен открытый проект NextSteamGame, который помогает выдавать рекомендации по играм в Steam. В отличие от алгоритмов Valve, в этом проекте считываются не только пересечения предпочтений других игроков, а и метаданные каждого тайтла. Специальная нейросеть разбирает проект на набор механик и жанров, после чего ищет совпадения в других играх.

Теги:
+4
Комментарии0

Бывший дизайнер Google и Apple Робби Тилтон представил бесплатный аналог Photoshop — фоторедактор Compositor. Решение имеет высокий уровень оптимизации, установщик приложения для Mac весит всего 8 МБ, и проект не нагружает систему.

Теги:
+3
Комментарии0

Энтузиаст портировал популярный эмулятор ретро-компьютеров PCem в браузер. Неофициальный проект PCem-WebAssembly позволяет запускать 97 моделей ПК — от первых машин эпохи 8088 XT до систем на базе Socket 7. Эмуляция работает полностью на стороне клиента, обеспечивая плавный игровой процесс на среднебюджетных компьютерах.

Главным техническим достижением стал кастомный рекомпилятор WebAssembly для графики 3dfx Voodoo, благодаря которому трёхмерные игры вроде Quake выдают полную скорость прямо в окне браузера. Кроме того, порт получил умную систему работы с накопителями, лениво считывающую локальные образы дисков без их полной загрузки на сервер.

Проект PCem — WebAssembly Edition поддерживает нативную работу с геймпадами, вывод звука через WebMIDI и даже встроенный мультиплеер через WebSocket-ретранслятор, позволяющий играть по виртуальной сети с другими пользователями или между вкладками.

Теги:
+11
Комментарии0

В команде Cloudflare представили скилл Security Audit Skill, который учить нейросети искать уязвимости. Проект запускает целый рой агентов, которые ищут разные уязвимости в проекте, а затем другие ИИ-агенты перепроверяют все находки и отбрасывают ошибочные срабатывания. В итоге получается полноценный ИБ-отчёт с обнаруженными проблемами.

Теги:
+1
Комментарии0
redb 4.0.1
redb 4.0.1

redb 4.0.1: транзакции, изоляция кластеров и SQL-коннектор по канону Camel

Через неделю после мажора 4.0 вышла 4.0.1. Первые внедрения четвёртой версии принесли много обратной связи, и этот выпуск её отрабатывает: больших новых функций немного, зато заметно выросла надёжность под нагрузкой и в транзакциях. Все четыре продукта снова на одном номере, 77 пакетов.

redb.Core

  • Всё, что redb делает внутри общей транзакции .NET (TransactionScope), теперь фиксируется или откатывается вместе с ней, на MSSQL, PostgreSQL и SQLite.

  • Ленивые загрузки идут по соединению того, кто читает, без скрытых соединений.

  • Кэш Props держит нагрузку, а объекты по списку идентификаторов загружаются одним запросом.

  • Нативное расширение SQLite сверяет свою версию при старте и называет устаревший файл, если он попался.

redb.Route

  • Единица работы стала предсказуемой: сначала фиксируется база, потом брокеры, а повтор оборачивает транзакцию целиком. Необработанный сбой везде остаётся сбоем, обработка ошибок ведёт себя как в Apache Camel.

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

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

  • LLM-агенты учитывают побочные эффекты инструментов, сохраняют рассуждения модели, считают бюджет и стоимость.

  • На обмене появилась личность вызывающего, общая для всех входящих транспортов.

redb.Tsak

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

  • Модуль, который не смог стартовать, откатывается на работавшую версию, а перезагрузка одного пакета не задевает соседние модули контекста.

  • Дашборд снова обновляется сам и отправляет действия на узел нужного кластера.

redb.Identity

  • API управления больше не считает вызов доверенным только потому, что он пришёл изнутри процесса.

  • Одно DPoP-доказательство нельзя использовать дважды даже при одновременных запросах.

  • Транзакции маршрутов идут в общей транзакции, а недоступность базы больше не вызывает бесконечных повторов.

Что учесть при обновлении

  • Tsak: если на одной базе живут несколько кластеров, перед обновлением остановите все узлы этой базы.

  • Route: параметры в SQL-запросах переходят на синтаксис Camel, а единица работы и обработка ошибок стали строже. Это стоит проверить на своих маршрутах.

Pro по-прежнему бесплатен и не требует ключа. Полные списки изменений на redb.ru/releases, исходники на GitHub.

Если было полезно, ⭐ на GitHub поможет другим это найти.

Другие мои статьи — redb.ru/articles, ещё — на Хабре.

Теги:
-2
Комментарии0

Модульный фреймворк для гибкого тестирования на Go — Testo

Если у вас десятки тысяч тестов, сложные сценарии, а тестам не хватает наглядных отчетов – наше опенсорс-решение может вам помочь

Testo — это слой над testing.T внутри экосистемы Go. Мы наполнили его плагинами, чтобы гибко адаптироваться под потребности и быстро создавать тесты под любую задачу.

Что ещё может Testo

1. Параметризировать тесты.

2. Параллелить тесты.

3. Собирать тесты в Suite'ы.

4. Формировать Allure-отчёты.

5. Перезапускать упавшие тесты.

И многое другое, благодаря плагинам.

Больше информации о функционале и ссылка на GitHub — на страничке фреймворка.

Теги:
0
Комментарии1

В команде AlphaXiv представила открытый проект OpenResearch, который превращает любого ИИ‑агента в автономного исследователя:

  • ИИ‑агенту нужна только цель — он сам изучит литературу, проведёт эксперименты и сделает выводы;

  • несколько сабагентов будут проверять все возможные гипотезы одновременно;

  • работает с Claude Code, Cursor, Codex и Open Code локально на Windows, macOS и Linux.

Теги:
+2
Комментарии1

Ввиду вполне взрослого возраста в 25 лет у проекта haiku OS, у меня появилось желание попробовать его, как что-то более минималистичное, чем все эти современные монстры. С наскоку, опробовать эту поэтическую операционку не удалось, ввиду нетрадиционного образа, выложенного на ее сайте. Её создатели используют, некий универсальный формат, который не был понят ни моим старым ноутбуком Lenovo X200s с легаси загрузчиком, ни более современными на Radeon 4-х или 5-и тысячных серий, с UEFI биосами. Поэтому были созданы два варианта образов для загрузки, соответственно старым и новым биосом.

Создание загрузочной флэшки для legacy

Ссылка на готовый образ: https://github.com/Fabmicro-LLC/HaikuOS/releases/download/R1Beta6/haiku-r1beta6-x86_32_mbr.img

(Все последующие команды выполняются от рута)

  1. Скачать с сайта haiku iso anyboot 32-битный образ. Он не грузится на многих старых компьютерах, поэтому, нужно создать свой образ с таблицей разделов MBR содержащей MBR и VBR загрузчики.

  2. Посмотреть как лежат разделы в скачанном образе

    fdisk -l haiku-r1beta6-x86_gcc2h-anyboot.iso
    ...
    haiku-r1beta6-x86_gcc2h-anyboot.iso1 *             12288 2879487 2867200   1,4G            eb BeOS фс
    haiku-r1beta6-x86_gcc2h-anyboot.iso2             2879488 2885247    5760   2,8M            ef EFI
    
  3. Вставить флэшку в комп. Посмотреть, dmesg|tail, куда она смонтировалаcь, например /dev/sdX. (перед стартом fdisk, отмонтируй все что смонтировалось автоматически)

  4. с помощью fdisk разбить ее на один раздел с MBR таблицей разделов: тип - BeOS fs, размер - 2867200 секторов, начало - 12288, размер и смещение взяты из пункта 2. Нам приходится делать смещение на 12288, т.к. такое же было в родном anyboot образе. И это смещение захардкожено в родном загрузчике. Обойти это ограничение можно создавая загрузочную флэшку из под собственно haiku OS, но это не наш случай.

    fdisk /dev/sdX
     o создать новую MBR таблицу разделов
     n добавить в нее новый раздел, выбрать его первый сектор 12288 и последний 2879487 (см. пункт 2.)
     t, 1, eb сменить тип раздела на BeOS fs
     a сделать этот раздел загрузочным
     w записать изменения и выйти
    
  5. скопировать BeOS раздел на флэшку

    dd if=haiku-r1beta6-x86_gcc2h-anyboot.iso of=/dev/sdX1  skip=12288 bs=512 count=2867200 status=progress
    
  6. записать MBR загрузчик (нужен пакет syslinux):

    dd bs=440 count=1 conv=notrunc if=/usr/lib/syslinux/mbr.bin of=/dev/sdX
    

Создание загрузочной флэшки для UEFI-only машин

Ссылка на готовый образ: https://github.com/Fabmicro-LLC/HaikuOS/releases/download/R1Beta6/haiku-r1beta6-x86_64_gpt.img

  1. Скачать с сайта haiku iso anyboot 64-битный образ.

  2. Посмотреть как лежат разделы в скачанном образе

    fdisk -l haiku-r1beta6-x86_64-anyboot.iso
    ...
    haiku-r1beta6-x86_64-anyboot.iso.iso1 *             12288 2879487 2867200   1,4G            eb BeOS фс
    haiku-r1beta6-x86_64-anyboot.iso.iso2             2879488 2885247    5760   2,8M            ef EFI (FAT-12/16/32)
    
  3. вставить флэшку в комп. Посмотреть, dmesg|tail, куда она подключилась, например /dev/sdX

  4. с помощью fdisk пере-разбить ее на такие же разделы, но в обычной gpt таблице

    fdisk /dev/sdX
     g создать новую gpt таблицу разделов
     n,,+2867199 добавить первый раздел, размер смотри в пункт 2.
     n,,+5759 добавить второй раздел, размер смотри в пункт 2.
     t, 1, 205 сменить тип первого раздела на BeOS
     t, 2, uefi сменить тип второго раздела на EFI
     w записать изменения и выйти
    
  5. скопировать BeOS раздел на флэшку

    dd if=haiku-r1beta6-x86_64-anyboot.iso of=/dev/sdX1 skip=12288 bs=512 count=2867200 status=progress
    
  6. копируем EFI из образа, на флэшку

    dd if=haiku-r1beta6-x86_64-anyboot.iso of=/dev/sdX2 skip=2879488 bs=512 count=5760 status=progress
    

Удачи, с видеоадаптером!-)

Теги:
+2
Комментарии0

Открытый проект KeyForge3D позволяет преобразовать фотографию ключа в файл для 3D-печати. Приложение выделяет контур ключа, добавляет ему толщину и сохраняет результат в STL для дальнейшей печати. Система работает локально без нейросетей и подписок — внутри обычный OpenCV.

Теги:
0
Комментарии1

Представлен открытый ИИ‑инструмент для создания диаграмм Diagram Design. Решение не требует ни этапа сборки, ни JavaScript, ни внешних изображений. В проекте есть 39 типов схем для Claude Code, Codex, Factory Droid, Pi и других платформ, поддерживающих Agent Skills. Автономный код HTML + SVG.

«Никаких теней. Никакой неряшливости, свойственной Mermaid. Семантические паттерны описывают поведение отдельно от компоновки, поэтому такие элементы, как очередь, трассировка политик или граница доверия, могут использовать ближайший существующий тип без необходимости создавать новые. Статичный HTML используется по умолчанию; для последовательных пояснений доступна опциональная анимация. Инструмент также позволяет перерисовывать схемы из форматов draw.io, Mermaid или Excalidraw, задавая нужный формат, размер и уровень детализации. Никакой Figma. Никаких стандартных блоков со скруглёнными углами. Никаких 30-минутных сеансов подбора цветов», — пояснил автор решения.

Теги:
+1
Комментарии0

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

В анонсе своего проекта я написал: «журнал — это последовательность действий, по нему можно пройти назад и честно остановиться на первом шаге, который отменить нельзя». Фраза мне нравилась. Перед публикацией я решил проверить, делает ли это код.

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

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

Порядок прохода я задал сортировкой по времени — и получил неправильный порядок. Отметки хранятся с точностью до секунды, несколько шагов делят одну и ту же, а стабильная сортировка при равных ключах сохраняет исходный порядок. При reverse=True часть шагов шла вперёд. Порядок графа задаёт последовательность выполнения, а не строка времени; время решает только, попал ли шаг в окно.

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

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

Двумя неделями раньше — ошибка того же рода

Журнал, который проверяет только автор, ничего не доказывает. Поэтому верификатор написан на другом языке: пишет Python, проверяет TypeScript.

На тесте, где JS-верификатор читает журнал, созданный Python, выяснилось, что json.dumps сериализует 0.0 как "0.0", а JSON.stringify то же число — как "0". Строки разные, хеши разные, одна и та же честная запись хешируется по-разному.

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

def _jcs_numbers(value: Any) -> Any:
    """Приводит числа к форме, одинаковой в Python и JavaScript."""
    if isinstance(value, bool):
        return value
    if isinstance(value, float) and value.is_integer():
        return int(value)

Проверка на bool не паранойя: в Python True — экземпляр int, без этой ветки булево уехало бы в числовую нормализацию.

Писал бы верификатор я сам, на том же Python, — ошибка дожила бы до первого спора с клиентом.

Функция, которой намеренно нет

Проект отдаёт наружу MCP-сервер, JSON-API и ноду n8n. Все три умеют выполнять шаги, спрашивать разрешение и читать журнал. Ни один не умеет подтверждать.

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

Что вынес

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

И второе, менее приятное: между «я написал это в описании» и «это работает» расстояние больше, чем кажется. Я поймал у себя обещанную и несуществующую функцию за несколько часов до анонса — просто потому, что решил открыть файл и прочитать, что там написано.

Альфа, 115 тестов, ноль зависимостей, AGPL-3.0: github.com/oleg-vdv/kepil. Верификатор отдельно и под MIT: agent-trace.

Теги:
-1
Комментарии0

Представлен открытый проект No AI Slop, который чистит ИИ-тексты от 20+ типичных ИИ-штампов. Под зачистку попадают «это не X, это Y», «будущее уже здесь», но и излишний пафос и ссылки на безымянных экспертов. Скилл даёт модели правила редактирования: сохранять авторский юмор, лексику и ритм, а после правок объяснять, что поменялось. Можно отдельно попросить найти штампы в тексте.

Теги:
0
Комментарии1

Все видеозаписи конференции EuroPython 2026, проходившей в Кракове (Польша) с 13 по 19 июля 2026 года, теперь доступны онлайн для всех пользователей (включая фото). Также опубликован краткий обзор мероприятия от организаторов.

Теги:
+1
Комментарии0

Где находится нниоп нофелет?

Нарисовалась задача: нужно было автоматизировать поиск реквизитов контрагентов по ИНН/ОГРН прямо из интерфейса 7.7, чтобы избежать ручного ввода, ошибок и ввод адреса "НЕ в формате ФНС". Типовой "1С:Контрагент" не рассматривался, он слишком избыточный по стоимости и громоздкий по архитектуре для моих текущих задач. Тем более, что он для Снеговика.

Альтернатива - API ФНС была отвергнута - платный. ???!!! В итоге был выбран путь интеграции с API DaData.

Технически реализовано так:

  • Запрос на сервер DaData →→ получаем JSON →→ парсим данные →→ получаем список реквизитов контрагента (и не факт, что одного!). С полученным списком работаем дальше.

  • Реализовано два режима работы: простой поиск (для пользователя) - показывает найденные реквизиты и служебный (для автоматического создания новых элементов в справочнике и/или актуализации данных) - возвращает найденное вызвавшей процедуре без открытия формы.

Основное окно поиска, ключ API вводится на закладке "Настройка" (один раз).
Основное окно поиска, ключ API вводится на закладке "Настройка" (один раз).

Главный плюс такого подхода - независимость от тяжелых проприетарных надстроек, высокая скорость работы. Единственный нюанс - необходимость собственного API-ключа (регистрируется бесплатно).

Подробности обвязок для HTTP-запросов и работы с json в 7.7 - см. здесь

А теперь к теме поста.

Географ глобус пропил. Московской области.

При тестировании получения от ДаДаты адресов (ФИАС/КЛАДР) обнаружились странные вещи. Например, в Москве теперь фигурирует несколько городов (в том числе и сам Москва г.), хотя всегда был только один - Зеленоград, а в Московской области "исчезли" некоторые районы, точнее почти все (Чеховский не в счет). Города (районные) теперь стали "районами", и прикол в том, что сами же города-районы бывают городами в самих себе. Но некоторых районов в классификаторе адресов Московской области нет вообще: например, Талдомского района больше не существует даже в виде города, хотя сам Талдом г. на месте - в городах МО.

Таким образом, адреса в т.н. формате ФНС (в адресе должно быть 9 запятых: страна ,(1) индекс ,(2) регион ,(3) район ,(4) город ,(5) населенный пункт ,(6) улица ,(7) дом ,(8) корпус ,(9) квартира) выглядят теперь так:

  • ,123456, Москва г,, Москва г,,,,, (город-регион сам в себе)

  • ,140000, Московская обл, Дмитров г, Дмитров г, ,,,, (город-район сам в себе)

  • ,140004, Московская обл, Люберцы г,,, Вуги п,,, (п. Вуги - улица(!) в Люберцы г. "районе")

При этом, код ФИАС у городов-дублеров самих себя одинаковый. Разрядность "кода ФИАС" (в отличие от кода КЛАДР для одного и того же объекта) такова, что уникальный код ФИАС можно "присвоить" не только каждой песчинке на Земле, но и каждой капле воды на всей планете. И еще несколько порядков свободных кодов останутся (наверное, для реголита на Луне), но вот для городов-клонов кодов не хватило.

Не очень понятно, что теперь делать со справочниками, которые содержат адреса в "старом" формате? Это и адреса контрагентов (юридический, фактический, почтовый, адреса доставки и т.д.) и адреса прописки регистрации сотрудников (физ. лиц). Их, даже в небольших одинесных базах, могут быть десятки и сотни тысяч. Ни о каком ручном способе приведения адресов в соответствие к новым выкрутасам ФНС (формирует ФИАС/КЛАДР) не может быть и речи!

Кто-нибудь еще сталкивался с такими переменами в госреестрах? Как вы сейчас решаете проблему синхронизации старых баз адресов с новыми реалиями ФИАС/КЛАДР?

Теги:
+1
Комментарии2

Представлен открытый проект Omelette для Mac - улучшенный аналог CodexBar:

  • оптимизирован под CLI Claude Code / Codex / AntiGravity;

  • не просит никаких лишних разрешений;

  • получает сообщения cli и передаёт в терминал на iTerm2 (cmux пока в разработке);

  • находится в активной разработке;

  • имеет всякие дополнительные инструменты и mcp, типа монитора, который сообщает агентам, что они слишком много тратят токенов.

Теги:
0
Комментарии0

Джастин Шрёдер показал любопытный образец того, как сегодня может вестись разработка. В твите Шрёдер выложил фотографию, на которой MacBook смотрит встроенной в крышку веб-камерой на собственный экран через зеркало. Как утверждает разработчик, таким способом он улучшает поддержку графики AMD Radeon в Omarchy.

@jpschroeder

Как объясняет в комментариях к твиту Шрёдер, зеркало как раз позволяет при отладке оценивать не скриншот, а изображение на физическом дисплее ноутбука. Что именно происходит на экране, разобрать тяжело из-за невысокого разрешения снимка и зеркального отражения. Если судить по его другому твиту, саму веб-камеру под Linux Шрёдер запускает с помощью T1Bridge — открытого проекта Standard Agents, добавляющего поддержку Apple T1 и iBridge, включая камеру FaceTime HD. Справа (слева на отражении в зеркале) открыт интерфейс приложения LocalSend: в папку /home/justin-schroeder/Downloads только что передали две фотографии в файловом формате HEIC. Слева, судя по характерным строкам Ran и Explored, работает Codex CLI компании OpenAI.

Сам Шрёдер — разработчик открытого программного обеспечения и создатель dmux, инструмента для параллельной работы с агентами программирования. Эта утилита запускает Codex, Claude Code и другие агенты в отдельных панелях tmux, создавая для каждой задачи отдельную ветку и рабочий каталог Git. Беглый поиск показывает, что к Omarchy Шрёдер имеет непосредственное отношение как контрибьютор: 9 сентября он отправил в проект патч, исправляющий работу адаптера Wi-Fi фирмы Broadcom на MacBookPro13,3. Судя по всему, сейчас он как раз занимается доводкой Omarchy на этой машине.

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии1

Представлен открытый проект Free Router, автоматически переключает ИИ‑агента между 25 бесплатными провайдерами для значительной экономии токенов, включая бесплатные. На выбор есть любые актуальные модели: DeepSeek, GLM-5.3, Qwen-3.8.

Теги:
Всего голосов 3: ↑3 и ↓0+5
Комментарии0

Представлен открытый проект Spotify Portal AI Plugins. Это решение от инженеров Spotify, которое экономит до 90% ресурсов ИИ-агентов:

  • перенаправляет шаблонные задачи на более дешёвых агентов и оставляет Claude только приоритетные дела;

  • bulk‑reader разбирает многострочный код, Gemini 2.5 Flash внутри читает файлы на тысячи строк и отдаёт Claude саммари;

  • code‑writer генерит рутинный, проверенный и предсказуемый код, пишет тексты, конфиги, type stubs, boilerplate и другие переиспользуемые части;

  • Claude забирает себе только самые важные и реально сложные задачи, где нужен мощный ризонинг — фикс багов, проработка архитектуры и внесение сложных правок.

Теги:
Всего голосов 3: ↑3 и ↓0+7
Комментарии0

Представлен открытый набор навыков text-to-cad для ИИ-агентов для инженеров, чтобы создавать детальные CAD-модели. Достаточно описать нужную деталь, а ИИ-агент сам строит модель с экспортом в STEP, STL и другие форматы. В комплекте есть просмотр в браузере, поиск готовых винтов, подшипников и моторов, проверка толщины стенок и нависаний перед 3D-печатью. Работает не только с Codex, но и с Claude Code и другими ИИ-агентами.

Теги:
Всего голосов 5: ↑5 и ↓0+7
Комментарии0

Как перестать сливать ПДн в ChatGPT и Claude: On-Prem AI-Gateway на чистом Python

Сотрудники компании (разработчики, поддержка, юристы) активно используют ChatGPT, Claude и Cursor. В промпты летят ФИО клиентов, ИИН/ИНН, карты, API-ключи и бизнес-логика. С точки зрения RegTech (152-ФЗ, Закон РК № 94-V, GDPR) — это прямая утечка данных.

Обычный DLP просто заблокирует доступ, снижая продуктивность[cite: 1]. Мы сделали AI-Gateway — open-source шлюз с обратимой токенизацией (Reversible Tokenization), который маскирует ПДн до отправки в LLM, восстанавливает их в ответе и ведет защищенный лог.

Как это работает

1. Исходный промпт от пользователя/приложения:

«Клиент Ержан Нурсултанулы, ИИН 900715300005, оспаривает транзакцию по карте 4400 1234 5678 9101…»

2. Уходит во внешнюю LLM (ChatGPT/Claude/Gemini):

«Клиент [PERSON_1], ИИН [NATIONAL_ID_1], оспаривает транзакцию по карте [PAN_1]…»

3. Возвращается в приложение / браузер:

«…для Ержан Нурсултанулы (ИИН 900715300005) по карте 4400 1234 5678 9101 возврат…»

Модель помогает решить задачу, пользователь получает полный ответ, а вендор не получает ни одной персональной записи[cite: 1].

Ключевая архитектура

  1. Обратимая токенизация, а не удаление. Замена сущностей на [PERSON_1] сохраняет связность текста для LLM[cite: 1]. Соответствия хранятся только в OAM (Mapping Store) в зашифрованном виде (PRF-CTR + HMAC) и автоматически удаляются после ответа[cite: 1].

  2. Проверка по контрольным суммам. ИИН/БИН проверяются двухпроходным весовым алгоритмом, карты — по алгоритму Луна (Luhn), IBAN — ISO 13616[cite: 1]. Секреты (AWS, OpenAI, JWT, PEM) детектируются по формату и энтропии Шеннона[cite: 1].

  3. Zero-Dependency Core (Python 3.11+ stdlib). Поверхность атаки на Supply Chain инструмента, видящего все промпты — ровно ноль[cite: 1]. Устанавливается в Air-Gapped контур без pip install[cite: 1].

  4. Принцип Fail-Closed. Любая ошибка распарсинга или сбой детекции блокирует запрос[cite: 1].

  5. Tamper-Evident Audit Log. Append-only JSONL с цепочкой хешей SHA-256[cite: 1]. Любое редактирование записи нарушает целостность лога[cite: 1].

Три канала перехвата

  • Egress Proxy: Меняем base_url в OpenAI SDK (http://aigate.internal:8080/v1)[cite: 1]. Код приложений менять не требуется[cite: 1].

  • Browser Extension (Manifest V3): Перехватывает ввод в ChatGPT/Claude/Gemini прямо в браузере до отправки на сервер[cite: 1].

  • Endpoint Agent: Отслеживает буфер обмена (clipboard) для вставки в IDE (Cursor, Claude Desktop)[cite: 1].

Маршрутизация в локальные LLM

Можно настроить правило: промпты без ПДн идут в ChatGPT/Claude, а промпты с найденными чувствительными данными автоматически перенаправляются на локальный Ollama / vLLM (Llama 3.1)[cite: 1].

Быстрый запуск

git clone [https://github.com/oleg-vdv/AI-Gateway.git](https://github.com/oleg-vdv/AI-Gateway.git)
cd AI-Gateway
cp .env.example .env
docker compose up -d
Теги:
Всего голосов 13: ↑12 и ↓1+15
Комментарии8

Регуляторы скоро спросят «где у вас RSA?». Я написал сканер, который отвечает за секунды

  1. Завязка. Три дедлайна: США — PQC для новых госзакупок нацбезопасности с 2027 (EO 14412 / CNSA 2.0, там прямо назван CBOM), Великобритания — полная криптографическая инвентаризация и план миграции к 2028 (NCSC), ЕС — переход с конца 2026. Первый вопрос аудитора одинаковый: «где именно у вас используется RSA?» Ответа нет почти ни у кого.

  2. Что такое CBOM и почему это не то же самое, что SBOM.

  3. «Harvest now, decrypt later» — почему это не про далёкое будущее: трафик записывают сегодня, расшифруют потом. Если у секрета срок жизни больше нескольких лет — проблема уже наступила.

  4. Как работает сканер. Одна команда, три артефакта: CycloneDX 1.6 CBOM, отчёт с планом миграции на ML-KEM/ML-DSA, SARIF для GitHub code scanning. Плюс scan-tls — одно рукопожатие и вердикт по живому эндпоинту.

  5. Байка про баг (Хабр это любит): первый же регрессионный тест поймал, как сканер находит «криптографию» в собственных регулярках. Лечилось маскировкой литералов RSA_generate_ke[y], и теперь есть вечный тест, что репозиторий подсвечивает только свои фикстуры.

  6. Честный бенчмарк против PQCA CBOMkit. Не «мы лучше», а «мы разные»: CBOMkit глубже на Java/Python (знает размеры ключей, симметрику), мы шире (10+ языков, конфиги, сертификаты) и быстрее (0,05–0,12 с против минуты). Прямая ссылка на docs/BENCHMARK.md — воспроизводимо кнопкой в CI.

  7. Ограничения честно: v0 на паттернах, динамические вызовы пропустит, отсутствие находок ≠ отсутствие проблем. AST-движок в планах.

  8. Финал: вопрос к читателям — у кого уже спрашивали CBOM и в каком виде.

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии0
1
23 ...