chore(docker): drop stale local Dockerfiles, simplify dev overlay (#237)

Removes `docker/agent/Dockerfile` and `docker/workspace/Dockerfile`:

- `docker/agent/Dockerfile` cloned the wrong repo (`outsourc-e/hermes-agent`
  is the workspace fork, not the agent) and ran the old `claude` binary
  name. It would not build successfully.
- `docker/workspace/Dockerfile` was a dev-mode (`pnpm dev`) variant that
  duplicated the production root `Dockerfile` for no benefit; the dev
  overlay now reuses the root Dockerfile with hot-build instead.

Updates `docker-compose.dev.yml` to build only the workspace from local
source via the canonical root Dockerfile. The Hermes Agent service stays
on the canonical `nousresearch/hermes-agent:latest` upstream image
(~750k pulls), with a clear note in the overlay header explaining how
to override if a custom agent image is genuinely needed.

Adds a quick-start path table at the top of README pointing 'compose
gig' users straight at the Docker section, and rewrites the dev-overlay
section to match the simpler reality.

This addresses the recurring 'can we get a docker image so I can set
up a compose gig instead of building from source' community ask. The
image already exists at `ghcr.io/outsourc-e/hermes-workspace:latest`,
the compose file just works \u2014 the stale local Dockerfiles were the
only thing making the dev overlay confusing.

Co-authored-by: Aurora release bot <release@outsourc-e.com>
This commit is contained in:
Eric
2026-05-02 14:07:28 -04:00
committed by GitHub
parent 00bbace2e1
commit 57618a000e
4 changed files with 31 additions and 47 deletions

View File

@@ -72,7 +72,15 @@ Start here: [docs/swarm/](./docs/swarm/)
## 🚀 Quick Start ## 🚀 Quick Start
### One-line install (recommended) Three paths — pick the one that matches you:
| Path | Best for | Time |
|---|---|---|
| **🐳 [Docker Compose](#-docker-quickstart)** | Self-hosters, home labs, "give me a compose gig" | ~2 min |
| **🌐 One-line install** | Local dev on macOS/Linux | ~3 min |
| **🔌 Attach to existing `hermes-agent`** | You already run Hermes Agent | ~1 min |
### One-line install
```bash ```bash
curl -fsSL https://raw.githubusercontent.com/outsourc-e/hermes-workspace/main/install.sh | bash curl -fsSL https://raw.githubusercontent.com/outsourc-e/hermes-workspace/main/install.sh | bash
@@ -372,14 +380,19 @@ Open `http://localhost:3000` and complete the onboarding.
### Building from source ### Building from source
Want to hack on the workspace or the bundled agent Dockerfile? Use the dev overlay: Want to hack on the workspace and have local changes hot-built into the
container? Use the dev overlay:
```bash ```bash
docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build
``` ```
The base `docker-compose.yml` stays untouched — the overlay adds `build:` blocks The base `docker-compose.yml` stays untouched — the overlay adds a `build:`
that take priority over `image:`, so both services compile from local source. block for the `hermes-workspace` service so the local repo is compiled
instead of pulled. The Hermes Agent service still uses the canonical
`nousresearch/hermes-agent:latest` image; if you need a custom agent
build, tag it locally and override `image:` in your own
`compose.override.yml`.
### Using a Pre-Built Image (Coolify / Easypanel / Dokploy / Unraid) ### Using a Pre-Built Image (Coolify / Easypanel / Dokploy / Unraid)

View File

@@ -1,23 +1,26 @@
# Hermes Workspace + Agent — Development Overlay # Hermes Workspace — Development Overlay
# #
# Builds both services from source instead of pulling pre-built images. # Builds the Workspace image from local source instead of pulling the
# Use when modifying the workspace or the bundled agent Dockerfile. # pre-built GHCR image. Use when iterating on Workspace code (server,
# routes, UI) and you want changes to land in the container without
# publishing a release first.
#
# The Hermes Agent service still uses the canonical upstream image
# (nousresearch/hermes-agent:latest, ~750k pulls) — there is no need to
# rebuild that locally, and doing so just couples the compose stack to
# whatever vendored Python the workspace happens to ship. If you really
# need a custom agent image, build/tag it separately and override the
# `image:` field in your own .override.yml.
# #
# Usage: # Usage:
# docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build # docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build
# #
# The base docker-compose.yml stays untouched for a regular install-and-run. # The base docker-compose.yml stays untouched for a regular install-and-run.
# When this overlay is merged in, `build:` takes priority over `image:` for # When this overlay is merged in, `build:` takes priority over `image:` for
# each service, so source code is compiled locally and tagged with the # the workspace service so local source is compiled instead of pulled.
# upstream image name.
services: services:
hermes-agent:
build:
context: .
dockerfile: docker/agent/Dockerfile
hermes-workspace: hermes-workspace:
build: build:
context: . context: .
dockerfile: docker/workspace/Dockerfile dockerfile: ./Dockerfile

View File

@@ -1,15 +0,0 @@
FROM python:3.11-slim
RUN apt-get update \
&& apt-get install -y --no-install-recommends curl git \
&& rm -rf /var/lib/apt/lists/*
RUN git clone https://github.com/outsourc-e/hermes-agent.git /app
WORKDIR /app
RUN pip install --no-cache-dir -e .
EXPOSE 8642
CMD ["claude", "gateway", "run"]

View File

@@ -1,17 +0,0 @@
FROM node:22-slim
RUN npm install -g pnpm
WORKDIR /app
COPY package.json pnpm-lock.yaml* ./
RUN pnpm install --no-frozen-lockfile
COPY . .
ENV HERMES_API_URL=http://hermes-agent:8642
EXPOSE 3000
CMD ["pnpm", "dev", "--host", "0.0.0.0", "--port", "3000"]