paperclip: PR3 — Hermes-agenter (Lucius, Oracle, Robin) #114

Merged
znibb merged 5 commits from feature/paperclip-hermes into develop 2026-09-26 13:39:23 +00:00
Owner

Del av #110 (PR3 enligt uppdelningen). PR1 (#111) och PR2 (#112) är mergade.

Vad som ingår

Hermes-agenter — en container per roll. Lucius Fox, Oracle och Robin kör nu varsin Hermes-gateway i hermes-agents och är kopplade till Paperclip via den inbyggda hermes_gateway-adaptern.

  • hermes-lucius, hermes-oracle, hermes-robin: StatefulSet + headless Service + PVC var, pinnad image nousresearch/hermes-agent@sha256:fca358f1… (v2026.9.24, multi-arch-index).
  • configmap.yaml: model.default: deepseek-v4-flash, provider: openai-api, command_allowlist: [execute_code], monterad på /opt/data/config.yaml. --accept-hooks + HERMES_ACCEPT_HOOKS=1 utöver.
  • secret.enc.yaml (SOPS): DeepSeek-nyckeln + egen API_SERVER_KEY och egen Paperclip-agentnyckel per roll.
  • scripts/hermes-agents-apply.sh: pre-merge-verifiering (dekrypterar SOPS och applicerar i ordning).
  • Paperclip-agenterna Lucius/Oracle/Robin är omswitchade från claude_local till hermes_gateway: apiBaseUrl mot http://hermes-<roll>.hermes-agents.svc:8642, apiKey som Paperclip-hemlighet (HERMES_<ROLL>_API_SERVER_KEY), paperclipApiUrl mot den interna Paperclip-servicen, sessionKeyStrategy: issue, och dangerouslyAllowInsecureRemoteHttp: true (ClusterIP-trafik, lämnar aldrig klustret). Rollinstruktionerna skickas som adapterConfig.instructions.

Verifierat

  • Alla tre poddar 1/1, /health + /v1/capabilities svarar med respektive API_SERVER_KEY.
  • End-to-end: en wake på en testuppgift (KOB-8, Robin) gav en kommentar tillbaka via Paperclip-API:t — Paperclip → Hermes → DeepSeek → Paperclip.

Kvar inom PR3 (medvetet utanför den här PR:en)

  • Forgejo-webhook-mottagaren (Forgejo → Paperclip för kiln, kosingen och kobbo-homelab). Kräver en publik endpoint via Pangolin/newt, HMAC-verifiering och en Paperclip-token — alltså ett eget beslut/exponeringsval.
  • paperclip-skillen finns inte inne i Hermes-poddarna, så agenterna får inte hela heartbeat-proceduren (de improviserade under smoke-testet). Onboarding-endpointen GET /api/skills/index kräver token.
  • Forgejo-MCP per roll är fortfarande blockerat av att Paperclips tool gateway nekar privata ClusterIP-endpoints i authenticated+public.

Ingår även (tidigare commits på samma branch)

  • BOARD_API_KEY i SOPS för automation (#110-kommentar).
  • CLAUDE_LOGIN_EDGE_TLS_TERMINATED=true bakom Pangolin.
  • Oracle och Robin hyrda som Paperclip-agenter + Teamet-tabell i docs.
Del av #110 (PR3 enligt uppdelningen). PR1 (#111) och PR2 (#112) är mergade. ## Vad som ingår **Hermes-agenter — en container per roll.** Lucius Fox, Oracle och Robin kör nu varsin Hermes-gateway i `hermes-agents` och är kopplade till Paperclip via den inbyggda `hermes_gateway`-adaptern. - `hermes-lucius`, `hermes-oracle`, `hermes-robin`: StatefulSet + headless Service + PVC var, pinnad image `nousresearch/hermes-agent@sha256:fca358f1…` (v2026.9.24, multi-arch-index). - `configmap.yaml`: `model.default: deepseek-v4-flash`, `provider: openai-api`, `command_allowlist: [execute_code]`, monterad på `/opt/data/config.yaml`. `--accept-hooks` + `HERMES_ACCEPT_HOOKS=1` utöver. - `secret.enc.yaml` (SOPS): DeepSeek-nyckeln + egen `API_SERVER_KEY` och egen Paperclip-agentnyckel per roll. - `scripts/hermes-agents-apply.sh`: pre-merge-verifiering (dekrypterar SOPS och applicerar i ordning). - Paperclip-agenterna Lucius/Oracle/Robin är omswitchade från `claude_local` till `hermes_gateway`: `apiBaseUrl` mot `http://hermes-<roll>.hermes-agents.svc:8642`, `apiKey` som Paperclip-hemlighet (`HERMES_<ROLL>_API_SERVER_KEY`), `paperclipApiUrl` mot den interna Paperclip-servicen, `sessionKeyStrategy: issue`, och `dangerouslyAllowInsecureRemoteHttp: true` (ClusterIP-trafik, lämnar aldrig klustret). Rollinstruktionerna skickas som `adapterConfig.instructions`. ## Verifierat - Alla tre poddar `1/1`, `/health` + `/v1/capabilities` svarar med respektive `API_SERVER_KEY`. - End-to-end: en wake på en testuppgift (KOB-8, Robin) gav en kommentar tillbaka via Paperclip-API:t — Paperclip → Hermes → DeepSeek → Paperclip. ## Kvar inom PR3 (medvetet utanför den här PR:en) - **Forgejo-webhook-mottagaren** (Forgejo → Paperclip för kiln, kosingen och kobbo-homelab). Kräver en publik endpoint via Pangolin/newt, HMAC-verifiering och en Paperclip-token — alltså ett eget beslut/exponeringsval. - **`paperclip`-skillen** finns inte inne i Hermes-poddarna, så agenterna får inte hela heartbeat-proceduren (de improviserade under smoke-testet). Onboarding-endpointen `GET /api/skills/index` kräver token. - **Forgejo-MCP** per roll är fortfarande blockerat av att Paperclips tool gateway nekar privata ClusterIP-endpoints i `authenticated+public`. ## Ingår även (tidigare commits på samma branch) - `BOARD_API_KEY` i SOPS för automation (#110-kommentar). - `CLAUDE_LOGIN_EDGE_TLS_TERMINATED=true` bakom Pangolin. - Oracle och Robin hyrda som Paperclip-agenter + Teamet-tabell i docs.
BOARD_API_KEY (samma format som paperclipai connect) i SOPS-secreten.
Dokumenterar även att Paperclips remote-MCP vägrar privata endpoints i
authenticated/public-läge och den rekommenderade multi-user-vägen via
paperclip.kobbo.se/mcp/...
Claude-loginens setup-token-svar är konfidentiella och transportguarden
tillåter bara direkt TLS eller loopback i local_trusted. Pangolin/Traefik
terminerar TLS och pratar plain HTTP med podden, så servern behöver den
explicita edge-deklarationen.
De två kvarvarande rollerna från RFC #110 (issue #110) är nu skapade i
företaget Kobbo via board-API:t:

- Oracle — DevOps & Actions Engineer (devops): Forgejo Actions, runners,
  build/deploy-automation.
- Robin — Issue Triage & Helpdesk (general): första svar, klassning,
  reproduktion, dedup och ruting.

Båda kör claude_local som resten av teamet och rapporterar till Bruce Wayne.
Hermes/Deepseek-adaptern enligt specen är en separat uppgift (PR3), liksom
per-roll-anslutningen mot Forgejo. docs/paperclip.md har en Teamet-tabell.
Tre Hermes-gateways i hermes-agents, en per roll, kopplade till Paperclip
via den inbyggda hermes_gateway-adaptern.

- StatefulSet + headless Service + PVC per roll (hermes-lucius/-oracle/-robin),
  pinnad image nousresearch/hermes-agent v2026.9.24 (digest).
- Modell deepseek-v4-flash via DeepSeek i en gemensam ConfigMap monterad pa
  /opt/data/config.yaml; command_allowlist: [execute_code] + --accept-hooks.
- Egen API_SERVER_KEY och egen Paperclip-agentnyckel per roll i SOPS-secreten
  hermes-agents-credentials.
- Paperclip-agenterna Lucius/Oracle/Robin byter adapter fran claude_local till
  hermes_gateway (apiBaseUrl mot ClusterIP, apiKey som Paperclip-hemlighet,
  dangerouslyAllowInsecureRemoteHttp eftersom trafiken ar intern plain HTTP).
- scripts/hermes-agents-apply.sh for pre-merge-verifiering.

Verifierat: alla tre poddar 1/1, /health + /v1/capabilities svarar, och en wake
pa en testuppgift (KOB-8) gav en kommentar tillbaka via Paperclip-API:t.

Kvar inom PR3: Forgejo-webhook-mottagaren (publik endpoint + HMAC) och att fa
in paperclip-skillen i Hermes-poddarna. Se docs/paperclip.md.

Refs #110
Board-API-anropen (Paperclip-hemlighet, agentnyckel, adapterbyte) så att
kopplingen går att återskapa och inte bara är DB-state.
znibb merged commit f92b795dfd into develop 2026-09-26 13:39:23 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
znibb/kobbo-homelab!114
No description provided.