🐴

Agent Safehouseで安全に始めるHermes Agent on 自宅Mac mini

に公開

ちょっと前、OpenClawを自宅のMac miniにDocker環境を作ってそこで動かしていましたが、イマイチしっくり来ませんでした。

「自分のMacで24/365で動くパーソナルAIアシスタント」みたいなことがやりたいのに、Docker環境に隔離されすぎていて、OpenClawが全然自由に動けない。ただもちろん、AIエージェントに自分のMacのファイルを自由に読み書きできたり、ツールを自由に使われまくると、それはそれで嫌なので、バランスが難しいのですが。
結局なんだか微妙で、使うのをやめてしまいました。

その後、1か月ほど前にHermes Agentの情報を見かけたときに、「OpenClawみたいなやつの再チャレンジやってみるか」と思ってHermes Agentに入門してみることにしましたが、今度はDockerに隔離せず、Mac miniに直にインストールしてみることにしました。が、もちろん秘匿ファイルなどにアクセスされたく無いので、Agent Safehouseの制限下で動かすことにしました。

Agent Safehouse

https://agent-safehouse.dev/

Agent Safehouseは、要は macOS-native sandboxing for local agents(公式通り)で、AIエージェントに一定の制限をかけつつ、その下でフルパーミッションで動かしたらいい感じですよ、というやつです。

https://github.com/ryonakae/dotfiles/blob/master/config/.config/fish/functions/claude.fish

Claude CodeやCodexなどもAgent Safehouseの制限の元動かしていて、例えばこんな感じで、claude --permission-mode bypassPermissions してます。
でも、.env の中身を読んだり、rm -rf ~ などは実行できないようになっています。

Hermes Agent with Agent Safehouse

CUI/TUIで起動するとき

https://github.com/ryonakae/dotfiles/blob/master/config/.config/fish/functions/hermes.fish

これはだいたいClaude Codeとかと同じです。Safehouseの設定を読んで、 hermes を実行する。

ゲートウェイを起動するとき

https://github.com/ryonakae/dotfiles/blob/master/config/.config/fish/functions/hermes-gateway.fish

こっちはちょっとややこしくて、OpenClawやHermesは、ゲートウェイが常時起動し、それがSlackやDiscordからメッセージを受け付け、処理します。そのゲートウェイを起動する時に、Safehouseの制限をかけないといけません。

なので、デフォルトの hermes gateway start などは使わず、 hermes-gateway start というコマンドでゲートウェイを起動できるようにしています。
あと、この旨をHermesにも教えておかないと、自分で普通に hermes gateway restart とかを実行してくるので、気をつけて。

Hermes Agentに何を許可して何を許可しないのか問題

Mac mini上でHermes Agentくんが良い感じに動いてくれるようになりましたが、じゃあ何を許可するねん/しないねんというところ。
色々試して、今の形に落ち着いてます。

https://github.com/ryonakae/dotfiles/blob/master/config/.config/agent-safehouse/local-overrides.sb

  • とりあえず ~/.hermes 以下は読み書き許可
  • DesktopとかDownloadsとかの僕の個人データが入っている場所は読み書き不可
  • その他機密ファイル系も読み書き不可

こんな感じです。個人データは、もしかしたら将来的には権限を緩めるかもしれません。バックグラウンドで僕が寝ている間にファイル整理をやってくれたりとか、そういうのもアリだなと思うので。でもまだそこまでHermesを使いこなせていないので、今は無し。

Macに直接インストールのメリット

HermesやOpenClawは、デフォルトがMacに直にインストールする想定になっています。それをDockerで隔離、とかすると、エージェントが想定しているデフォルト環境と実際の環境が異なるので、ツールの実行に失敗したりして、それを矯正するメモリやスキルを追加することになります。
その無駄な感じがなくなり、スッキリするのがまず良いところ。
※Safehouse制限下なので、本当の意味ではデフォルト環境じゃないけど

あとは、人間(僕)と同じファイルを自然に読み書きできるし、同じツールを使えるところ。Macに入れたツールをHermesも実行出来る場合がほとんどなので、Hermes用に別に導入してあげる、みたいなことが無くなるのも、良いところです。Dockerで動かしていたときはそこが地味に辛かった。

Hermes Agent、結構いい

「別にClaude Codeでいいじゃん」「Codexでいいじゃん」は、「それはそう」な上で、Hermesの良いところだなと思うのは以下。

  • かなりタスクを自走するようにハーネスが組まれている
  • スキル・メモリを自己改善する仕組みが比較的整っている
  • OpenClawより自由度が低く、Claude Code/Codexより自由度が高い、ちょうど両者を足して2で割ったような立ち位置

という感じで、結構気に入ってます。
最近は個人でClaude Code/Codexでやっている開発を全部Hermesに移せないかなと思っているのですが、まだそこまでは出来ていない状態。

今後ちょっとずつ試していきたいです。

Discussion