このプロジェクトについて

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が必要です。