ยงTL;DR
- Hosting: Use the official Railway one-click template. ~$5โ10/mo container cost. Under 5 minutes to live.
- Pre-configured env vars (
PORT=9119,HERMES_HOME=/opt/data): Leave them as-is. They describe the container's internal environment, not your Mac or Railway account. - Template repo (
shruti060701/hermes-agent-railway): Audited and clean. 12-line Dockerfile, 4-line start script, wraps the officialnousresearch/hermes-agentimage. No secrets, no exfil, no funny business. - Sharklab equivalent: Yes โ and arguably better. Profile Distributions let you package a complete agent (persona, skills, crons, MCP, config) as a git repo. One-command install. Memory-preserving updates. No proprietary registry.
- Strategic upshot: Profile Distributions are the cleanest path yet for the per-client Sebastian play from Colony PRD v4.0.3.
1.Hosting Percy on Railway
Nous Research publishes an official Railway one-click template. You don't need to write a Dockerfile, configure volumes, or wire SSL โ it's a button.
What gets deployed
- Image:
nousresearch/hermes-agent(official Docker Hub) - Persistent volume mounted at
/opt/dataโ holds SQLite DB (FTS5 full-text search), 89 bundled skills, conversation memories, Honcho user models, config files - Gateway process in background โ handles Telegram / Discord / Slack / WhatsApp / WeChat messaging
- WebUI dashboard on
0.0.0.0:9119with--insecureflag (Railway's edge terminates TLS in front of it) - Public HTTPS URL auto-generated by Railway โ first stop is the
/setuppage
Cost & footprint
- ~$5โ10/month for the container (Railway Hobby is $5/mo + usage)
- Hermes itself runs under 512 MB RAM
- LLM API costs are separate โ see provider notes below
Deployment steps
/setup. Add LLM provider key, pick default model, configure messaging gateways (Discord, etc.).~/.hermes/ and uploading into the Railway volume. Or start fresh โ 3 days of trial context isn't much.hermes gateway stop) so two Percys aren't racing for the same Discord events.2.Env-var sanity check
The Railway template ships two pre-configured environment variables. The question that came up during deploy: "Should these match my Mac or my Railway account?"
| Variable | Value | What it actually means |
|---|---|---|
PORT |
9119 |
The port Hermes binds inside the container. Railway's edge proxy maps it to your public HTTPS URL on 443. start.sh hardcodes 0.0.0.0:9119 โ change it and the WebUI becomes unreachable. |
HERMES_HOME |
/opt/data |
The path inside the container for SQLite DB, skills, sessions, config. Must match the volume mount path (also /opt/data). On your Mac it's ~/.hermes/ because that's where the macOS installer put it โ different OS, different path. |
3.Template repo audit โ shruti060701/hermes-agent-railway
Full contents
Dockerfile (12 lines):
FROM nousresearch/hermes-agent:latest # official Nous image
USER root
ENV HERMES_HOME=/opt/data
ENV PORT=9119
COPY start.sh /opt/hermes/start.sh
RUN chmod +x /opt/hermes/start.sh
EXPOSE 9119
CMD ["bash", "/opt/hermes/start.sh"]
start.sh (4 functional lines):
#!/bin/bash
set -e
hermes gateway run & # messaging gateway in background
exec hermes dashboard --host 0.0.0.0 --port "${PORT:-9119}" --no-open --insecure
Why this is clean
- Official base image.
FROM nousresearch/hermes-agent:latestโ pulled directly from Nous's Docker Hub. - No extra code execution. The startup script runs only two documented Hermes CLI commands. No
curl | bash, no surprise package installs, no telemetry callbacks. - No secrets baked in. No API keys, no tokens, no hardcoded credentials anywhere in the repo.
- No suspicious COPY targets. Single file copied (
start.sh) to a non-system path. - The
--insecureflag is correct. It tells Hermes to bind plain HTTP because Railway's edge handles TLS โ same pattern the official docs recommend for hosted deploys.
shruti060701), not Nous Research. You're trusting that (a) they don't push a malicious update later, and (b) Railway doesn't auto-redeploy from a future bad commit.
Mitigation: After your first successful deploy, disconnect the GitHub source in Railway โ Settings โ Source. Railway keeps running the image it already built. Or fork the repo to
dhoesq/hermes-agent-railway and point Railway at your fork (~30 seconds).
4.The big question โ templates & distribution
Does Nous Research allow creating high-level shareable agent "templates" similar to OpenClaw's Sharklab? Yes โ and the design is more open.
Hermes has a three-tier sharing system:
Skills Taps โ share capabilities
You publish a GitHub repo of skills (each with SKILL.md + scripts + references). Others run:
hermes skills tap add yourorg/skills
Their Hermes picks up all your skills automatically. A community skills hub already exists (HermesHub).
OpenClaw equivalent: sharing individual skills.
Personality Presets โ share voice
A standalone SOUL.md file defines persona, gets baked into a profile. Light-touch sharing โ just identity and tone, no skills/crons/MCPs.
OpenClaw equivalent: sharing a SOUL.md.
Profile Distributions โ share a whole agent
A profile distribution packages a complete Hermes agent โ personality, skills, cron jobs, MCP connections, model config โ as a git repo. The agent-as-product.
Repo structure:
my-agent/
โโโ distribution.yaml # manifest: name, version, required env vars
โโโ SOUL.md # persona / system prompt
โโโ config.yaml # model, temperature, tool defaults
โโโ skills/ # bundled skills
โโโ cron/ # scheduled tasks
โโโ mcp.json # MCP server connections
One-command install for recipients:
hermes profile install github.com/kaizen-ai-lab/percy-cos --alias percy
Recipients fill in their own API keys (.env.EXAMPLE โ .env) and the agent runs against their infrastructure with their memory, sessions, and costs.
Authors push updates via git tags:
git tag v1.1.0 && git push --tags
# Recipients run:
hermes profile update percy
# Their memory + sessions are preserved. Only persona/skills/crons update.
5.Hermes Profile Distributions vs OpenClaw Sharklab
| OpenClaw Sharklab | Hermes Profile Distributions | |
|---|---|---|
| Distribution medium | Sharklab registry | Git repo (GitHub / GitLab / private / any) |
| Update mechanism | Push to Sharklab | git tag + push |
| Versioning | Sharklab version field | Git tags (SemVer-style) |
| Private templates | Sharklab-controlled | Free โ any private git repo + SSH / HTTPS auth |
| Recipient memory preserved on update | Varies | Yes Explicit guarantee |
| What's bundled | Skills + config | Skills + cron + MCP + SOUL + config |
| What's explicitly excluded | โ | Secrets (.env, auth.json) + user memory/sessions |
| Marketplace | clawhub.com | HermesHub (community) + any public git repo |
Verdict: Hermes's model is more open than Sharklab. No proprietary registry, no company in the middle. The repo is the template.
The tradeoff: recipients need git installed. On any machine running Hermes in 2026, that's already true.
6.Strategic plays for Kaizen AI Lab
Three concrete moves this unlocks:
Internal Percy template
Build kaizen-ai-lab/percy-cos as a private GitHub distribution. Every Kaizen team member installs Percy with one command. Updates ship via git tag. Obvious immediate win โ gives Percy version control, easy redeploy if Railway eats the volume, and a clean handoff pattern for Carson.
Per-client Sebastian โ Colony PRD v4.0.3 vision, realized
The Colony PRD already calls for "Sebastian as a multi-instanced UI persona, each client gets their own." Hermes Profile Distributions make this trivial.
Each client gets their own profile distro โ e.g. kaizen-ai-lab/sebastian-acme-corp as a private repo shared only with that client. You ship updates via git tag. Their memory stays intact across updates. Their secrets never touch your infra. Per-client isolation by architecture, exactly as the PRD requires.
Public Kaizen agent product
You could ship kaizen-ai-lab/kai-public as an open-source distribution โ a starter "AI Chief of Staff" template anyone can install. Lead-gen via the install command. Premium skills / MCP integrations gated behind a paid tier. A clean product wedge that didn't exist on OpenClaw.
7.Recommended next steps
- Now: Click Deploy on the Railway template. Env vars are correct as shown. Repo is clean. Use OpenRouter as the LLM provider for fast first light.
- Within 24 hours: Configure Percy's WebUI dashboard, wire Discord gateway to
#hermes-agent, retire the Mac gateway. - Within 48 hours: Fork
shruti060701/hermes-agent-railwaytodhoesq/hermes-agent-railway(eliminates supply-chain risk). - Within the week: Spike on a Percy Profile Distribution (
distribution.yaml+ repo layout). Even private-only, gives version control + redeploy safety. - End of June review: When the Hermes-vs-OpenClaw long-term decision lands, the per-client Sebastian play (Profile Distributions) should be a factor in the verdict.