Last updated: 2026-05-10
systemctl --user start daemoncraft.service # Minecraft server
systemctl --user start daemoncraft-cast.service # Bots + agent loops
systemctl --user start embodied-service.service # Gemma-Andy bridgeGateways are started automatically by daemoncraft-cast.service.
systemctl --user stop hermes-gateway@steve.service hermes-gateway@gandy.service
systemctl --user stop daemoncraft-cast.service
systemctl --user stop embodied-service.service
# daemoncraft.service (Minecraft) usually stays runningcd ~/Projects/DaemonCraft
PYTHONPATH=~/Projects/DaemonCraft:$PYTHONPATH python3 agents/daemoncraft.py update companionThis wipes and regenerates workspaces from templates, restores plan.json, and restarts everything.
# Bots
curl -s http://localhost:3001/health # Steve
curl -s http://localhost:3002/health # gAndy
# Embodied service
curl -s http://localhost:7790/health
# Gateways
systemctl --user is-active hermes-gateway@steve.service hermes-gateway@gandy.service| Bot | URL |
|---|---|
| Steve | http://localhost:3001/dashboard |
| gAndy | http://localhost:3002/dashboard |
Cause: .env symlink broken or missing.
Fix: Verify ~/agents/<name>/.env → hermes-home/.env exists and is valid.
Cause: MINIMAX_API_KEY missing from agent .env.
Fix: Never create .env manually. Use daemoncraft.py update which inherits keys from global .env.
Cause: Bot not ready when gateway started, or agent_loop already occupying WS. Fix: Cast starts bots first, then gateways. If out of order: restart cast.
Cause: Gateway may be blocked on a long LLM call, or user unauthorized.
Fix: Check gateway log: journalctl --user -u hermes-gateway@steve.service --since "1 min ago"
Common: Unauthorized user → add GATEWAY_ALLOW_ALL_USERS=true to .env.
Cause: No workspace/plan.json exists. LLM hasn't created a plan yet.
Expected: Empty when no active task. Not an error.
Cause: @name! (exclamation) forces interrupt by design.
Expected behavior: @name = steer, @name! = interrupt.
| Component | Command |
|---|---|
| Cast (bots + agents) | journalctl --user -u daemoncraft-cast.service -f |
| Steve gateway | journalctl --user -u hermes-gateway@steve.service -f |
| gAndy gateway | journalctl --user -u hermes-gateway@gandy.service -f |
| Embodied service | journalctl --user -u embodied-service -f |
| Steve agent log | ~/agents/steve/hermes-home/logs/agent.log |
| gAndy agent log | ~/agents/gandy/hermes-home/logs/agent.log |
SkinsRestorer is installed on the Minecraft server. Use RCON:
# Via Python RCON (localhost:25575; password comes from root .env)
# Command: skin set <player> <minecraft_username>
# Example: skin set gAndy Gandhi_TG- WebSocket conflict: agent_loop.py and gateway both try to connect to bot's WS. agent_loop wins; gateway retries until bot accepts second connection. Can cause brief startup warnings.
- Pathfinding: Bots can get stuck on terrain.
goto_nearwithrange:2reports success even when stuck 1 block away. Recovery loop exists but position verification could be stronger. - MiniMax occasional failures: Connection errors happen ~2% of calls, auto-retry handles them.