Hermes Agent を VPS で動かす: 何ができるか、必要スペック、料金、Telegram から使うまで
Nous Research の Hermes Agent を 4GB の VPS に入れ、Claude をバックエンドに Telegram から VPS を操作するまでを実機で確認しました。インストール、gateway の常駐、memory と cron の実際の挙動、1 回あたりのトークン消費、つまずいた点まで。
本記事にはプロモーション (アフィリエイト広告) が含まれます。
「Hermes Agent とは」「何ができる」「必要スペック」で調べている人向けに、先に結論を置きます。
Hermes Agent は、VPS に常駐して Telegram などから指示を受け、シェルを叩いて仕事をし、覚えたことを次回に活かす「自分専用のエージェント」です。 月 2,480 円の 4GB VPS で、n8n と Ollama と同居させても gateway の常駐は 256MB でした。モデルは Claude の API キーを渡せば動きます。インストールから Telegram で返事が来るまで、詰まった分を含めて 30 分ほどです。
一方で、Ollama の小型モデルでは実用になりません。Hermes のシステムプロンプトが重く、1 回の cron 実行で入力 4 万トークンを使います。4GB の VPS で動く 1B〜3B のモデルには載らないので、実質 Claude か OpenAI の API 前提です。
この記事では、前回 Ollama を入れた VPS に Hermes を追加し、Telegram から VPS を操作し、memory と cron が実際にどう動くかを見ていきます。
Hermes Agent とは
Nous Research が公開しているオープンソースの AI エージェントです (GitHub: NousResearch/hermes-agent)。Claude Code や Codex と同じ「LLM にツールを持たせて自律的に動かす」枠組みですが、方向が違います。
- Claude Code は「コードを書く」ためのエージェントで、モデルは Claude 固定
- Hermes は「自分の代わりに常駐して働く」ためのエージェントで、モデルは Claude / OpenAI / Ollama など選べる
Hermes の特徴は 3 つです。
- gateway: Telegram、Discord、Slack などのメッセージングアプリを入口にする。スマホから VPS に指示が出せる
- memory と skills: 会話で覚えたことを
~/.hermes/memories/に書き、次回のシステムプロンプトに入れる。繰り返す手順は skill としてファイル化する - cron: 「毎朝 8 時にディスクを確認して」と言えば、Hermes 自身がジョブを登録し、結果を Telegram に届ける
Claude Code にも memory と cron に相当する機能はあります。違いは、Hermes が「モデルを選べる」ことと「メッセージングアプリが正面玄関」であることです。
この記事で使う環境
- VPS: XServer VPS クラウド 4GB (4 コア / NVMe 50GB)、Ubuntu 24.04。初期設定 と Tailscale 済み。同じ VPS で n8n、Ollama、Claude Code が動いている状態 (使用メモリ 1.3GB)
- Hermes Agent: v0.21.3 (2026.9.14)
- モデル: Claude Sonnet 5 (Anthropic API キー)。n8n の記事で作ったキーを流用
- 入口: Telegram。BotFather で Bot を 1 つ作る
- 手元: Mac。Tailscale で VPS に繋がっている
必要スペックと料金
| 項目 | 実測 |
|---|---|
| ディスク | ~/.hermes で 1.4GB (Python の venv と Node.js 同梱) |
| メモリ | gateway 常駐で 256MB (ピーク 286MB)。会話中も 300MB 前後 |
| CPU | 待機中はほぼ 0。モデル推論はしないので、VPS の CPU は関係ない |
| 追加パッケージ | build-essential (C++ コンパイラ) が要る |
料金は Hermes 自体は無料で、モデルの API 代だけです。Hermes は ~/.hermes/state.db にセッションごとのトークン数と概算コストを記録しているので、そこから出しました (Claude Sonnet 5、入力 $2 / 出力 $10 per 1M トークン、1 ドル 150 円)。
| 操作 | API 呼び出し | 入力トークン | 概算 |
|---|---|---|---|
CLI で 1 問 (hermes chat --oneshot) |
2 回 | 36K | $0.05 (約 8 円) |
| Telegram で質問 → 調査 → 回答 (11 回のやりとり) | 11 回 | 250K | $0.13 (約 20 円) |
| cron 1 回 (ディスク確認) | 2 回 | 40K | $0.06 (約 8 円) |
| この記事の検証すべて | 26 回 | 560K | $0.46 (約 70 円) |
入力の大半はシステムプロンプト (ツール定義、skills の一覧、memory) で、1 回目に 2 万トークンを cache に書き、2 回目以降は cache から読みます。prompt caching が効くので 1 会話の中では安く済みますが、cron は毎回新しいセッションなので、実行のたびに 2 万トークンの cache 書き込みが走ります。cron 1 回 8 円は、毎朝 1 回なら月 250 円、毎時なら月 6,000 円です。Hermes の cron に毎時の監視を任せるのは、費用の面で向いていません。
Claude Pro の月額契約は Hermes では使えません。hermes model の Anthropic OAuth は「Claude Max プランで追加使用クレジットを購入していること」が条件です。Pro の人は API キー (従量課金) を使います。
1. インストール
公式のインストーラーを実行します。
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
私の環境では、途中で C++ コンパイラがないと言われました。
⚠ No C++ compiler found
⚠ Could not install a C++ compiler automatically.
⚠ Node steps that compile native modules (e.g. node-pty) will fail below until one is installed.
sudo apt install build-essential
インストーラーは apt-get install build-essential を自分で試しますが、sudo にパスワードが要る環境では静かに失敗して、この警告になります。言われた通り入れて、もう一度実行します。
sudo apt install -y build-essential
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
2 回目は最後まで通ります。~/.hermes/ に Python の venv と Node.js が同梱で入り、合計 1.4GB です。Hermes 自身は Python ですが、ブラウザ操作などのツールに Node.js を使います。
インストール後、PATH を通します。
echo 'export PATH=$HOME/.hermes/bin:$HOME/.local/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
hermes --version
Hermes Agent v0.21.3 (2026.9.14) · upstream 3e579ee7
Install directory: /home/crz33/.hermes/hermes-agent
Install method: git
Python: 3.12.3
2. モデルの設定 (Claude API)
hermes model で対話式にプロバイダーを選びます。Anthropic を選ぶと、API キーを ~/.hermes/.env に書くよう言われます。
hermes model
# → Anthropic → API key を選ぶ
~/.hermes/.env に追記します。キーはチャットや記事に貼らないでください (私は貼ってしまい、後でローテーションしました)。
# ~/.hermes/.env
ANTHROPIC_API_KEY=sk-ant-...
~/.hermes/config.yaml の先頭がこうなっていれば OK です。
model:
default: claude-sonnet-5
provider: anthropic
まず CLI から 1 回動かします。--oneshot で 1 問 1 答、-Q で余計な出力を抑えます。
hermes chat -q "このサーバーのホスト名とメモリ使用量を教えて" --oneshot -Q
Hermes が terminal ツールで hostname と free -h を実行し、日本語でまとめて返します。ここまで動けば、モデルとツールの疎通は取れています。
Ollama を使いたい人へ
hermes model で Ollama も選べます。ただし Hermes は コンテキスト長 64K 以上 を要求します (ソースの MINIMUM_CONTEXT_LENGTH = 64_000)。足りないと OLLAMA_CONTEXT_LENGTH=64000 ollama serve で起動しろと言われます。
理由はシステムプロンプトの重さです。ツール定義、skills の一覧、memory が毎回入り、1 回の実行で入力 2〜4 万トークンになります。4GB の VPS で動く 1B〜3B のモデルは既定のコンテキストが 4K〜8K で、64K に広げると KV キャッシュだけでメモリを使い切ります。仮に載っても、CPU 推論で 4 万トークンを毎回読み込む時間は現実的ではありません。Ollama でやるなら 8B 以上 + GPU、つまり VPS ではなく手元の PC の話です。
3. Telegram から使う (gateway)
Bot を作る
Telegram で @BotFather を開き、/newbot で Bot を作ります。名前とユーザー名 (末尾 bot) を決めると、トークンが表示されます。
トークンも ~/.hermes/.env に追記します。
# ~/.hermes/.env
TELEGRAM_BOT_TOKEN=1234567890:AA...
gateway を常駐させる
hermes gateway setup で systemd のユーザーサービスとして登録されます。
hermes gateway setup
hermes gateway start
hermes gateway status
● hermes-gateway.service - Hermes Agent Gateway - Messaging Platform Integration
Loaded: loaded (/home/crz33/.config/systemd/user/hermes-gateway.service; enabled)
Active: active (running)
Memory: 256.4M (peak: 286.5M)
loginctl enable-linger もセットアップが有効にしてくれるので、SSH を切っても再起動しても動き続けます。ログは journalctl --user -u hermes-gateway -f です。
その前に hermes doctor を見ておくと、python-telegram-bot (optional, not installed) と出ます。Telegram を使うなら Hermes の venv に入れておきます。
cd ~/.hermes/hermes-agent && VIRTUAL_ENV=venv ~/.hermes/bin/uv pip install python-telegram-bot
hermes gateway restart
uv pip install を普通に打つと「venv が見つからない」と怒られます。VIRTUAL_ENV=venv を付けて Hermes の venv を指すのがポイントです。
ペアリング
Bot に最初のメッセージを送ると、返事の代わりにペアリングコードが来ます。
Your pairing code: XXXXXXXX (valid for 1 hour)
run: hermes pairing approve telegram XXXXXXXX
VPS 側で承認します。
hermes pairing approve telegram XXXXXXXX
Approved! User ... on telegram can now use the bot
Bot のユーザー名は Telegram で検索できるので、誰でもメッセージを送れます。承認していない相手には応答しないので、この仕組みが安全弁です。gateway のログにも Unauthorized user として残ります。
動かす
承認後にもう一度送ると、返事が来ます。

Telegram 上で、実行したコマンド (hostname && echo "---" && free -h) と、モデルの思考 (Reasoning) と、答えが順に届きます。思考が英語なのはモデルの癖で、答えは日本語で返ります。
最初の返事には「home channel が設定されていない」という案内も付きます。home channel は cron の結果を届ける先です。この chat を使うなら /sethome を送ります。思考の表示が邪魔なら /reasoning hide で消えます。
4. memory: 覚えさせて、別の入口から聞く
CLI から覚えさせます。
hermes chat -q "覚えておいて: このサーバーは vpsnotes-001 という名前で、n8n と Ollama が動いている。" --oneshot -Q
覚えました。サーバー名 vpsnotes-001(n8n・Ollama稼働)を記憶に保存しました。
~/.hermes/memories/MEMORY.md に 1 行で書かれます。
サーバー名: vpsnotes-001。n8n と Ollama が稼働中。
このファイルは毎回のシステムプロンプトに入るので、Telegram からの会話でも同じ記憶を持ちます。Claude Code の CLAUDE.md や auto memory と同じ仕組みです。
ただし「覚えているなら調べない」わけではありません。Telegram で /new (会話をリセット) してから「vpsnotes-001 で動いているサービスは何だっけ?」と聞くと、記憶を答えるのではなく systemctl で調べに行きました。

答えは合っていますが、最後の「n8n が 2 系統で動いている」は誤認です。指摘された PID はホストから見えた Docker コンテナ内の node プロセスで、n8n は 1 つしか動いていません。自分で調べる分だけ、もっともらしい誤認もします。これは Claude Code でも同じで、鵜呑みにせず確かめる前提で使います。
5. cron: 自然な言葉でジョブを登録させる
Telegram で「5分後に、このサーバーのディスク使用量を調べて報告して」と送ります。

Hermes が tool_search → tool_describe → Scheduling create の順にツールを使い、自分でジョブを登録します。Linux の cron ではなく Hermes 独自のスケジューラで、gateway が 1 分ごとにジョブを見ています。
hermes cron list
c701e972ee6c [active]
Name: disk_usage_check_5m
Schedule: once in 5m
Next run: 2026-09-21T06:49:00+09:00
Deliver: origin
5 分後に Telegram に届きます。

実行のたびに新しいエージェントが立ち上がり、ジョブの prompt を読んで動きます。1 回の実行で入力 39,940 トークン、出力 293 トークン、6 秒、概算 $0.06 (約 8 円) でした。~/.hermes/cron/usage_audit.jsonl に毎回のトークン数が残るので、費用の見積もりに使えます。
「テストとだけ送って」は届かない
最初に「10 分後に『テスト』とだけ送って」と頼んだら、登録はされたのに何も届きませんでした。~/.hermes/cron/output/<job_id>/ に実行結果が残っていて、理由が分かりました。
cron の実行時、Hermes は prompt の前に「報告すべきことが何もなければ [SILENT] と答えて配信を抑止しろ」という指示を付けます。prompt が「テスト」の 1 語だと、モデルは「報告することなし」と判断して [SILENT] を返し、配信されません。
cron の prompt は「送る文面」ではなく「実行時に新しいエージェントへ渡す指示」です。「〜を調べて報告して」のように仕事のある指示にすると届きます。この 1 回の空振りでも入力 19,705 トークン、約 8 円かかっています。
Claude Code の Remote Control と何が違うか
私は同じ VPS で Claude Code の Remote Control も動かしています。スマホから VPS に指示を出すだけなら、Remote Control で足ります。Claude Code のアプリから VPS の Claude Code に繋がるので、Telegram も Bot もペアリングも要りません。
Hermes を選ぶ理由は、Remote Control にないものが要るときです。
- モデルを変えたい。Claude 以外 (OpenAI、Ollama、Nous の Hermes モデル) をバックエンドにできる
- 自分から話しかけてほしい。cron の結果が Telegram に届く。Remote Control は自分が開いたときだけ
- 家族や同僚と共有したい。Telegram の Bot なら、承認した相手が同じエージェントを使える
逆に、コードを書かせるなら Claude Code の方が圧倒的に上です。Hermes は「常駐する秘書」、Claude Code は「呼び出す開発者」と考えると使い分けやすいです。
つまずいた点
- C++ コンパイラがなくてインストーラーが止まった。「$5 の VPS で動く」と謳っていますが、Ubuntu の最小構成には
build-essentialがありません。先に入れておけば 1 回で通ります uv pip installが venv を見つけない。VIRTUAL_ENV=venvを付けて Hermes の venv を明示します- Claude Pro が使えない。OAuth は Max + 追加クレジットが条件です。Pro の人は API キーで従量課金
- Ollama は載らない。1 回 2〜4 万トークンのシステムプロンプトを、4GB VPS の 1B〜3B モデルに毎回読ませるのは無理です
- cron に「テストと送って」は届かない。
[SILENT]で抑止されます。仕事のある指示にする - memory は「調べない理由」にはならない。覚えていても調べに行き、誤認もする
- API キーとトークンを貼ってしまった。設定中にチャットへ貼ってしまい、検証後にローテーションしました。
.envに直接書く手順にしておけば防げます hermes doctorの SQLite 警告。Ubuntu 24.04 の SQLite 3.45.1 に WAL の不具合があり、Hermes が自動で journal モードに落としています。動作には影響ありません
インストールから Telegram の返事、memory と cron の確認まで、全部で 1 時間ほどでした。
次にやること
- 毎朝のチェックを Hermes の cron に移して、n8n の朝のチェック と比べる。n8n は処理が見える、Hermes は頼むのが楽
- skills を試す。同じ手順を 2 回頼んだとき、Hermes がそれを skill 化するか
- 「Hermes 的なもの」を Claude Code + n8n で自作する。Remote Control で指示、n8n で cron、memory は CLAUDE.md。次の記事で
まとめ
- Hermes Agent は VPS に常駐して Telegram から使える自分専用エージェント。4GB VPS で常駐 256MB、ディスク 1.4GB
- モデルは Claude の API キーで動く。Claude Pro の契約は使えない (Max + 追加クレジットか API キー)
- Ollama の小型モデルは実用にならない。システムプロンプトが 1 回 2〜4 万トークン
- 承認制のペアリングがあるので、Bot を公開しても知らない人には応答しない
- memory は
~/.hermes/memories/MEMORY.mdに 1 行ずつ。CLI と Telegram で共有される - cron は自然な言葉で登録でき、結果は Telegram に届く。prompt は「送る文面」ではなく「指示」
- 費用は cron 1 回 8 円、Telegram の会話 1 往復 20 円。毎朝なら月 250 円、毎時の監視には向かない
- スマホから指示を出すだけなら Claude Code の Remote Control で足りる。Hermes は「モデルを選びたい」「自分から話しかけてほしい」ときに