VPS Notes
セルフホスト

Hermes Agent を VPS で動かす: 何ができるか、必要スペック、料金、Telegram から使うまで

Nous Research の Hermes Agent を 4GB の VPS に入れ、Claude をバックエンドに Telegram から VPS を操作するまでを実機で確認しました。インストール、gateway の常駐、memory と cron の実際の挙動、1 回あたりのトークン消費、つまずいた点まで。

hermes-agentai-agentclaudetelegramollamaxserver-vps

本記事にはプロモーション (アフィリエイト広告) が含まれます。

「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 にツールを持たせて自律的に動かす」枠組みですが、方向が違います。

Hermes の特徴は 3 つです。

  1. gateway: Telegram、Discord、Slack などのメッセージングアプリを入口にする。スマホから VPS に指示が出せる
  2. memory と skills: 会話で覚えたことを ~/.hermes/memories/ に書き、次回のシステムプロンプトに入れる。繰り返す手順は skill としてファイル化する
  3. cron: 「毎朝 8 時にディスクを確認して」と言えば、Hermes 自身がジョブを登録し、結果を Telegram に届ける

Claude Code にも memory と cron に相当する機能はあります。違いは、Hermes が「モデルを選べる」ことと「メッセージングアプリが正面玄関」であることです。

この記事で使う環境

XServer VPS クラウド
4GB (4 コア) で月 2,480 円〜。この記事の検証環境。Hermes 単体なら 2GB でも動きますが、n8n や Ollama と同居させるなら 4GB です。
公式サイトを見る

必要スペックと料金

項目 実測
ディスク ~/.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 ツールで hostnamefree -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 で Hermes に質問し、hostname と free -h を実行して日本語で返事が来たところ

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 で調べに行きました。

/new でセッションをリセットし、稼働中のサービスを聞いたら systemctl で調べに行ったところ

答えは合っていますが、最後の「n8n が 2 系統で動いている」は誤認です。指摘された PID はホストから見えた Docker コンテナ内の node プロセスで、n8n は 1 つしか動いていません。自分で調べる分だけ、もっともらしい誤認もします。これは Claude Code でも同じで、鵜呑みにせず確かめる前提で使います。

5. cron: 自然な言葉でジョブを登録させる

Telegram で「5分後に、このサーバーのディスク使用量を調べて報告して」と送ります。

「10分後に送って」と頼むと Hermes が Scheduling create でジョブを登録したところ

Hermes が tool_searchtool_describeScheduling 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 に届きます。

cron が実行され、df -h の結果がまとめられて 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 Code の方が圧倒的に上です。Hermes は「常駐する秘書」、Claude Code は「呼び出す開発者」と考えると使い分けやすいです。

つまずいた点

インストールから Telegram の返事、memory と cron の確認まで、全部で 1 時間ほどでした。

次にやること

まとめ

XServer VPS クラウド
この記事の検証環境。Hermes を n8n や Ollama と同居させるなら 4GB、Hermes だけなら 2GB でも動きます。
公式サイトを見る