Hostinger VPS: Hermes Agent → Hermes WebUI migration impossible (tini + UID mismatch + sessions)
Context
Migrating from a standalone nousresearch/hermes-agent:latest container to the Hostinger "Hermes WebUI" catalog, which deploys two containers:
hermes-webui (published port, UID 1024)
hermes-agent (backend, UID 10000)
- Shared volume for home directory
Problem #1: Immediate agent crash (tini: No such file or directory)
The agent container created by the Hostinger catalog crashes on startup with:
/usr/bin/tini: No such file or directory
Root cause: The nousresearch/hermes-agent:latest image migrated from tini to s6-overlay as its init system. tini no longer exists in the image — the default entrypoint is now /init. The Hostinger catalog appears to use a wrapper that still references the old tini-based entrypoint.
Related: #32559, #25218
Problem #2: UID mismatch (1024 vs 10000) on shared volume
- WebUI creates files as UID 1024
- Agent runs as UID 10000
- Result: files created by one are unreadable by the other —
auth.lock errors, sessions invisible
Root cause: s6-overlay strips environment variables by default. Even when passing HERMES_UID=1024, the variable never reaches cont-init scripts (PR #33148 added S6_KEEP_ENV=1 to fix this). PR #32412 also fixed propagation via #!/command/with-contenv sh shebangs.
Related: #32559, #24537, #33148
Problem #3: Incompatible session formats
Sessions from the old standalone agent (sessions/sessions.json + individual files) are not recognized by the WebUI (which uses webui/.sessions.json + a different format). No batch migration possible — import sessions one by one through the UI.
Related: #23717 (RFC pluggable SessionDB)
Problem #4: Telegram polling conflict
If the old gateway is still running, the new container cannot take over Telegram polling.
Workarounds that should work (untested on Hostinger)
- Pin to
v2026.5.16 (last tini-based image before the s6-overlay migration) instead of latest
- Wait for the Hostinger catalog to be updated to use
/init (s6-overlay) as entrypoint, with S6_KEEP_ENV=1 and proper HERMES_UID handling
- Manual
docker run to replace the crashed agent container (as documented in the hostinger-webui-migration skill)
Questions
- Can someone at NousResearch coordinate with Hostinger to update the catalog template?
- Is there a simple workaround for UID mismatch on s6-overlay with shared volumes?
- Is a stable tini-based image tag being maintained for Hostinger deployments?
Deployed on Hostinger KVM VPS, Hermes 0.14.x, catalog "Hermes WebUI"
Hostinger VPS: Hermes Agent → Hermes WebUI migration impossible (tini + UID mismatch + sessions)
Context
Migrating from a standalone
nousresearch/hermes-agent:latestcontainer to the Hostinger "Hermes WebUI" catalog, which deploys two containers:hermes-webui(published port, UID 1024)hermes-agent(backend, UID 10000)Problem #1: Immediate agent crash (
tini: No such file or directory)The agent container created by the Hostinger catalog crashes on startup with:
Root cause: The
nousresearch/hermes-agent:latestimage migrated fromtinitos6-overlayas its init system.tinino longer exists in the image — the default entrypoint is now/init. The Hostinger catalog appears to use a wrapper that still references the old tini-based entrypoint.Related: #32559, #25218
Problem #2: UID mismatch (1024 vs 10000) on shared volume
auth.lockerrors, sessions invisibleRoot cause: s6-overlay strips environment variables by default. Even when passing
HERMES_UID=1024, the variable never reachescont-initscripts (PR #33148 addedS6_KEEP_ENV=1to fix this). PR #32412 also fixed propagation via#!/command/with-contenv shshebangs.Related: #32559, #24537, #33148
Problem #3: Incompatible session formats
Sessions from the old standalone agent (
sessions/sessions.json+ individual files) are not recognized by the WebUI (which useswebui/.sessions.json+ a different format). No batch migration possible — import sessions one by one through the UI.Related: #23717 (RFC pluggable SessionDB)
Problem #4: Telegram polling conflict
If the old gateway is still running, the new container cannot take over Telegram polling.
Workarounds that should work (untested on Hostinger)
v2026.5.16(last tini-based image before the s6-overlay migration) instead oflatest/init(s6-overlay) as entrypoint, withS6_KEEP_ENV=1and properHERMES_UIDhandlingdocker runto replace the crashed agent container (as documented in thehostinger-webui-migrationskill)Questions
Deployed on Hostinger KVM VPS, Hermes 0.14.x, catalog "Hermes WebUI"