概要
AnyModelBot(MIT ライセンスの OSS、Node.js + TypeScript 製)を Docker で起動し、以下を確認した手順のメモです。
- 公式イメージ
ghcr.io/modelflare-ai/anymodel-botでの起動(x64 / arm64) - 管理画面のアクセストークンの取り出し方
- 初回セットアップでの API キー入力と、モデルの切り替え
- 環境変数での設定(
docker run --env-file) - 長期記憶(Markdown)がボリュームのどこに保存されるか、どう中身を見るか
記載内容はすべてリポジトリの README・Dockerfile・.env.example・docs/privacy.md・docs/development.md に基づいています。
前提環境
- Docker が動く Linux / macOS / Windows、または NAS・サーバー
- モデル呼び出し用の Modelflare アカウント(従量課金。Docker 環境ではブラウザログインのコールバックを受けられないため、API キーを貼り付ける方式になります)
参考までに、デスクトップ用インストーラー(Windows .exe / macOS .dmg / Linux .AppImage)も Releases にあり、こちらは初回起動時にブラウザで Modelflare にログインするだけでキーのコピーは不要です。本記事は Docker 版を扱います。
手順
1. コンテナを起動する
docker run -d --name amb -p 3600:3600 -v amb-data:/data ghcr.io/modelflare-ai/anymodel-bot
Dockerfile を見ると、コンテナ内では次の値が設定されています。
ENV NODE_ENV=production \
AMB_DATA_DIR=/data \
AMB_UI_HOST=0.0.0.0 \
AMB_UI_PORT=3600
VOLUME ["/data"]
EXPOSE 3600
データ(SQLite、記憶、設定、ゲートウェイの設定など)はすべて /data に入るので、名前付きボリューム amb-data を必ずマウントしておきます。
2. 管理画面のトークンを取り出してアクセスする
AMB_UI_HOST がループバック以外(0.0.0.0)の場合はトークン認証が強制されます。トークンはデータディレクトリの ui-token にあります。
docker exec amb cat /data/ui-token
ブラウザで http://<ホスト>:3600/?token=<トークン> を開きます。
3. API キーを登録する
Docker やリモート環境では、初回画面が API キー入力欄になります。Modelflare で発行したキーを貼り付けると、GET https://modelflare.dev/v1/models で検証されます。
キーはバンドルされたゲートウェイ(magpie)の隔離された設定(magpie/config/)に保存され、コマンドライン引数やログには出ず、フロントエンドには末尾の数文字だけが渡る、と docs/development.md に書かれています。
4. モデルを選ぶ・切り替える
キー登録後、利用可能なモデルが一覧に出ます。各モデルにはコンテキスト長・機能・参考価格が表示されます。
- 会話ごとに入力欄横のモデルボタンから切り替え
- ボットごとにデフォルトモデルを設定
- 記憶整理などのバックグラウンド処理に別モデルを指定
デフォルトモデルは環境変数でも指定できます(後述)。
5. (任意)環境変数で設定する
.env.example をコピーして docker run --env-file で渡します。プログラム自身は .env を自動では読まない点に注意してください。環境変数は <データディレクトリ>/config.json より優先されます。
# .env の例(.env.example から抜粋。すべて任意)
AMB_DEFAULT_MODEL=openai/gpt-5.6-sol
AMB_CONTEXT_MESSAGES=40
AMB_CONTEXT_CHARS=24000
AMB_LANG=zh-CN # zh-CN | en
AMB_LOG_LEVEL=info # debug|info|warn|error
docker rm -f amb
docker run -d --name amb -p 3600:3600 -v amb-data:/data --env-file .env ghcr.io/modelflare-ai/anymodel-bot
ボリュームはそのままなので、登録済みのキーや記憶は引き継がれます。
動作確認
長期記憶の Markdown を見る
記憶は 3 層(ボット / グループ / チーム)で、src/agent/memory.ts のコメントによると次の構成です。
/data/memory/bots/<botId>/MEMORY.md
/data/memory/bots/<botId>/topics/<topic>.md
/data/memory/groups/<groupKey>/…
/data/memory/team/…
/data/memory/journal.jsonl # 変更ごとに 1 行(誰が・いつ・どのファイルに・何を追加/削除したか)
チャットで何か覚えさせてから、中身を確認します。
docker exec amb ls -R /data/memory
docker exec amb sh -c 'cat /data/memory/bots/*/MEMORY.md'
docker exec amb tail -n 5 /data/memory/journal.jsonl
ただの Markdown なので、grep で検索したり、バックアップしたりが容易です。なお、書き込み前にシークレットらしき文字列はフィルタされる仕様です。
デスクトップ版の場合のデータディレクトリは以下です(docs/privacy.md より)。
| 実行方法 | データディレクトリ |
|---|---|
| Windows | %APPDATA%\anymodel bot\data |
| macOS | ~/Library/Application Support/anymodel bot/data |
| Linux | ~/.config/anymodel bot/data |
npm start |
./data(AMB_DATA_DIR で変更可) |
ハマりどころ・注意点
- 3600 番ポートをインターネットに直接公開しない。 README で明示されています。外から使うなら VPN やリバースプロキシ+認証を挟みます。
-
.envは自動で読まれない。--env-fileを付け忘れると反映されません。 - Docker 版はブラウザログイン不可。 初回は API キー入力になります。
-
データは記憶に限らずボリュームに入る。 完全に消すときは
docker rm -f amb && docker volume rm amb-data。 -
モデルへのリクエストは端末外に出る。 会話・記憶・ファイルはローカル保存ですが、モデルに渡すプロンプトや使われた記憶は Modelflare 経由で選んだプロバイダーに送られ、Modelflare 側にリクエストログが残ります(
docs/privacy.md)。 -
自前ビルドする場合はサブモジュールが必要。
git submodule update --init --depth 1 vendor/magpieの後にdocker build -t anymodel-bot .。 - 補足:スマホアプリはなく、PC かサーバーで常時動かす前提です。PC 操作機能は macOS では Beta。飛書(Feishu)連携は個別チャットのみです。
まとめ
-
docker run1 行+ui-tokenの取り出しで管理画面まで到達できる - Docker 版は API キー貼り付けで初期設定し、モデルは会話単位・ボット単位で切り替え可能
- 長期記憶は
/data/memory以下の素の Markdown とjournal.jsonlなので、docker execで中身も変更履歴も追える
筆者は AnyModelBot の共同開発者です。