Hermes Agent の README には「一行で入る」と書かれていますが、本番運用ではホスト選定、LLM API Key の配置、hermes doctor の警告解消、Telegram Bot Token の安全な保管、そしてノート PC のスリープや安価 VPS の再起動後もゲートウェイを生かし続ける仕組みが必要になります。Hermes は使い捨てチャット UI ではなく、SQLite エピソード記憶・Skill Markdown・ユーザーモデルファイルを蓄積する常駐型ゲートウェイです。プロセスが止まるほど、記憶の複利効果も止まります。本記事は、独立開発者と小規模チームのエンジニア向けに、今日の午後に Telegram Bot を動かし、来月も同じ Bot が文脈を覚えている状態まで持っていく手順をまとめました。macOS・Linux・VPS それぞれの前提条件、公式インストーラ、Provider 設定、CLI / TUI スモークテスト、BotFather 連携、launchd または systemd による永続化を順に説明します。記憶が常時稼働インフラを要求する理由は 三層メモリアーキテクチャ解説 を、Pi・VPS・クラウド Mac の 30 日実測は ホスト比較記事 を参照してください。ここではゼロから本番 Telegram ゲートウェイまでに焦点を当てます。
00インストール対象とゲートウェイの役割
Hermes Agent は Nous Research が MIT ライセンスで公開する Agent 基盤です。ターミナル TUI と多チャネルゲートウェイの間に位置し、Telegram・Discord・Slack・WhatsApp・CLI などを同一メモリスタックで束ねます。セッション文脈、困難タスク後に蒸留される Skill 文書、永続ユーザーモデル Markdown、SQLite FTS5 によるエピソード検索が一体となって動作します。Tool Calling、サブ Agent、cron 風スケジュール、任意の MCP サーバ連携も、メモリストアを分岐させずに拡張できます。
インストール成功は第一関門に過ぎません。ユーザーはスマートフォンから Bot にメッセージを送り、前回の決定事項を踏まえた応答を期待します。そのためには state.db、Skill フォルダ、ゲートウェイ Webhook が再起動と OS アップデートを跨いで存続するホストが必要です。開発用 MacBook で以下の手順を試すのは問題ありませんが、Telegram 本番トラフィックをスリープするノート PC に載せるのは適切ではありません。学習ループの価値が証明された段階で、多くのチームは同一設定 tarball を専用クラウド Mac または常時オン VPS へ移行します。
本記事は、シェルアクセス、外向き HTTPS、API Key をディスクに保存する権限があることを前提とします。Hermes は OpenRouter、Nous Portal、OpenAI 互換エンドポイントなど200 以上のモデルに対応しています。インストール前に Provider を 1 つ決め、単一セッションで全経路を検証できるようにしてください。
痛点ステップ 1 以前に起きる環境ミス
サポートスレッドで多いのは壊れた curl パイプではなく、ホスト不一致、依存欠落、Key の置き場所の誤りです。下表は、Telegram ゲートウェイを常時稼働させるうえで各プラットフォームが満たすべき条件と、典型的な失敗パターンを対照したものです。
| プラットフォーム | 推奨スペック | 永続化手段 | Telegram 接続前の典型失敗 |
|---|---|---|---|
| macOS 14+(Apple Silicon / Intel) | RAM 16GB 推奨、空き 20GB | launchd LaunchAgent | Gatekeeper がヘルパーをブロック;シェル profile に Key があるが LaunchAgent 環境に伝播しない |
| Ubuntu 22.04 / Debian 12 VPS | 2 vCPU、4GB RAM、40GB ディスク | systemd user / system unit | 443 出站遮断;python3-venv 未導入;root 所有パスで更新不能 |
| 汎用 Linux(Fedora、Arch 等) | VPS と同様、glibc 要確認 | systemd | SELinux やカスタム FW が Telegram コールバックを落とす |
| 開発ノート PC のみ | 対応 macOS / Linux なら可 | 手動起動 | スリープでゲートウェイ停止;夜間に Telegram 応答が途切れる |
| NUKCLOUD クラウド Mac(本番) | 16〜24GB SKU、永続テナントディスク | launchd + SSH トンネル管理 TUI | ノート PC の世話を避けつつ macOS パスと Metal 隣接が必要な場合の摩擦が最小 |
- Python / Node 隣接:公式インストーラがランタイム依存を取得します。最小 VPS イメージでは build-essential を入れ、
curl・git・動作するpython3を先に確認してください。 - 専用 Unix ユーザー:root や共有ログインユーザーではなく、固定 Home を持つ非 root アカウントで Hermes を実行します。Token 権限とバックアップが複雑化するのを防ぎます。
- ディスク設計:
state.db、Skill ツリー、ログ用に別領域を確保します。20GB root ボリュームは数週間のエピソード検索と Skill 蒸留で満杯になりやすいです。 - ネットワーク:Telegram は安定した外向き HTTPS が必要です。Webhook モードでは到達可能な HTTPS エンドポイント、または long-polling フォールバックが設定に含まれます。家庭 NAT や安価 VPS プールの CGNAT は「Mac では動くが VPS では死ぬ」典型パターンを生みます。
- シークレット管理:BotFather Token や LLM Key を git にコミットしないでください。mode 600 のファイルに置き、ゲートウェイ設定からパスのみ参照します。
インストール直後に hermes doctor を実行し、Telegram のせいにする前に依存関係の欠落を洗い出してください。環境ドリフトを先に直すほど、ゲートウェイログを掘る時間を短縮できます。
01macOS / Linux / VPS へのワンクリックインストール
上流インストーラは macOS と Linux で同一です。VPS では SSH ログイン方法と Home 所有者だけが異なります。以下 6 ステップは、新規 NUKCLOUD インスタンスとクリーンな Ubuntu イメージの双方で検証済みの順序です。
-
01
ホスト準備:macOS では Xcode Command Line Tools を確認します。Ubuntu / Debian VPS では
sudo apt update && sudo apt install -y curl git python3 python3-venv build-essentialを実行します。hermesなどの専用ユーザーを作成し、Home を tmpfs ではなく永続ディスク上に置きます。 -
02
公式インストーラ実行:そのユーザーで Nous Research の一行スクリプトを実行します。CLI が PATH に入り、既定の設定ディレクトリが初期化されるまで待ちます。本番ゲートウェイでは main を追跡せず、検証済みリリースを pin してください。
-
03
バイナリとバージョン確認:
hermes --versionで CLI が応答することを確認します。見つからない場合はログアウト / ログインで profile の PATH 更新を反映するか、インストーラが出力する profile 断片をsourceします。 -
04
健全性診断:
hermes doctorを実行し、モデル設定前に警告をすべて解消します。Python パッケージ、ディスク権限、ゲートウェイ前提がチェックされます。このステップを飛ばすと「入ったが常駐しない」Bot が最速で現れます。 -
05
対話 TUI 起動:擬似 TTY 付き SSH で
hermes tuiを一度起動します。UI が表示され、キー入力とネットワーク到達性が確認できれば、デーモン化前のコアランタイムは正常です。 -
06
ベースライン記録:macOS マイナーバージョンまたは
/etc/os-release、タイムゾーン、インストールパス、設定・メモリフォルダの一覧を記録します。Telegram トラフィック前に tarball 化しておけば、悪アップグレードで FTS5 が壊れた際に復元できます。
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
exec $SHELL -l
hermes --version
hermes doctor
hermes setup
hermes tui
新規 VPS では、プロバイダパネルで provision し、SSH Key を登録、sshd を harden してからインストーラを走らせてください。本番 SKU を決める段階では 注文ページ でディスクと RAM を先に選び、SQLite と Skill が OS スナップショットと同じ cramped な root ボリュームを共有しないようにします。NUKCLOUD コンソール Runbook に沿って SSH 接続する場合も、インストールコマンド自体は同一です。
02LLM Key、Provider プロファイル、CLI スモークテスト
モデルエンドポイントのない Hermes は空のゲートウェイです。設定は Hermes Home 配下の YAML と環境ファイルに置かれます。ファイル名はリリースで変わるため、pin したバージョンの上流ドキュメントを正とし、ブックマークを維持してください。
Provider 設定:API Key を mode 600 のファイル(例:~/.hermes/secrets/openrouter.env)に書き、Provider ブロックから参照します。OpenRouter は多モデルアクセスの定番です。Nous Portal や OpenAI 互換 base URL も既存契約向けに利用できます。予算とレイテンシに合う既定モデル slug を設定します。稼働中ゲートウェイで Provider を切り替える前に、state.db と Skill ディレクトリをバックアップしてください。
メモリパス:MEMORY.md、USER.md、Skill フォルダが永続ボリューム上にあることを確認します。Docker やエフェメラル VPS イメージでは、これらのパスを明示的に bind-mount しないと、コンテナ再作成で複利記憶がリセットされます。
CLI 検証:TUI または one-shot CLI から Tool 使用またはメモリ書き込みを要求するプロンプトを送り、新セッションで事実を想起できるか確認します。制御再起動後に想起が失敗する場合は、Telegram を人間に開放する前にディスク永続性を修正してください。
export OPENROUTER_API_KEY="sk-or-v1-xxxxxxxx"
export HERMES_DEFAULT_MODEL="anthropic/claude-sonnet-4"
Provider 設定編集後も hermes doctor を再実行してください。Key がゲートウェイデーモンと同一ユーザーコンテキストから見えるか、Doctor 出力が最速の信号です。チームが OpenClaw + Ollama ローカル Agent も評価している場合、Hermes は多チャネルゲートウェイと Skill 閉ループが強みです。同機共存は可能ですが、ユーザーとポートを分け、11434 やゲートウェイ待受ポートの競合を避けてください。
03Telegram ゲートウェイ配線と 24 時間永続化
Telegram は BotFather セットアップが速く、モバイルクライアントが普及しているため、最初のゲートウェイとして最も依頼が多いチャネルです。Token 取り扱いはデモ用ショートカットではなく、本番セキュリティ作業として扱ってください。
BotFather フロー:Telegram で @BotFather を開き、/newbot を実行します。表示名と bot で終わるユーザー名を選び、HTTP API Token をコピーします。Token は ~/.hermes/secrets/telegram.token など mode 600 ファイルに保存し、Hermes の Telegram ゲートウェイ設定ブロックからパスのみ参照します。シェル履歴や git 追跡 dotfile に Token を貼らないでください。
ゲートウェイ起動:Provider 環境読み込み後、ドキュメント記載の Hermes ゲートウェイサブコマンド(例:hermes gateway setup → hermes gateway start)で起動します。グループチャットに追加する前に、Bot への DM でテストしてください。グループでは BotFather 側のプライバシー設定により、全メッセージ読取が必要かどうかが変わります。
macOS — launchd:シークレット env ファイルを読み込む LaunchAgent plist を作成します。WorkingDirectory を Hermes Home に設定し、ゲートウェイバイナリを KeepAlive true で実行します。専用ユーザーで launchctl bootstrap し、再起動後 launchctl print で状態を確認します。NUKCLOUD クラウド Mac も自宅 Mini も手順は同一です。
Linux VPS — systemd:シークレットを指す EnvironmentFile、Restart=on-failure、WantedBy=multi-user.target(または user lingering)を持つ user systemd unit を作成します。SSH ログアウト後もゲートウェイを維持するため、Hermes ユーザーで lingering を有効化します:loginctl enable-linger hermes。
-
01
@BotFather で Bot を作成し Token をコピー。git には載せず、
chmod 600のローカル env に保存します。 -
02
hermes gateway setupで Telegram を選び Token を貼り、Webhook または polling を完了します。 -
03
フォアグラウンドで
hermes gateway startを実行し、スマートフォンから/startを送って往復と Tool ログを確認します。 -
04
launchd plist または systemd unit を書き込みます。管理 TUI はSSH ポートフォワードのみで到達し、管理ポートを公網に晒しません。
-
05
意図的にプロセスを
killし、30 秒以内の自動再起動とstate.db・Skill ディレクトリの存続を確認します。 -
06
ログローテーションとディスクアラートを設定します。Telegram チャネルが 72 時間安定してからチームをグループに招待してください。
[Unit]
Description=Hermes Telegram Gateway
After=network-online.target
[Service]
EnvironmentFile=%h/.hermes/secrets/openrouter.env
EnvironmentFile=%h/.hermes/secrets/telegram.env
ExecStart=%h/.local/bin/hermes gateway telegram
Restart=on-failure
RestartSec=10
[Install]
WantedBy=default.target
運用メモ:SSH ポートフォワードで TUI に到達し、管理ポートをインターネットに公開しないでください。最初の 1 週間はログ増加、ゲートウェイ再起動回数、Telegram Webhook / long-poll エラーを毎日確認します。7 日間安定稼働後は state.db と Skill ツリーの週次 tarball バックアップをスケジュールしてください。day-two 用コマンド:hermes --version(ドリフト確認)、アップグレード後の hermes doctor、対話デバッグの hermes tui、Linux では journalctl --user -u hermes-telegram.service、macOS では log show --predicate フィルタです。
04プラットフォーム対照:同一インストールをどこで走らせるか
| 観点 | ローカル macOS 開発 | Linux VPS | NUKCLOUD クラウド Mac |
|---|---|---|---|
| インストールコマンド | 同一公式 curl インストーラ | 同一公式 curl インストーラ | SSH 越しに同一 curl インストーラ |
| Telegram 24時間 | Mac がスリープしない限り弱い | systemd + linger で良好 | launchd + DC 電源で優秀 |
| メモリ永続性 | ローカル完全制御 | ディスクポリシー依存;小イメージは脆い | テナント NVMe;監査可能なバックアップ経路 |
| 運用オーバーヘッド | インストール低;uptime 高 | 中;CPU steal と egress 要監視 | SSH ベースライン後は低 |
| Apple ツールチェーン隣接 | ネイティブ | 不可 | macOS SKU でネイティブ |
| 月次コスト目安 | ハード沈没+電気代 | $5〜$40 表記+インシデント時間 | 時間課金;料金ページ参照 |
インストーラは意図的にクロスプラットフォームです。ホスティング選択が、Telegram ユーザーが応答の空白を感じるかどうかを決めます。共有 VPS プールは月額数百円台に見えますが、帯域ジッター、CPU オーバーサブスクライブ、long-polling セッション切断は、ユーザーモデルが「賢くなり始めた」タイミングで表面化しやすいです。自宅 Mac mini は電源と ISP をコントロールできる場合に有効です。エンタープライズチームは、文書化されたテナント境界を持つクラウド Mac または harden 済み VPS を選ぶことが多いです。
ハード購入前に Hermes 記憶の複利を検証したいチームには、NUKCLOUD の従量制クラウド Mac がキャッシュフローを保ちつつ、想起品質とサポート負荷を測れます。汎用分課金 macOS VPS は CPU オーバーセルで要約ジョブ中にゲートウェイが落ちやすいです。Telegram が本番向けの場合、月十ドル節約より、安定ディスク・予測可能な外向きネットワーク・再起動耐性の方が重要になります。
| 現象 / ログ | よくある原因 | 対処 |
|---|---|---|
hermes doctor Python 赤項目 | システム Python < 3.11 | install.sh を再実行;PATH で uv venv を優先 |
| Node / npm モジュール欠落 | Node 16 または Shell 未 reload | exec $SHELL -l;Node 22 を確認 |
| Telegram 無応答 | Token 誤り、デーモン未設定、出站遮断 | フォアグラウンド gateway start でログ;443 を確認 |
| 記憶 / Skill 消失 | 一時ディスクまたはボリュームなしコンテナ | 永続 Home へ移行;30 日実測参照 |
| モデル 401 / タイムアウト | Key 無効または地域制限 | hermes model 再設定;Provider 変更 |
| MCP Server 接続失敗 | ポート競合またはコマンドパス誤り | MCP 無効で基線確認後、逐次追加 |
05よくある質問
hermes doctor を実行し、ゲートウェイ状態は専用ユーザーアカウントを推奨します。Telegram 24時間運用では、スリープしないマシンまたはローカル検証後のクラウド Mac インスタンスへ移行してください。hermes doctor、デーモンコンテキストでの Provider Key 可視性の順に確認します。BotFather Token パス、外向き FW、Bot のブロック / チャット除外も見てください。Webhook モードでは有効な HTTPS エンドポイントが追加で必要です。long-polling は raw VPS でも簡単ですが、安定した出站接続は依然必須です。curl 一行と launchd 手順でそのまま移行できます。