チャットボットを1つ作るだけなら、既存のAPIを叩けば済む話です。でも「複数のモデルを切り替えながら」「メモリを持ち続けて」「DiscordやTelegram、デバイスのカメラまで操作する」となったとき、自前でアーキテクチャを組むのはかなり骨が折れます。elizaOSはその骨格ごと提供しようとしているフレームワークで、スター数は執筆時点で約19,000。このリポジトリの構造と設計上の判断を、導入を考える目線で見ていきます。
どんなフレームワークか
elizaOSは、TypeScriptで書かれた自律型AIエージェントのためのOSSフレームワークです。「agentic operating system」という名称のとおり、単なるチャットボット用ライブラリではなく、エージェントが動き続けるための実行環境を丸ごと用意することを目指しています。
コアとなる@elizaos/coreがランタイムとメッセージループを定義し、その上にプラグインを積み重ねる構造になっています。Discord・Slack・Telegram向けのコネクタ、カレンダーやリマインダー、ブラウザ操作、EVM/Solanaウォレット操作、さらにカメラやデバイスのネイティブブリッジまでが対象範囲に入っています。モデルに依存しない設計なので、クラウドAPIからデバイス上の推論(Gemma 4ベースの2B〜27Bモデル)まで、バックエンドをプロジェクト単位で選べます。想定ユーザーは、エージェントアプリを本番レベルで動かしたい開発者や、複数プラットフォームに展開するサービスを作るチームです。
設計でここが上手い
プラグインを「機能の単位」として徹底する
elizaOSのプラグインは、アクション・プロバイダ・エバリュエータ・サービス・モデルハンドラ・ルート・イベント・テスト・アプリビューをひとつのPluginオブジェクトとしてエクスポートする仕様になっています。この設計の意図は単純で、機能の追加・削除を「ファイルの出し入れ」に近い操作にするためです。
実際、DiscordコネクタとTelegramコネクタを同時に有効にしたり、片方だけをテスト環境から外したりするとき、コアのコードに手を入れる必要がありません。チームで開発するとき、担当領域をプラグイン単位で分けやすくなる利点もあります。「機能追加=コアへの混入」というアンチパターンを回避する仕組みが最初から織り込まれています。
モデルのバックエンド選択を実行時に分離する
elizaOSはモデルに依存しない設計を明言していますが、その意味はAPIキーを差し替えるだけではありません。各モデル能力(テキスト生成・エンベディング・音声・画像生成)ごとに、ローカル推論・直接プロバイダ・Eliza Cloudの3つのバックエンドを別々に割り当てられます。
たとえば、テキスト生成はOpenAIのAPIを使いつつ、エンベディングだけをオンデバイスのGemma 4で処理するという構成が取れます。ハードウェアが対応していればオフライン動作も可能で、対応していない機能だけクラウドにフォールバックします。モデル選定の柔軟性が、インフラコストとプライバシー要件の両方に同時に答えられる設計です。
モノレポの情報設計
リポジトリはTurboでビルドタスクを統括するモノレポ構成で、packages/とplugins/が明確に分離されています。さらに、各パッケージとプラグインが自分のREADME.mdとCLAUDE.md/AGENTS.mdを持つことを求めています。CLAUDE.mdとAGENTS.mdはバイト単位で一致させるルールがあり、AIエージェントがコントリビュートする際のガイドとしても機能します。「読むべきドキュメントが分散していて迷う」問題に対して、「最寄りのガイドを先に読む」という規則で答えようとしている点は整理が行き届いています。
こういう人に向くかも
elizaOSが向くのは、エージェントの「動作環境ごと」を自前で設計したい開発者です。具体的には、複数のメッセージングプラットフォームに同一エージェントを展開したい、モデルの差し替えをプロダクションレベルで管理したい、プラグインを社内チームで分業して開発したい、といった要件を持つ場面です。
逆に、単一のAPIを呼び出してチャット応答を返すだけのシンプルなボットを作りたい場合は、フレームワーク全体の重さが負担になります。スコープが小さいプロジェクトに持ち込むと、設定や依存関係の管理コストが機能の恩恵を上回る可能性があります。elizaOSはツールキットというより「エージェントが生活するためのOS」なので、その規模感と自分のプロジェクトの規模感が合っているかを先に確認するのが大切です。
設計の良し悪しをどこで見るか

機能の単一性
elizaOSはあえて単一機能を絞り込まず、フルスタックで提供することを選んでいます。この判断は「良し悪し」ではなく、どの層を引き受けるかの選択です。コアランタイムだけ使いたい場合は@elizaos/coreを直接importする経路が用意されており、CLI・アプリホスト・Eliza Cloudをすべてスキップできます。フルスタックの提供と部分利用の両立を設計上で担保しているかどうかが見るべきポイントで、現状は経路として成立しています。
トークン経済性
RAGやメモリ管理がコアに組み込まれていることは、コンテキストウィンドウの消費量に直結します。プロバイダ・エバリュエータ・メモリのプリミティブがどう動くかを把握しないまま使うと、トークン消費が予想より大きくなることがあります。ドキュメントのplugin components guideを先に読んで、どのコンポーネントがいつ起動するかを確認しておくと安心です。
ドキュメントの深度
packages/とplugins/の各ディレクトリにローカルガイドがあるのは強みですが、量が多い分、初見で全体像をつかむまでに時間がかかります。AGENTS.mdに「package scoping、shared development servers、and the evidence required before a change is considered complete」と書かれているように、コントリビュート前に読むべき情報が複数箇所に分散しています。これは設計の問題というより、大規模モノレポの宿命に近いです。自分が触るパッケージのREADME.mdから読み始め、ルートのCLAUDE.mdと組み合わせる読み方が現実的です。
メンテナンスの継続性
beta CLIがelizaos@betaとして公開されていて、developブランチへのPRを通じて開発が続いています。Bunのバージョンをpinnするなどツールチェーンの固定が明示されており、再現性を保つ姿勢は確認できます。ただしbetaタグが付いている点は留意が必要で、本番投入するならAPIの安定性を継続して追いかける必要があります。
自分が書くなら、どこを変えるか
率直に言うと、CLAUDE.mdとAGENTS.mdをバイト単位で一致させるルールは運用コストが高いと感じます。二重管理はミスの温床になりやすく、check:agents-claudeスクリプトを走らせることが習慣化されないと、徐々にずれが生じる懸念があります。どちらかをシンボリックリンクにするか、片方を正として自動生成する仕組みにしたほうが長期的に安定するのではないでしょうか。
もうひとつ気になるのは、オンデバイス推論のハードウェア要件がパッケージレベルのREADMEに分散している点です。「自分のマシンでローカル推論できるか」は導入時に最初に確認したいことなので、ルートレベルに一覧表があると迷いが減ります。現状は@elizaos/plugin-local-inferenceのドキュメントを追わないと要件が見えません。機能の魅力は高い分、入口の整理に少し手を入れるだけで導入障壁がかなり下がると思います。
導入を検討するときのチェック観点
- 使いたいメッセージングプラットフォーム(Discord、Telegram、Slackなど)が一覧に含まれているかを
plugins/ディレクトリで確認する - 使用するモデルプロバイダがコアで対応しているか、あるいは独自プラグインを書く必要があるかを把握する
- オンデバイス推論を使う場合は、ハードウェアスペック(GPUメモリなど)が2B〜27Bのいずれかのティアに対応しているかを確認する
- betaタグ付きのCLIを本番環境に使う場合、APIの破壊的変更を追いかける運用フローを事前に決める
- モノレポ全体ではなく
@elizaos/coreだけを使う部分利用が、自分のプロジェクトの要件に合っているかを考える bun installとbun run buildが通るまでのセットアップ時間をローカルで一度計測し、CI環境のスペックと照らし合わせる- コントリビュートする場合は、
CONTRIBUTING.mdの「human-verifiable evidence requirements」がチームの開発フローに合うかを確認する
規模感と自分のプロジェクトのすり合わせ
elizaOSは「エージェントが動き続けるための環境」として設計されており、その分だけ覚えることも多いフレームワークです。プラグインシステムとモデルのバックエンド選択という設計上の判断は合理的で、複数プラットフォームへの展開やモデルの段階的な切り替えを想定するなら恩恵が大きいです。一方で、シンプルなエージェントを早く動かしたいフェーズには重さが目立ちます。READMEに「Use Eliza」「Build an agent or plugin」「Run a whole device as elizaOS」とゴールごとの出発点が分けられているように、自分がどのレイヤーに乗るかを最初に決めることが、このリポジトリをうまく使う最初の一歩になります。

