Об этом проекте

Fermix — это персональная самохостинговая платформа AI-агентов, написанная на Elixir/OTP. Она работает как фоновый демон на вашей машине и связывается с вами через уже используемые чат-приложения. Вы используете собственный ключ провайдера модели — у Fermix нет облака, а ваша конфигурация, история и логи хранятся в `~/.fermix`. **Ключевые возможности:** - **Единая среда выполнения:** Всё — это одно приложение Elixir/OTP в одной BEAM VM — без HTTP-мостов, внешних пулов воркеров или брокеров сообщений. Постоянные агенты, параллельные беседы и внутрипроцессные субагенты вытекают из этой архитектуры. - **Доступ отовсюду:** Telegram, WhatsApp, Slack, Discord, Signal и локальный CLI завершаются в одном цикле агента. Собственное приложение для iPhone (мобильный канал) — это основа, скрытая за конфигурационным флагом до выхода приложения. - **Своя модель:** Семь провайдеров — OpenAI, OpenAI Codex, Anthropic, SpaceXAI, OpenRouter, Mistral и локальный Ollama без ключа — выбираются как основной с автоматической цепочкой резервирования. Субагенты и запланированные задачи могут быть привязаны к своей более дешёвой модели. - **Всегда включён:** Запланированные задачи выполняют дайджесты, наблюдатели, напоминания и проверки — каждая изолирована, ограничена, хранится надёжно и доставляется через ваши каналы. Работа переживает перезагрузки. - **Самодостаточность:** Поставляется как один самораспаковывающийся бинарник для каждой платформы и устанавливает системную службу при первом запуске. **Быстрый старт:** ```bash brew install tezra-io/tap/fermix fermix setup ``` `fermix setup` устанавливает и запускает фоновую службу, затем печатает URL настройки и открывает `http://127.0.0.1:4030/setup` в браузере для завершения конфигурации. На хосте без графического интерфейса запускается терминальный мастер (`--cli` принудительно); `--no-service` настраивает без установки службы, а `--no-browser` печатает URL вместо открытия. **Установка:** - Homebrew (macOS, Linux): `brew install tezra-io/tap/fermix` (требуется `cosign` для проверки плагинов) - Сборка из исходников: Требуются Elixir ≥ 1.17, Erlang/OTP 28 и Zig 0.15.2. Клонируйте, `mix deps.get`, скомпилируйте ассеты, упакуйте с Burrito, установите бинарник, затем `fermix setup`. **Конфигурация:** `fermix setup` — единственная точка входа для первичной настройки. Она записывает типизированный снимок в `~/.fermix/config.toml` и создаёт корневые рабочие каталоги (`skills`, `journals`, `realtime`, `traces`, `logs`, `auth.json`). Режимы аутентификации провайдеров (API-ключ против OAuth), настройка каналов и планирование описаны в README. Приоритет параметров: значения по умолчанию при компиляции → сохранённое состояние настройки → переменные окружения. Доставка запланированных задач может быть направлена на явную цель для каждой задачи или на цель по умолчанию для cron-канала в `config.toml`. Транскрипция голосовых заметок подключаема (OpenAI, SpaceXAI, Deepgram). **Переменные окружения:** Учётные переменные необязательны, если вы используете `fermix setup` (он хранит секреты в связке ключей ОС). Для развёртывания без графического интерфейса/в контейнере задайте `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `XAI_API_KEY`, `OPENROUTER_API_KEY`, `MISTRAL_API_KEY`, а также токены каналов (WhatsApp, Discord, Slack, Signal) и операционные параметры, такие как `FERMIX_HOME`, `FERMIX_TRACE_DIR`, `FERMIX_LOG_FILE`, `FERMIX_HTTP_BIND` и настройки голоса Realtime. **Использование:** - Управление демоном: `fermix service install`, `start`, `status`, `ask`, `logs`, `stop`, `restart`, `service uninstall` - Локальный голосовой компаньон (FermixPet): опциональное нативное macOS-приложение, общающееся с демоном через Unix-сокет; включите через страницу настройки, проверьте через `fermix voice status` - Каналы: Telegram (long-poll), WhatsApp (webhook), Slack (Events API), Discord (Gateway), Signal (`signal-cli`), CLI и мобильный (скрытый) - HTTP-эндпоинты: `/health/live`, `/health/ready`, `/health`, `/setup`, вебхуки WhatsApp/Slack **Справочник CLI:** Включает `setup`, `auth login`, `run`, `service install/uninstall`, `start/stop/restart`, `status`, `health`, `voice status`, `pair`, `devices list/revoke`, `ask`/`chat`, `sandbox explain`, `grant path`, `revoke path`, `agents`, `capabilities`, `skills`, `plugins`, `memory`, `logs`, `upgrade`, `doctor`, `version`, `help`. **Команды каналов:** `/compact`, `/new`, `/clear`, `/help`, `/whoami`, `/background`, `/tasks`, `/stop`, `/ultra`, `/sandbox`, `/soul` — все работают во всех каналах через общий диспетчер. **Архитектура:** Umbrella-проект с четырьмя приложениями: `fermix_core` (агенты, провайдеры, инструменты, память, настройка, CLI, аутентификация, трассировка), `fermix_channels` (Telegram, WhatsApp, Slack, Discord, Signal, CLI), `fermix_web` (Phoenix: LiveView настройки, здоровье, входящие вебхуки) и `fermix_nif` (C NIF для сигнального шума группы процессов). Поток данных: адаптер канала → диспетчер → MainAgent → выполнение возможностей → провайдер → LLM → ответ. Встроенные инструменты включают `shell`, `file_read`, `file_write`, `file_edit`, `glob_search`, `content_search`, `git_read`, `git_write`, `web_fetch`, `web_search`, `place_search` и `subagents`. Навыки — это отдельные, устанавливаемые пользователем возможности со своими инструкциями и границами разрешённых инструментов. Fermix находится в статусе альфа (до 1.0), лицензирован под MIT и требует Elixir ≥ 1.17 и Erlang/OTP ≥ 28.