프로젝트 소개
Fermix는 Elixir/OTP로 작성된 개인용 자체 호스팅 AI 에이전트 플랫폼입니다. 사용자 자신의 머신에서 백그라운드 데몬으로 실행되며, 이미 사용 중인 채팅 앱을 통해 접근할 수 있습니다. 모델 제공업체 키를 직접 가져오며, Fermix 클라우드는 없고 구성, 기록 및 로그는 `~/.fermix` 아래에 유지됩니다.
**주요 기능:**
- **단일 런타임:** 모든 것이 하나의 BEAM VM에서 단일 Elixir/OTP 애플리케이션으로 실행됩니다—HTTP 브리지, 외부 작업자 풀 또는 메시지 브로커가 없습니다. 영구 에이전트, 동시 대화 및 프로세스 내 하위 에이전트는 모두 이 설계에서 비롯됩니다.
- **어디서나 접근:** Telegram, WhatsApp, Slack, Discord, Signal 및 로컬 CLI는 모두 동일한 에이전트 루프에서 종료됩니다. 자사 iPhone 동반자(모바일 채널)는 기반 작업으로, 앱이 출시될 때까지 구성 플래그 뒤에 대기 상태입니다.
- **자체 모델 사용:** OpenAI, OpenAI Codex, Anthropic, SpaceXAI, OpenRouter, Mistral 및 키 없는 로컬 Ollama 등 7개 제공업체를 지원하며, 하나의 기본 제공업체와 자동 장애 조치 체인으로 선택됩니다. 하위 에이전트 및 예약 작업은 자체 저렴한 모델에 고정할 수 있습니다.
- **항상 켜짐:** 예약 작업은 다이제스트, 감시자, 알림 및 검사를 실행하며, 각각 격리되고, 제한되며, 영구 저장되고, 채널을 통해 전달됩니다. 작업은 재부팅 후에도 유지됩니다.
- **자체 포함:** 플랫폼별 단일 자체 추출 바이너리로 제공되며, 첫 실행 시 OS 서비스 단위를 설치합니다.
**빠른 시작:**
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 키 vs OAuth), 채널 설정 및 스케줄링은 README에 설명되어 있습니다.
런타임 우선 순위: 컴파일 타임 기본값 → 영구 설정 상태 → 환경 변수 재정의.
예약 작업 전달은 `config.toml`에서 작업별 명시적 대상 또는 cron별 기본 채널 대상을 지정할 수 있습니다. 음성 메모 전사는 플러그 가능합니다(OpenAI, SpaceXAI, Deepgram).
**환경 변수:**
`fermix setup`을 사용하는 경우 자격 증명 변수는 선택 사항입니다(OS 키체인에 비밀 저장). 헤드리스/컨테이너 배포의 경우 `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): Unix 소켓을 통해 데몬과 통신하는 선택적 네이티브 macOS 앱; 설정 페이지에서 활성화하고 `fermix voice status`로 확인
- 채널: Telegram(롱 폴링), WhatsApp(웹훅), 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`—공유 디스패처를 통해 모든 채널에서 작동합니다.
**아키텍처:**
네 개의 앱이 있는 엄브렐러 프로젝트: `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이 필요합니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.