このプロジェクトについて
Fermixは、Elixir/OTPで書かれた個人向けの自己ホスト型AIエージェントプラットフォームです。自分のマシン上でバックグラウンドデーモンとして動作し、既に使用しているチャットアプリを通じてアクセスできます。モデルプロバイダーのキーは自分で用意します。Fermixクラウドは存在せず、設定、履歴、ログはすべて`~/.fermix`に保持されます。
**主な機能:**
- **単一ランタイム:** すべてが単一のBEAM VM内の単一のElixir/OTPアプリケーションです。HTTPブリッジ、外部ワーカープール、メッセージブローカーはありません。永続的なエージェント、同時会話、プロセス内サブエージェントはすべてこの設計から自然に導き出されます。
- **どこからでもアクセス:** Telegram、WhatsApp、Slack、Discord、Signal、ローカルCLIはすべて同じエージェントループに接続されます。ファーストパーティのiPhoneコンパニオン(モバイルチャネル)は基盤が準備されており、アプリのリリースまで設定フラグの背後で休止状態にあります。
- **モデルは自分で選択:** 7つのプロバイダー(OpenAI、OpenAI Codex、Anthropic、SpaceXAI、OpenRouter、Mistral、キー不要のローカルOllama)から1つをプライマリとして選択し、自動フォールバックチェーンを設定できます。サブエージェントとスケジュールジョブは、それぞれ独自のより安価なモデルに固定できます。
- **常時稼働:** スケジュールジョブはダイジェスト、ウォッチャー、リマインダー、チェックを実行します。各ジョブは分離され、制限され、永続的に保存され、チャネル経由で配信されます。作業は再起動後も維持されます。
- **自己完結型:** プラットフォームごとに単一の自己解凍バイナリとして提供され、初回実行時に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): オプションのネイティブmacOSアプリで、Unixソケット経由でデーモンと通信します。セットアップページで有効にし、`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`—すべて共有ディスパッチャーを通じてチャネル間で動作します。
**アーキテクチャ:**
4つのアプリを持つアンブレラプロジェクト: `fermix_core`(エージェント、プロバイダー、ツール、メモリ、セットアップ、CLI、認証、トレーシング)、`fermix_channels`(Telegram、WhatsApp、Slack、Discord、Signal、CLI)、`fermix_web`(Phoenix: セットアップLiveView、ヘルス、ウェブフック入力)、`fermix_nif`(プロセスグループシグナルシム用のC NIF)。
データフロー: チャネルアダプター → ディスパッチャー → メインエージェント → 機能実行 → プロバイダー → LLM → 応答。
組み込みツールには、`shell`、`file_read`、`file_write`、`file_edit`、`glob_search`、`content_search`、`git_read`、`git_write`、`web_fetch`、`web_search`、`place_search`、`subagents`が含まれます。スキルは別個のユーザーインストール可能な機能で、独自の指示と許可されたツール境界を持ちます。
Fermixはアルファ版(pre-1.0)で、MITライセンスであり、Elixir ≥ 1.17とErlang/OTP ≥ 28が必要です。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.