hermes-workspace README

The project's README from github.com/outsourc-e/hermes-workspace. As one markdown file: README.md.

Hermes Workspace

Hermes Workspace

Your AI agent's command center — chat, files, memory, skills, and terminal in one place.

Version License Node PRs Welcome

Not a chat wrapper. A complete workspace — orchestrate agents, browse memory, manage skills, and control everything from one interface.

v2 — zero-fork. Clone, don't fork. Runs on vanilla NousResearch/hermes-agent installed via Nous's own installer. Chat, sessions, memory, skills, jobs, MCP, terminal, dashboard, Agent View, and Operations are all in vanilla parity. Conductor uses the dashboard mission API when available and falls back to Workspace-native Swarm dispatch (mode: native-swarm) when the dashboard endpoint is absent, preserving zero-fork behavior (#262).

Hermes Workspace


Swarm Mode

Hermes Agent Swarm turns the workspace into a live control plane: unlimited Hermes Agents, 1 orchestrator, 0 humans manually dispatching. Persistent tmux workers keep context across tasks, rotate safely, and report proof-bearing checkpoints. Role-based dispatch routes builders, reviewers, docs, research, ops, triage, QA, and lab lanes without turning Eric into the task router. A byte-verified review gate protects release branches before PRs ship. Autonomous PR/issue lanes, lab experiments, and the repair playbook keep the machine moving while humans handle judgment.

Start here: docs/swarm/


✨ What's inside


📸 Screenshots

Chat Conductor
Chat Conductor
Dashboard Memory
Dashboard Memory
Terminal Settings
Terminal Settings
Tasks Jobs
Tasks Jobs

🚀 Quick Start

Three paths — pick the one that matches you:

Path Best for Time
🐳 Docker Compose 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

curl -fsSL https://raw.githubusercontent.com/outsourc-e/hermes-workspace/main/install.sh | bash

This installs hermes-agent via Nous's official installer, clones this repo, sets up .env, and installs dependencies. Then:

hermes gateway run                  # terminal 1
cd ~/hermes-workspace && pnpm dev   # terminal 2

Open http://localhost:3000. That's it.


Already running hermes-agent? Attach the workspace to it

If you already have hermes-agent installed (via Nous's official installer, a source checkout, systemd, Docker, or another existing setup) and it's serving the gateway at http://<host>:8642, you don't need to reinstall anything — just point the workspace at it.

git clone https://github.com/outsourc-e/hermes-workspace.git
cd hermes-workspace
pnpm install
cp .env.example .env

# Point at your existing Hermes Agent services.
echo 'HERMES_API_URL=http://127.0.0.1:8642' >> .env
# Zero-fork installs also need the separate dashboard API for config/sessions/skills/jobs.
echo 'HERMES_DASHBOARD_URL=http://127.0.0.1:9119' >> .env

# If your gateway was started with API_SERVER_KEY (auth enabled), set the same value:
# echo 'HERMES_API_TOKEN=***' >> .env

pnpm dev                            # http://localhost:3000 (override with PORT=4000 pnpm dev)

Requirements on the agent side:

Verify both services before opening the workspace:

If /api/sessions is already returning data, do not start another gateway just because the UI still says Offline — refresh or reprobe the Workspace UI first.

If your default model is gpt-5.4 / openai-codex, make sure Codex CLI auth is live before testing chat:

codex login

Then start the workspace and complete onboarding — it should detect the gateway + dashboard pair and unlock the enhanced panes automatically.

Running on a remote host (Tailscale / VPN / LAN)

If the workspace and its browser live on different machines — e.g. the workspace runs on a Pi/Mac/home server and you access it from your phone over Tailscale — point HERMES_API_URL at the reachable backend address, not 127.0.0.1:

# On the server running the workspace + gateway:
echo 'HERMES_API_URL=http://100.x.y.z:8642' >> .env
echo 'HERMES_DASHBOARD_URL=http://100.x.y.z:9119' >> .env

# Also tell the gateway to listen on all interfaces so Tailscale peers can reach it.
# In ~/.hermes/.env (or wherever the gateway reads config):
echo 'API_SERVER_HOST=0.0.0.0' >> ~/.hermes/.env

Then restart the gateway, dashboard, and workspace. Hit the workspace from the remote device and the connection probe will use the Tailscale IP instead of localhost. Both HERMES_API_URL and HERMES_DASHBOARD_URL must be set to Tailscale/LAN-reachable URLs — setting only one will leave the other probing 127.0.0.1 and failing.

If you've already started the workspace, you can update both URLs from Settings → Connection without restarting. The values are persisted to ~/.hermes/workspace-overrides.json and take effect immediately (gateway capabilities are reprobed on save). Editing .env still works for pre-start config and for CI/containers.


Manual install

Hermes Workspace works with any OpenAI-compatible backend. If your backend also exposes Hermes Agent gateway APIs, enhanced features like sessions, memory, skills, and jobs unlock automatically.

Prerequisites

Step 1: Start your backend

Point Hermes Workspace at any backend that supports:

Example Hermes Agent gateway setup (from scratch):

# Install hermes-agent via Nous's official installer
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

# Configure a provider + start the gateway
hermes setup
hermes gateway run

Our one-liner installer (below) does both steps automatically. If you're using another OpenAI-compatible server, just note its base URL.

Step 2: Install & Run Hermes Workspace

# In a new terminal
git clone https://github.com/outsourc-e/hermes-workspace.git
cd hermes-workspace
pnpm install
cp .env.example .env
printf '\nHERMES_API_URL=http://127.0.0.1:8642\n' >> .env
pnpm dev                   # Starts on http://localhost:3000

Verify: Open http://localhost:3000 and complete the onboarding flow. First connect the backend, then verify chat works. If your gateway exposes Hermes Agent APIs, advanced features appear automatically.

Run without an open terminal

After pnpm build, install Workspace as a user-level launchd/systemd service:

chmod +x scripts/install-dashboard-service.sh
scripts/install-dashboard-service.sh

See docs/dashboard-service.md for macOS launchd, Linux systemd, logs, overrides, and uninstall steps.

Environment Variables

# OpenAI-compatible backend URL
HERMES_API_URL=http://127.0.0.1:8642

# Optional: provider keys the Hermes Agent gateway can read at runtime.
# You only need the key(s) for whichever provider(s) you actually use.
# OPENAI_API_KEY=sk-...                # GPT / o-series / OpenAI-compatible
# OPENROUTER_API_KEY=sk-or-v1-...      # OpenRouter (incl. free models)
# GOOGLE_API_KEY=AIza...               # Gemini
# (Ollama / LM Studio / local servers don't need a key)

# Optional: password-protect the web UI
# HERMES_PASSWORD=your_password

🧠 Local Models (Ollama, Atomic Chat, LM Studio, vLLM)

Hermes Workspace supports two modes with local models:

Portable Mode (Easiest)

Point the workspace directly at your local server — no Hermes Agent gateway needed.

Atomic Chat

# Start workspace pointed at Atomic Chat
HERMES_API_URL=http://127.0.0.1:1337/v1 pnpm dev

Download Atomic Chat, launch the desktop app, and make sure a model is loaded before starting Hermes Workspace.

Ollama

# Start Ollama
OLLAMA_ORIGINS=* ollama serve

# Start workspace pointed at Ollama
HERMES_API_URL=http://127.0.0.1:11434 pnpm dev

Chat works immediately. Sessions, memory, and skills show "Not Available" — that's expected in portable mode.

Enhanced Mode (Full Features)

Route through the Hermes Agent gateway for sessions, memory, skills, jobs, and tools.

Here are two explicit ~/.hermes/config.yaml examples for the local providers we support directly in the workspace:

Atomic Chat

provider: atomic-chat
model: your-model-name
custom_providers:
  - name: atomic-chat
    base_url: http://127.0.0.1:1337/v1
    api_key: atomic-chat
    api_mode: chat_completions

Ollama

provider: ollama
model: qwen3:32b
custom_providers:
  - name: ollama
    base_url: http://127.0.0.1:11434/v1
    api_key: ollama
    api_mode: chat_completions

You can adapt the same shape for other OpenAI-compatible local runners, but Atomic Chat and Ollama are the two built-in local paths documented in the workspace UI.

2. Enable the API server in ~/.hermes/.env:

API_SERVER_ENABLED=true

3. Start the gateway, dashboard, and workspace:

hermes gateway run          # Starts core APIs on :8642
hermes dashboard            # Starts dashboard APIs on :9119
HERMES_API_URL=http://127.0.0.1:8642 \
HERMES_DASHBOARD_URL=http://127.0.0.1:9119 \
pnpm dev

For authenticated gateways, also set HERMES_API_TOKEN in the workspace environment to the same value as API_SERVER_KEY.

All workspace features unlock automatically once both services are reachable — sessions persist, memory saves across chats, skills are available, and the dashboard shows real usage data.

Works with any OpenAI-compatible server — Atomic Chat, Ollama, LM Studio, vLLM, llama.cpp, LocalAI, etc. Just change the base_url and model in the config above.


🤝 Pair an Agent with the Workspace

Workspace is the UI. Hermes Agent is the brain. They talk over two HTTP services on localhost (or any reachable network).

┌───────────────┐         :8642 gateway          ┌────────────────┐
│   Workspace    │ ─────────────────────▶ │  Hermes Agent  │
│   :3000 (UI)   │ ◀───────────────────── │  CLI / brain   │
└───────────────┘         :9119 dashboard        └────────────────┘

Two services, three commands

hermes gateway run     # terminal 1 · :8642 · chat, models, streaming, jobs
hermes dashboard       # terminal 2 · :9119 · sessions, skills, config, MCP
cd ~/hermes-workspace && pnpm dev   # terminal 3 · :3000 · the UI

Tip: pnpm start:all starts gateway + dashboard + workspace in one shot if you've installed via the one-liner.

Windows (PowerShell + WSL) one-command startup

If you use Hermes Workspace from Windows with the agent running in WSL, use the helper script in this repo:

# from the repo root
.\scripts\start-hermes-workspace.ps1

To force a clean relaunch of the tmux session:

.\scripts\start-hermes-workspace.ps1 -Restart

Optional parameters:

Verify the pairing

curl http://127.0.0.1:8642/health        # → {"status":"ok","platform":"hermes-agent"}
curl http://127.0.0.1:9119/api/status    # → {"status":"ok", ...}

Both must return 200. If either fails, the workspace will fall back to portable mode (chat works, sessions/skills/memory show "Not Available").

.env settings the workspace cares about

# Required: where the gateway is
HERMES_API_URL=http://127.0.0.1:8642

# Recommended: where the dashboard is (unlocks sessions/skills/config/MCP/jobs)
HERMES_DASHBOARD_URL=http://127.0.0.1:9119

# Only if your gateway was started with API_SERVER_KEY=... — paste the same value:
# HERMES_API_TOKEN=***

# Optional: password-protect the web UI itself
# HERMES_PASSWORD=***

Common pairing scenarios

Scenario Set this
Workspace + gateway on the same machine HERMES_API_URL=http://127.0.0.1:8642, HERMES_DASHBOARD_URL=http://127.0.0.1:9119
Gateway on a remote server (Tailscale / VPN) Set both URLs to the reachable IP (e.g. http://100.x.y.z:8642) and add API_SERVER_HOST=0.0.0.0 to the gateway's ~/.hermes/.env
Already-running hermes-agent from upstream installer Just set HERMES_API_URL + HERMES_DASHBOARD_URL and skip the one-liner installer
Multiple agent profiles Profiles live under ~/.hermes/profiles/<name> — the dashboard switches between them at runtime; workspace follows automatically

Live re-pairing (no restart)

If you've already started the workspace, change either URL from Settings → Connection without restarting. Values persist to ~/.hermes/workspace-overrides.json and gateway capabilities are reprobed on save.

Troubleshooting


🐳 Docker Quickstart

Open in GitHub Codespaces

The Docker setup runs both the Hermes Agent gateway and Hermes Workspace together.

Prerequisites

Step 1: Configure Environment

git clone https://github.com/outsourc-e/hermes-workspace.git
cd hermes-workspace
cp .env.example .env

Edit .env and add at least one LLM provider key — whichever provider you want hermes-agent to use:

# Pick one (or more). You do NOT need all of these.
# OPENAI_API_KEY=sk-...                # GPT / o-series / OpenAI-compatible
# OPENROUTER_API_KEY=sk-or-v1-...      # OpenRouter (free models available)
# GOOGLE_API_KEY=AIza...               # Gemini

Usi

hermes-workspace (outsourc-e/hermes-workspace)

Searching Database…

这是什么?Hermes Workspace 是 Hermes Agent 的网页版指挥中心:它提供一个统一界面,可以聊天、管理文件、记忆、技能、MCP、终端,并查看实时的多智能体仪表盘,而不只是一个单纯的聊天窗口。
这是独立应用,还是需要单独运行 Hermes Agent?它只是界面层,Hermes Agent 才是核心。工作区通过 HTTP 与 Hermes Agent 的网关和仪表盘通信;如果找不到它们,就会退回到“便携模式”(仅聊天)。
我该怎么让它跑起来?有三种方式:使用 Docker Compose 启动整套服务;在 macOS/Linux 上运行一行命令安装程序,它会安装 hermes-agent、克隆仓库、写入 .env 并安装依赖;或者把工作区指向你已经在运行的 Hermes Agent 网关。
试用之前需要先安装什么?Node.js 22+、任意兼容 OpenAI 接口的后端,以及可选的 Python 3.11+(如果你想运行本地 Hermes Agent 网关)。
如果网关和仪表盘没有正确配对,会发生什么?工作区会悄悄切换到便携模式:聊天仍可使用,但会话、记忆和技能会显示“不可用”,直到网关和仪表盘都能连通;如果设置了鉴权,还需要 HERMESAPITOKEN 与 APISERVERKEY 一致。
如果我的 Hermes Agent 装在 WSL 里,而我用的是 Windows,还能运行吗?可以。有一个专门为 Windows 提供的 PowerShell 辅助脚本,它会通过 tmux 在 WSL 中启动智能体,并一条命令就把工作区连接上去。
什么是 Swarm Mode?Swarm Mode 会把工作区变成一个控制平面,在一个编排器下运行数量不限的持久化 Hermes Agent 工作节点,通过基于 tmux 的工作节点分派构建、审查、文档、研究、运维等角色,并在 PR 发布前设有逐字节校验的审查关卡。
它支持 Ollama 或 LM Studio 这类本地模型吗?支持。在“便携模式”下,你可以直接指向任意兼容 OpenAI 接口的本地服务(Ollama、Atomic Chat、LM Studio、vLLM、llama.cpp、LocalAI);聊天可以立即使用,但会话、记忆和技能需要 Hermes Agent 网关才能获得完整功能。
技能浏览器里有什么?一个包含 2000 多个技能的目录,带有来源标识、筛选器、源路径,还内置了技能市场,可以直接在工作区界面中查看和管理。
为什么叫“零分叉”工作区?它的设计目标是在原版、未经修改的 NousResearch/hermes-agent 安装(通过 Nous 自己的安装程序)上运行,而不需要你 fork 并修改智能体本身;工作区会自动适配网关所提供的任何 API。
Creator
outsourc-e
Size
107.4 MB
Stars
6.7K
Age
7mo
Commits · 90 Days