Подключает компьютер к вашим агентам. Изменения в папках и нажатия быстрых кнопок становятся для агента триггерами, а действия на компьютере — его инструментами.
Коннектор живёт в системном трее. Он передаёт агенту события с компьютера и выполняет вызовы его инструментов.
В отслеживаемой папке появился файл или вы нажали быструю кнопку. Плагин-триггер это замечает.
Событие уходит на платформу по HTTPS: имя триггера, время и данные, например путь к файлу.
Платформа передаёт его агентам, у которых есть доступ к этому компьютеру.
Вызов приходит по WebSocket: показать уведомление, сделать скриншот, прочитать текст вслух. Коннектор выполняет его и возвращает результат агенту.
Встроенные триггеры и инструменты. Каждый включается отдельно в настройках.
Файл появился, изменился, удалён или перемещён. По умолчанию коннектор следит за новыми файлами в «Загрузках».
Окно с кнопками, каждая из которых отправляет агенту событие. Удобно для просьб, которые повторяются каждый день.
Обычное системное уведомление или окно, которое нужно закрыть самому, чтобы точно не пропустить.
Компьютер читает текст вслух встроенным синтезатором речи. Агент может и прервать чтение.
Каждый триггер и инструмент — это плагин: папка с plugin.py и config.json. Свой плагин пишется на Python.
Следит за чем-то на компьютере и отправляет агенту событие.
Выполняет вызов агента на компьютере и возвращает результат.
from core.plugin_base import TriggerPlugin
class MyTrigger(TriggerPlugin):
@property
def name(self) -> str:
return "Мой триггер"
async def initialize(self) -> None:
pass
async def shutdown(self) -> None:
pass
async def start(self) -> None:
# Начать слежение; событие отправляется так:
self.emit_event("my_event", {"value": 42})
async def stop(self) -> None:
# Остановить слежение
passfrom core.models import ToolResult
from core.plugin_base import ToolPlugin
class MyTool(ToolPlugin):
@property
def name(self) -> str:
return "Мой инструмент"
async def initialize(self) -> None:
pass
async def shutdown(self) -> None:
pass
def get_supported_tools(self) -> list[str]:
return ["my_tool"]
async def execute(self, tool_type: str,
parameters: dict) -> ToolResult:
# Выполнить вызов
return ToolResult(success=True, data={"ok": True})Сценарии, которые собираются из встроенных триггеров и инструментов
В «Загрузки» пришёл PDF. Агент видит имя файла, ставит задачу на доске и показывает уведомление.
Кнопка «Заметка» спрашивает текст и отправляет агенту. Агент сохраняет его в сервис, к которому у него есть доступ.
Агент решил, что событие срочное, например письмо от клиента. Он читает его вслух и показывает окно, которое не исчезнет само.
Вы пишете агенту в чат «посмотри, что за ошибка». Он снимает активное окно и отвечает по картинке.
Агент по расписанию проверяет диски и память и предупреждает, когда место заканчивается.
«Собери отчёт за день», «Что у меня завтра?» — одна кнопка вместо того, чтобы каждый раз писать агенту.
Технические подробности
| Платформы | Windows, macOS, Linux |
| Сделан на | Python 3.11+, Qt 6 (PySide6) |
| Связь с платформой | HTTPS + WebSocket (Centrifugo) |
| Переподключение | С растущей паузой, до 10 попыток |
| MCP | Встроенный локальный MCP-сервер с теми же инструментами |
| Плагины | Папка с plugin.py и config.json, конфиг проверяется при загрузке |
Иконка в трее и окно настроек
Показывает, подключён ли коннектор.
Связь с платформой.
Триггеры и инструменты.
Три шага от скачивания до первого события
В дашборде, в разделе «Приложения», создайте приложение и скопируйте ключ. В настройках коннектора вставьте его в поле Device Key вместе с адресом сервера и привяжите устройство.
Отметьте нужные триггеры и инструменты. Коннектор работает в фоне, окно можно закрыть.
Бесплатно, с открытым кодом. Windows, macOS и Linux.