Skip to content

feat(oberon): deploy hermes-agent with Slack integration and OpenCode Go#31

Merged
thinceller merged 7 commits into
masterfrom
claude/adoring-bardeen-dc7e57
Jun 14, 2026
Merged

feat(oberon): deploy hermes-agent with Slack integration and OpenCode Go#31
thinceller merged 7 commits into
masterfrom
claude/adoring-bardeen-dc7e57

Conversation

@thinceller

Copy link
Copy Markdown
Owner

Summary

  • hermes-agent v0.16.0 を oberon (NixOS 25.11) に導入
  • プロバイダ: OpenCode Go (opencode-go、APIキー認証)
  • Slack Bot 統合 (slack-bolt を extraDependencyGroups = [ "messaging" ] で事前ベイク)
  • Web ダッシュボードを独立 systemd unit (hermes-agent-dashboard) で 127.0.0.1:9119 に常駐
  • Cloudflare Tunnel + Access 経由で hermes.thinceller.dev に公開

主な設計判断

  • hermes gateway は native mode で HERMES_DASHBOARD を読まないため、dashboard を別 unit に分離
  • MESSAGING_CWD (nixosModule が systemd Environment= にセット) は v0.16.0 で deprecated → settings.terminal.cwd に移行し systemd 環境から削除
  • sops secrets: hermes.env (dotenv format) のみ。OAuth 不要なため hermes-auth.json は削除

手動手順(リポジトリ外)

  • Cloudflare Zero Trust で hermes.thinceller.dev Public Hostname の HTTP Host Header を 127.0.0.1 に設定(ダッシュボードの Host 検証を通過させるため)
  • Slack アプリに groups:read スコープを追加してワークスペースに再インストール

thinceller and others added 7 commits June 14, 2026 10:38
- Add hermes-agent flake input (NousResearch/hermes-agent v0.16.0)
- Enable services.hermes-agent with openai-codex provider and messaging extras
- Add SOPS-encrypted secrets for Slack tokens (hermes.env) and Codex OAuth (hermes-auth.json)
- Add separate systemd unit (hermes-agent-dashboard) for the web UI on 127.0.0.1:9119,
  since HERMES_DASHBOARD env var is only consumed by Docker/s6 entrypoint, not native gateway
- Use format = "json" for hermes-auth.json (per-field SOPS JSON, not binary envelope)
- Note cloudflared ingress for hermes.thinceller.dev must be added via Cloudflare dashboard

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
format = "json" extracts a named key ["hermes-auth"] from the JSON,
which does not exist in auth.json. format = "binary" writes the entire
decrypted file content, which is the correct behavior for an auth.json
seed file.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace openai-codex OAuth setup with OpenCode Go API key:
- Change model.provider to "opencode-go" (OPENCODE_GO_API_KEY in env)
- Remove authFile and hermes-auth.json (no OAuth needed)
- Simplifies secrets to a single hermes.env file

Also fixes the previous sops activation failure that prevented
/run/secrets/cloudflared from being written.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…n warning

- Override TimeoutStopSec to 210s (drain_timeout 180s + 30s buffer)
- Add settings.terminal.cwd as the recommended replacement for MESSAGING_CWD
- Override systemd environment to remove MESSAGING_CWD (deprecated in v0.16.0,
  but still set by nixosModule upstream via Environment= directive)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- cloudflared.nix: adopt master's detailed comment structure,
  add hermes.thinceller.dev to Public Hostnames record
- default.nix: include both hermes-agent and nix-index-database modules

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@thinceller thinceller merged commit c1928ba into master Jun 14, 2026
3 checks passed
@thinceller thinceller deleted the claude/adoring-bardeen-dc7e57 branch June 14, 2026 04:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant