feat: add combined Hermes Workspace image with Swarm worker support #54

Open
Hermes wants to merge 10 commits from feat/hermes-workspace-combined into master
Collaborator

Description

Image combinée Hermes Agent + Hermes Workspace pour le support Swarm Mode (workers tmux) dans un Docker.

Architecture

hermes-workspace (IMAGE COMBINÉE)
├── Hermes Agent (notre fork custom: outils, GPU, Piper)
├── Hermes Workspace web UI (Node.js)
├── tmux pour Swarm workers
└── hermes CLI dispo pour spawner des workers

hermes (IMAGE EXISTANTE, inchangée)
└── Gateway + dashboard sur ports 8642/9119

Nouveaux fichiers

assets/compose/ai/hermes-workspace/ :

  • Dockerfile — multi-stage build
    • Stage 1 : clone + build Hermes Workspace from source (pnpm)
    • Stage 2 : part de nousresearch/hermes-agent:latest, applique notre fork Hermes + ajoute Node.js/tmux + copie les artifacts workspace
  • entrypoint-combined.sh — attend que le gateway soit healthy, puis lance le workspace
  • himalaya-ro.sh — copié depuis hermes/ pour l'email

Le dossier assets/compose/ai/hermes/ original est conservé intact — fallback si l'image combinée pose problème.

compose.yml

  • hermesHERMES_DASHBOARD=1 + healthcheck (inchangé)
  • hermes-workspace — build depuis ./hermes-workspace, SSH build
    • Se connecte à hermes:8642 (gateway) et :9119 (dashboard)
    • Volume partagé Hermes data
    • Traefik sur workspace.lazyworkhorse.net
    • Réseaux : ai_backend + ai_net

Swarm workers

L'image combinée contient tmux + hermes CLI. Les Swarm workers peuvent être spawnés depuis le conteneur workspace via le Conductor, avec leur propre profil et mémoire persistante. Ils communiquent avec le gateway principal via HTTP.

Prérequis .env (agenix)

HERMES_WORKSPACE_PASSWORD=<mot-de-passe>

Notes

  • L'image se reconstruit à chaque docker compose build (mais seulement quand la branche workspace change)
  • La première build prend ~15min (clone workspace + pnpm install + build)
  • La première fois que le workspace se lance, il faut compléter l'onboarding (connection au gateway)
  • Les workers Swarm utilisent ~/.hermes/profiles/<workerId>/ sur le volume partagé
## Description Image combinée Hermes Agent + Hermes Workspace pour le support Swarm Mode (workers tmux) dans un Docker. ## Architecture ``` hermes-workspace (IMAGE COMBINÉE) ├── Hermes Agent (notre fork custom: outils, GPU, Piper) ├── Hermes Workspace web UI (Node.js) ├── tmux pour Swarm workers └── hermes CLI dispo pour spawner des workers hermes (IMAGE EXISTANTE, inchangée) └── Gateway + dashboard sur ports 8642/9119 ``` ## Nouveaux fichiers `assets/compose/ai/hermes-workspace/` : - **`Dockerfile`** — multi-stage build - Stage 1 : clone + build Hermes Workspace from source (pnpm) - Stage 2 : part de `nousresearch/hermes-agent:latest`, applique notre fork Hermes + ajoute Node.js/tmux + copie les artifacts workspace - **`entrypoint-combined.sh`** — attend que le gateway soit healthy, puis lance le workspace - **`himalaya-ro.sh`** — copié depuis `hermes/` pour l'email Le dossier `assets/compose/ai/hermes/` original est conservé intact — fallback si l'image combinée pose problème. ## compose.yml - **`hermes`** — `HERMES_DASHBOARD=1` + healthcheck (inchangé) - **`hermes-workspace`** — build depuis `./hermes-workspace`, SSH build - Se connecte à `hermes:8642` (gateway) et `:9119` (dashboard) - Volume partagé Hermes data - Traefik sur `workspace.lazyworkhorse.net` - Réseaux : `ai_backend` + `ai_net` ## Swarm workers L'image combinée contient `tmux` + `hermes` CLI. Les Swarm workers peuvent être spawnés depuis le conteneur workspace via le Conductor, avec leur propre profil et mémoire persistante. Ils communiquent avec le gateway principal via HTTP. ## Prérequis .env (agenix) ```env HERMES_WORKSPACE_PASSWORD=<mot-de-passe> ``` ## Notes - L'image se reconstruit à chaque `docker compose build` (mais seulement quand la branche workspace change) - La première build prend ~15min (clone workspace + pnpm install + build) - La première fois que le workspace se lance, il faut compléter l'onboarding (connection au gateway) - Les workers Swarm utilisent `~/.hermes/profiles/<workerId>/` sur le volume partagé
Hermes added 1 commit 2026-05-20 00:50:27 +00:00
- Update compose submodule to feat/hermes-workspace-combined
- New ai/hermes-workspace/ Dockerfile combining our Hermes fork
  + workspace web UI + tmux (Swarm workers)
- Hermes dashboard enabled on port 9119
- Existing hermes/ Dockerfile preserved as fallback
Hermes added 1 commit 2026-05-20 01:23:29 +00:00
Hermes added 1 commit 2026-05-20 01:29:58 +00:00
Hermes added 1 commit 2026-05-20 18:04:33 +00:00
Hermes added 1 commit 2026-05-20 18:05:48 +00:00
Hermes added 1 commit 2026-05-20 18:06:04 +00:00
Hermes added 1 commit 2026-05-20 18:06:36 +00:00
Hermes added 1 commit 2026-05-20 18:07:03 +00:00
Hermes added 1 commit 2026-05-20 18:08:11 +00:00
Hermes added 1 commit 2026-05-20 18:10:13 +00:00
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feat/hermes-workspace-combined:feat/hermes-workspace-combined
git checkout feat/hermes-workspace-combined
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: gortium/infra#54
No description provided.