Many Hermes bots, one local supervisor.
Quick start · Documentation · API · Roadmap · Security Policy
Zeus is an independent orchestration layer for running multiple Hermes Agent bots on one machine. Create isolated profiles from templates, manage gateway processes, and inspect what happened through durable job receipts and lifecycle history. Hermes Agent, developed by Nous Research, runs the agents. Zeus manages their local operation.
Status: alpha. Python 3.11+; no required third-party Python runtime dependencies. The offline demo needs no Hermes installation, Docker, or provider credentials. For real bots, use the tested Hermes baseline and platform guidance in the compatibility policy. Pin versions for automation.
| What you need | What Zeus provides |
|---|---|
| Several bots with different roles | Reusable TOML templates and separate Hermes profiles for coding, research, support, and custom work. |
| Predictable local operations | Start, stop, restart, and reconcile gateways with process-ownership checks, lifecycle locks, and bounded recovery. |
| A record of what happened | Durable job receipts, lifecycle history, reconciliation results, and fleet views with observation age and attention reasons. |
| Evidence for repository reviews | Opt-in audits of committed source, with stored reports and a local evidence-based release gate. |
From a checkout, install Zeus and try its local lifecycle:
python3 -m venv .venv
. .venv/bin/activate
python -m pip install -e .
zeus demo up
zeus demo status
zeus demo downThis uses the packaged fake-Hermes executable to exercise real profile rendering
and process management. It performs no AI tasks and contacts no provider.
demo down stops the demo bot; its local state remains under ZEUS_STATE_DIR
(workspace-local .zeus/ by default).
Install the supported Hermes runtime following the compatibility guide, then prepare a private secret file:
hermes --version
if [ ! -e .env ] && [ ! -L .env ]; then
cp .env.example .env
fi
chmod 0600 .envAdd a real, non-empty provider key to .env before continuing. The coding-bot
template requires OPENROUTER_API_KEY; .env.example contains empty placeholders.
You can also supply the named secret through the process environment.
zeus doctor
zeus template list
zeus bot create coder --template coding-bot --env-from OPENROUTER_API_KEY
zeus bot doctor coderThis prepares a profile. Configure a Hermes messaging platform before starting its gateway, or follow the opt-in operator messaging setup to submit explicit jobs. The real Hermes verification guide also covers an isolated loopback gateway check.
--env-from imports the named value from the process environment, then the
trusted workspace .env, without putting the secret in command arguments.
A present but empty environment value is an error. Keep .env private and
excluded from Git. Read the operations guide before
running bots unattended.
flowchart LR
T["TOML templates"] --> P["Separate Hermes profiles"]
Z["Zeus supervisor"] --> P
Z --> H["Hermes gateway per bot"]
P --> H
Z --> S["SQLite lifecycle and job evidence"]
S --> O["Operator CLI and local API"]
Profiles live under .zeus/hermes/profiles/<bot-id>/ and contain config.yaml,
.env, SOUL.md, mcp.json, and cron/jobs.json, with logs alongside them.
Hermes owns agent execution and tools. Zeus owns profile generation, gateway
lifecycle, and local operational evidence.
Bundled templates and workspace templates/*.toml are loaded together.
Custom template IDs must be unique; exact mirrors of bundled templates are
accepted in source checkouts. Built-ins cover OpenRouter-backed bots,
deepseek-coding-bot, kimi-k3-coding-bot, and an opt-in message-bot.
See template authoring for providers, secret imports,
and bounded async delegation.
For a configured bot named coder:
| Task | Command |
|---|---|
| Check its recorded and observed state | zeus bot status coder |
| Read recent logs | zeus bot logs coder |
| Inspect its lifecycle history | zeus bot history coder --limit 50 |
| Request a live health observation | zeus bot diagnostics coder --json |
| Restart the gateway | zeus bot restart coder |
| Apply its configured recovery policy | zeus bot reconcile coder |
| Find bots needing attention | zeus fleet status --attention-only --json |
Live diagnostics require a launch-recorded loopback Hermes API and its private
key. See gateway diagnostics.
Bot JSON exposes desired_state and converged; a started process is not
automatically proof that a bot task will succeed.
Explicit jobs use zeus message send/retry/status/cancel/release/list/capacity/archive.
The opt-in message-bot template sets finite turn and concurrency limits.
Durable receipts preserve submission intent and help operators resolve uncertain
outcomes. Follow the messaging guide for setup, capacity,
retries, cancellation, and receipt retention.
Read existing reconciliation evidence without starting another pass:
zeus reconcile list --limit 20
zeus reconcile show <run-id> --limit 20 --json
zeus fleet status --attention-only --jsonFleet observations describe persisted reconciliation evidence, with timestamps and freshness labels. They perform no live health probe. Results are paginated; use the returned cursor to continue. See reconciliation.
| Project | Responsibility |
|---|---|
| Hermes Agent | Agent runtime, tools, conversations, and delegation. |
| Zeus | Profiles, owned gateway processes, recovery, and evidence on one host. |
| Olymp | Separate cross-host coordination, rollout policy, and approvals. |
Zeus exposes a local JSON API that dashboard backends and Olymp can consume. Keep credentials in the backend, and check version compatibility before enabling controls. See the roadmap for planned work and project scope; this repository does not ship a web dashboard.
Provide ZEUS_API_KEY through your private service environment, then start:
sh scripts/start.shThe default address is 127.0.0.1:4311. All non-health endpoints require
x-zeus-api-key by default. The local-development unauthenticated-read option
does not unlock sensitive diagnostics or mutations.
| Surface | Examples |
|---|---|
| Health and readiness | GET /health, GET /ready |
| Inventory and templates | GET /bots, GET /templates |
| Persisted monitoring | GET /fleet, GET /reconcile/runs, GET /reconcile/runs/<run-id> |
| Bot evidence | GET /bots/<bot-id>/history, GET /bots/<bot-id>/diagnostics |
| Lifecycle controls | Create, start, stop, restart, and reconcile bots. |
Routes also accept /v1. Mutations support an optional durable Idempotency-Key;
unresolved prior attempts return idempotency_indeterminate instead of being
silently repeated. This guarantee is local and retention-bounded.
Monitoring clients should use persisted evidence: the bot status endpoint
can recover pending lifecycle state and is not a side-effect-free read.
See the API reference and OpenAPI contract for authentication, pagination, timeouts, errors, and retry behavior.
zeus audit reviews the exact committed HEAD and stores private reports.
It does not inspect dirty or untracked worktree content, edit source, or deploy
changes. Cross-host scheduling and policy remain outside Zeus.
zeus audit init creates the private Kimi K3 configuration without storing a
credential or contacting a provider. An existing configuration is never replaced.
zeus audit doctorThis non-mutating preflight checks Docker, Hermes Agent 0.21.0, provider credentials, and a preloaded digest-qualified image. It creates no run and downloads nothing.
zeus audit runAudits require those prerequisites and may send selected committed-source excerpts and bounded terminal output to the configured model provider. Repository commands run in validated Docker containers with networking disabled; the host Hermes process still contacts the provider. The private configuration can select another explicit lowercase Hermes provider and model. Review the audit configuration and trust boundaries before running.
zeus audit list
zeus audit show <run-id>
zeus audit gate <run-id>These commands do not invoke Docker, Hermes, provider credential, or image
readiness checks. The local release-v1 gate requires a complete report matching
the current commit, trusted coverage for every required control, and no high or
critical findings. The default configuration authorizes no coverage commands and
cannot pass this gate by itself. A completed audit is evidence within its recorded
scope, not proof that the repository is secure. See the audit guide.
The recorded terminal walkthrough illustrates the operator flow. It is a historical recording, not a current compatibility result. Use the offline quick start above for a runnable demonstration, or the real Hermes verification guide for live checks.
- Zeus is a local process orchestrator, not a sandbox. Separate profiles isolate Hermes state; use a sandboxed Hermes terminal backend for untrusted tasks.
- Do not expose the API directly to a network. Keep it on loopback or behind a separately hardened access layer. Shared multi-user administration is outside the current safety model.
- Zeus supervises the gateway PID, not every tool process an agent may start. Live process introspection varies by operating system.
- Protect the state directory, profile secrets, logs, and audit reports. Audits can share source excerpts with the configured provider.
- Pre-1.0 interfaces and state schemas may change. Pin versions and read upgrade notes; a successful local check does not establish every platform or provider.
| Goal | Guide |
|---|---|
| Understand the design | Architecture · Roadmap |
| Configure bots | Template authoring · Messaging |
| Operate and recover | Operations · Reconcile scheduling |
| Integrate a dashboard or service | API reference · OpenAPI |
| Review committed source | Repository audits |
| Verify runtime compatibility | Compatibility policy · Real Hermes verification |
| Deploy on Linux | Systemd deployment · Fresh VPS test |
| Contribute or package | Contributing · Release process · Changelog |
For development, install the optional dev dependencies as described in
Contributing, then run make check. The
sh scripts/wheel_smoke.sh command checks an installed package; live Hermes
and Docker verification have separate prerequisites documented in their guides.
Zeus is maintained by BrainX. MIT license · Credits · Code of conduct · Security policy
