ARGUS
ARGUS (Autonomous Reconnaissance and Guardian Unified System) — это local-first голосовой ассистент и монитор безопасности для одного компьютера с Windows. Он слушает слово активации, выполняет действия на ПК, следит за угрозами на этой же машине и предлагает пошаговое исправление, когда находит проблему.
- Роль
- Дизайн, разработка и безопасность
- Год
- 2026
- Статус
- В активной разработке
- Код
- Закрытый репозиторий
- Строк кода
- 63K+
- Наборов тестов
- 109
- Детекторов с разметкой ATT&CK
- 16
- Навыков с ограниченными правами
- 48
Город ARGUS
Каждый робот — настоящий агент ARGUS. Каждый огонёк — состояние бэкенда.
Собирается команда
«Почему мой компьютер тормозит?» Менеджер агентов собирает команду, и она направляется в штаб агентов.
Шлюз политик и авторизации
Агенты сами решают, что хотят сделать.
Шлюз политик и авторизации
Можно ли это делать, решает только шлюз политик и авторизации.
Единственная дорога к управлению компьютером. Каждое действие останавливается здесь — ради проверки политик и ради вас.
Автор: Sodik Tursunboev
Город ARGUS
Спроектирован, разработан и защищён одним человеком; активная разработка продолжается.
ARGUS за 51 секунду
Спросите «Почему мой компьютер тормозит?», и ARGUS соберёт команду агентов, чтобы найти причину. Каждый робот в городе — настоящий агент, каждый огонёк — живое состояние бэкенда. Агенты сами решают, что хотят сделать; можно ли это делать, решает только шлюз политик и авторизации.
- ARGUS
Персональная AI-операционная система: голос, локальный AI и безопасность на вашем собственном ПК.
- Панель HUD
Локальный AI, живая телеметрия и голос, с которым можно говорить, — всё работает на этом компьютере.
- Безопасность прежде всего
Запечатанные файлы, движок политик и защищённая от подделки цепочка аудита. AI никогда не решает сам, что ему разрешено.
- Город ARGUS
Каждый робот — настоящий агент ARGUS. Каждый огонёк — состояние бэкенда.
- Собирается команда
«Почему мой компьютер тормозит?» Менеджер агентов собирает команду, и она направляется в штаб агентов.
- Штаб агентов
Planner, System, Diagnostics и Network работают по графу задач. Для этой работы нанимают специалиста Log Analysis.
- Институт проверки
Ничего не принимается, пока Verifier не проверит доказательства.
- Облачное посольство
Облачный специалист исследует здесь, за пределами защищённого города. Облако может думать. Облако не может управлять.
- «Отправь всех в академию»
Одна голосовая команда — и все десять агентов идут на занятия.
- Академия ARGUS
Уроки идут по одному на локальной модели, и проверяющий оценивает каждый.
- Шлюз политик и авторизации
Единственная дорога к управлению компьютером. Каждое действие останавливается здесь — ради проверки политик и ради вас.
- Автор: Sodik Tursunboev
Спроектирован, разработан и защищён одним человеком; активная разработка продолжается.
Обзор
Проблема
Голосовой ассистент, который управляет компьютером, сам становится поверхностью атаки. Он может запускать и завершать процессы, нажимать клавиши, читать буфер обмена, делать снимки экрана и выключать машину, и языковая модель — неподходящий компонент, чтобы решать, что из этого разрешено.
Что я создал
Голосовой ассистент, работающий на одном ПК, вместе с постоянным набором детекторов угроз для этой же машины. Слово активации, распознавание речи, синтез речи, каждый навык, который затрагивает компьютер, и решение о том, какой навык запустить, — всё выполняется локально.
Облачная модель используется только для обычного разговора и только тогда, когда шлюз решает, что фразу безопасно отправить.
Почему это важно
AI подчиняется слою безопасности, а не наоборот. ARGUS не может изменить собственный код авторизации, удалить свой журнал аудита или выдать себе разрешение. Эти правила обеспечиваются кодом и ACL файловой системы, а не инструкциями в промпте.
Ключевые результаты
- Голосовых команд распознаётся без модели
- 180
- Файлов под подписанным манифестом целостности
- 84
- Уязвимостей исправлено по итогам двух проверок
- 9
Архитектура
Два процесса: голосовой, которому принадлежат микрофон и динамик, и оркестратор, который принимает решения по политике. Каждая голосовая команда проходит один и тот же путь.
- Слово активацииopenWakeWord, на устройстве
- Речь в текстfaster-whisper
- Маршрутизация намерения180 фиксированных шаблонов, а если совпадения нет — локальная модель
- Шлюз авторизацииОдин раз на действие, fail-closed
- Навыки48 модулей с ограниченными правами
- Голосовой ответPiper TTS, потоково по предложениям
Параллельно работают: монитор угроз с 16 детекторами, журнал аудита с защитой от подделки и HUD, доступный только через loopback.
Маршрутизация остаётся локальной
Решение о том, какой навык запустить, — это повелительная часть каждой команды («открой папку с банковскими документами», «удали счета»). Его всегда принимает локальная модель Ollama. Пути в коде от команды к облачному провайдеру нет, и это доказывает тест.
Один шлюз для каждого действия
Диспетчер вызывает шлюз авторизации ровно один раз перед каждым вызовом навыка, а при отказе возвращается, а не продолжает. Этот порядок не просто нарисован на схеме: его проверяет тест, который разбирает AST диспетчера.
Планирование, выполнение, наблюдение, коррекция
Многошаговые цели раскладывает локальная модель; затем они проверяются по списку разрешённого кода, описываются словами и выполняются только после одобрения. Каждый шаг заново авторизуется в момент выполнения, и выполнение останавливается, как только шаг делает не то, что ожидалось по плану. Ничего необратимого запланировать нельзя.
Интерфейс, который показывает реальное состояние
HUD — это один самодостаточный файл, который отдаётся через loopback с токеном на каждую сессию и проверкой Origin. Он показывает живую телеметрию, состояние детекторов, журнал аудита и сетку покрытия MITRE ATT&CK, окрашенную по тому, какие детекторы действительно работают.
Три модели, разделённые по уровню доверия
Это разделение — граница безопасности, а не выбор ради производительности.
| Модель | Задача | Покидает машину? |
|---|---|---|
| Ollama (локально) | Всё управление ПК: классификация команд и приватные разговоры | Никогда |
| Groq (облако) | Быстрые ответы на общие вопросы | Только если разрешит облачный шлюз |
| Gemini (облако) | Резерв, когда Groq упирается в лимит запросов | Только если разрешит облачный шлюз |
Стек
Безопасность
Ассистент, который может нажимать клавиши и выключать машину, рассматривается как настоящая поверхность атаки. Ниже — самые важные меры защиты.
Шесть уровней авторизации, fail-closed
Неизвестные действия закрываются на уровне L2. Неудачная аутентификация никогда не показывает, какой фактор не прошёл, а блокировка PIN сохраняется после перезапуска.
| Уровень | Требования | Примеры |
|---|---|---|
L0 | Ничего | Время, погода, арифметика, светская беседа |
L1 | Разблокированная сессия | Приложения, окна, громкость, диагностика |
L2 | Свежая аутентификация (в пределах 120 с) | Файлы, хранилище, снимки экрана, автоматизация UI, исправления |
L3 | Свежая аутентификация + голосовое подтверждение | Диктовка, запись в буфер обмена, удаление памяти, задачи на сайтах |
L4 | Два независимых фактора + подтверждение | Удаление, выключение |
L5 | Только аппаратная защита | Пока ничего не подходит; уровень не понижается — действие отклоняется |
Основные меры защиты
Ограничения, которые AI не может изменить
Ни один путь в коде не записывает, не удаляет и не запускает собственную установку, состояние или хранилище ARGUS, и это подкреплено ACL файловой системы. До появления этой защиты команда «удали auth» указывала на
auth.pyи готовила его к отправке в Корзину.Подписанный манифест целостности
Хеши SHA-256 для 84 файлов, ключ HMAC защищён Windows DPAPI. Сбой критического уровня прерывает загрузку.
Возможности сверяются с кодом
Каждый навык объявляет, чем ему можно пользоваться (сеть, файловая система, subprocess, нажатия клавиш, буфер обмена, экран). При каждой загрузке объявление сверяется с тем, что его AST на самом деле импортирует и вызывает; при несовпадении загрузка прерывается.
Песочница для выполнения
Список из пяти разрешённых исполняемых файлов, никакого shell, никаких метасимволов, жёсткий тайм-аут и объекты заданий Win32, чтобы по тайм-ауту завершалось всё дерево процессов. PowerShell намеренно запрещён.
Ограничение исходящего трафика и защита от SSRF
Исходящий трафик каждого компонента привязан к фиксированному набору хостов, а неизвестные компоненты не получают сеть вовсе. Исследовательские запросы разрешают DNS и проверяют полученный IP на принадлежность частным, loopback, link-local и зарезервированным диапазонам.
Плоскость управления только на loopback
Привязка к 127.0.0.1, новый токен на каждую сессию со сравнением за постоянное время, проверка Origin и лимит 30 команд в минуту.
Журнал аудита с защитой от подделки
Каждая команда, ответ и заблокированный запрос попадают в журнал с HMAC-цепочкой, который ARGUS не может удалить. API-ключи, JWT, закрытые ключи и номера карт скрываются до того, как что-либо записывается, произносится или сохраняется.
Сдерживание prompt injection
Загруженный из интернета контент может влиять на то, что ARGUS говорит, но никогда — на то, что он делает. Команды запускаются только словами самого владельца.
Чего модель угроз сознательно не обещает
Голос — это не аутентификация
Любой, кто рядом с микрофоном, может отдавать неразрушающие команды. Разрушающие действия требуют введённого PIN или второго фактора, а не произнесённого «да».
Распознавание лица — никогда не замок
RGB-камера не отличает лицо от его фотографии, поэтому лицо используется только для приветствия и никогда не разблокирует.
У целостности есть пределы
Атакующий, уже работающий от имени этого пользователя, может переписать проверяющий код и заново запечатать манифест. Целостность не даёт ARGUS изменить самого себя и ловит случайные ошибки, но не останавливает решительного локального атакующего.
Проверка живости, а не личности
Голосовая проверка — это challenge-response, который не пропускает запись. Она не определяет, кто говорит.
Обнаружение
Шестнадцать модулей обнаружения следят за той же машиной, которой управляет ARGUS. Каждая находка размечается по MITRE ATT&CK и записывается в журнал аудита с защитой от подделки.
| Детектор | Что отслеживает | ATT&CK |
|---|---|---|
| lsass | Доступ к учётным данным через LSASS, включая дамперы с повышенными правами | T1003.001 |
| lolbin | Закодированное и проксированное выполнение | T1059 T1218 T1105 |
| persistence | Пять точек автозапуска, в виде разницы | T1547 T1543 T1053 |
| netconfig | Файл hosts, DNS и прокси | T1565.001 T1557 T1090 |
| defenses | Отключение встроенной защиты Windows | T1562.001 T1548.002 |
| privacy | Использование камеры и микрофона | T1123 T1125 |
| clipboard | Подмена адресов кошельков | T1115 |
| canary | Файлы-приманки, которых никто не должен касаться | T1083 |
| listening | Новые сетевые слушатели | T1571 T1021 |
| tamper | Собственная защита ARGUS | T1562 |
Дисциплина обнаружения
Сначала базовая линия
Первый проход каждого детектора изменений никогда не поднимает тревогу. Он записывает базовую линию.
Лавины сворачиваются
Всплеск связанных изменений превращается в одну находку, а не в сотни.
Слепые зоны не маскируются
Область, которую не удалось прочитать, исключается из сравнения, а не выдаётся за массовое удаление.
Пошаговое исправление, никогда не автоматическое
ARGUS предлагает удалить вредоносную запись автозапуска (с журналом, чтобы её можно было восстановить), поместить файл в карантин (перемещается, никогда не удаляется) или остановить подозрительный процесс и никогда не действует без «да».
Обнаружение дамперов учётных данных с повышенными правами (T1003.001)
Основной процесс при запуске навсегда отказывается от SeDebugPrivilege. Для процесса, который получает промпты, это правильный компромисс, но из-за него он не видит инструмент с повышенными правами, который делает дамп LSASS. Этот случай закрывает отдельный помощник с единственной задачей: он хранит привилегию и делает только одно — сканирует. У него нет модели, HTTP и сетевого пути.
Две части общаются через именованный канал, который может открыть только владелец, и каждая сторона проверяет образ процесса другой, прежде чем ей доверять. Каждая находка повторно проверяется перед записью в журнал аудита. Если помощник не установлен, сетка ATT&CK честно показывает эту ячейку как деградированную.
Тестирование
Главные утверждения об ARGUS — что каждое действие авторизуется и маршрутизация никогда не покидает машину — не просто описаны, а подтверждены тестами.
- Строк тестового кода
- 19,173
- Доля в кодовой базе
- ~30%
Что доказывают тесты
Архитектура
test_architecture.pyразбирает AST диспетчера и проверяет, что шлюз авторизации вызывается ровно один раз перед каждым вызовом навыка, а при отказе происходит возврат, а не продолжение.Приватность
test_local_control.pyдоказывает, что пути в коде от команды к облачному провайдеру нет.Пути отказа
Тесты помощника LSASS покрывают протокол обмена, доверие к каналу и фильтры находок. Чтение ограничено по времени, поэтому собеседник, который подключился и ничего не прислал, отключается примерно через 6 секунд.
Проверки при загрузке
Проверка целостности и AST-сканирование возможностей выполняются при каждой загрузке, а сбой её прерывает. Встроенный самотест запускает регрессионные наборы внутри процесса и сообщает результат по каждому набору.
Проверка безопасности
Две отдельные проверки безопасности нашли и исправили девять проблем, включая XSS с переходом в RCE, доступ к локальному API без аутентификации, SSRF и раскрытие учётных данных.
