Sobre o projeto
Fermix é uma plataforma de agentes de IA pessoal, auto-hospedada, escrita em Elixir/OTP. Ela roda como um daemon em segundo plano na sua própria máquina e alcança você pelos apps de chat que já usa. Você traz a chave do seu próprio provedor de modelo — não existe nuvem Fermix, e sua configuração, histórico e logs ficam em `~/.fermix`.
**Principais recursos:**
- **Um único runtime:** Tudo é uma única aplicação Elixir/OTP em uma única VM BEAM — sem pontes HTTP, pools de workers externos ou brokers de mensagens. Agentes persistentes, conversas simultâneas e sub-agentes em processo decorrem naturalmente desse design.
- **Alcança você em qualquer lugar:** Telegram, WhatsApp, Slack, Discord, Signal e uma CLI local terminam todos no mesmo loop de agente. Um companheiro oficial para iPhone (canal móvel) é a base, dormente atrás de uma flag de configuração até o app ser lançado.
- **Traga seu próprio modelo:** Sete provedores — OpenAI, OpenAI Codex, Anthropic, SpaceXAI, OpenRouter, Mistral e um Ollama local sem chave — escolhidos como um primário com uma cadeia de fallback automática. Sub-agentes e tarefas agendadas podem ser fixados em um modelo mais barato próprio.
- **Sempre ativo:** Tarefas agendadas executam resumos (digests), monitores, lembretes e verificações — cada uma isolada, limitada, armazenada de forma durável e entregue de volta pelos seus canais. O trabalho sobrevive a reinicializações.
- **Autocontido:** Distribuído como um único binário autoextraível por plataforma e instala uma unidade de serviço do SO na primeira execução.
**Início rápido:**
brew install tezra-io/tap/fermix
fermix setup
`fermix setup` instala e inicia o serviço em segundo plano, depois imprime a URL de configuração e abre `http://127.0.0.1:4030/setup` no seu navegador para concluir a configuração. Em um host sem interface (headless), ele executa um assistente de terminal em vez disso (`--cli` força isso); `--no-service` configura sem instalar o serviço, e `--no-browser` imprime a URL em vez de abrir uma.
**Instalação:**
- Homebrew (macOS, Linux): `brew install tezra-io/tap/fermix` (requer `cosign` para verificação de plugin)
- Compilar a partir do código-fonte: requer Elixir ≥ 1.17, Erlang/OTP 28 e Zig 0.15.2. Clone, `mix deps.get`, compile os assets, empacote com Burrito, instale o binário e execute `fermix setup`.
**Configuração:**
`fermix setup` é o ponto de entrada único para a configuração inicial. Ele grava um snapshot tipado em `~/.fermix/config.toml` e cria as raízes do workspace (`skills`, `journals`, `realtime`, `traces`, `logs`, `auth.json`). Modos de autenticação de provedores (chave de API vs. OAuth), configuração de canais e agendamento são abordados no README.
Precedência em runtime: padrões de compilação → estado de configuração persistido → sobrescritas por variáveis de ambiente.
A entrega de tarefas agendadas pode mirar um destino explícito por tarefa ou um destino padrão de canal específico por cron em `config.toml`. A transcrição de notas de voz é plugável (OpenAI, SpaceXAI, Deepgram).
**Variáveis de ambiente:**
Variáveis de credenciais são opcionais se você usar `fermix setup` (que armazena segredos no chaveiro do seu SO). Para implantações headless/containers, defina `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `XAI_API_KEY`, `OPENROUTER_API_KEY`, `MISTRAL_API_KEY`, além de tokens de canais (WhatsApp, Discord, Slack, Signal) e ajustes operacionais como `FERMIX_HOME`, `FERMIX_TRACE_DIR`, `FERMIX_LOG_FILE`, `FERMIX_HTTP_BIND` e configurações de voz Realtime.
**Uso:**
- Controle do daemon: `fermix service install`, `start`, `status`, `ask`, `logs`, `stop`, `restart`, `service uninstall`
- Companheiro de voz local (FermixPet): app nativo opcional para macOS que conversa com o daemon por um socket Unix; habilite pela página de setup, verifique com `fermix voice status`
- Canais: Telegram (long-poll), WhatsApp (webhook), Slack (Events API), Discord (Gateway), Signal (`signal-cli`), CLI e mobile (dormente)
- Endpoints HTTP: `/health/live`, `/health/ready`, `/health`, `/setup`, webhooks WhatsApp/Slack
**Referência da CLI:** inclui `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`.
**Comandos de canal:** `/compact`, `/new`, `/clear`, `/help`, `/whoami`, `/background`, `/tasks`, `/stop`, `/ultra`, `/sandbox`, `/soul` — todos funcionam entre canais por meio do dispatcher compartilhado.
**Arquitetura:**
Projeto umbrella com quatro apps: `fermix_core` (agentes, provedores, ferramentas, memória, setup, CLI, auth, tracing), `fermix_channels` (Telegram, WhatsApp, Slack, Discord, Signal, CLI), `fermix_web` (Phoenix: LiveView de setup, health, ingresso de webhooks) e `fermix_nif` (NIF em C para o shim de sinais de grupos de processos).
Fluxo de dados: adaptador de canal → Dispatcher → MainAgent → execução de capacidade → provedor → LLM → resposta.
Ferramentas integradas incluem `shell`, `file_read`, `file_write`, `file_edit`, `glob_search`, `content_search`, `git_read`, `git_write`, `web_fetch`, `web_search`, `place_search` e `subagents`. Skills são capacidades separadas, instaláveis pelo usuário, com suas próprias instruções e limites de ferramentas permitidas.
Fermix está em status alfa (pré-1.0), licenciado sob MIT, e requer Elixir ≥ 1.17 e Erlang/OTP ≥ 28.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.