The fastest way to run a bot without Kubernetes. This stack brings up three containers: one bot, the Redis it uses for state and bot-to-bot coms, and the read-only IdleRPG dashboard.
cd deploy/compose
cp .env.example .env # fill in your tokens (Discord, IRC SASL, …)
$EDITOR bot.yaml # set your networks, channels, and admins
docker compose up -dThe dashboard comes up at http://localhost:8080. Tail the bot with
docker compose logs -f bot.
| Service | What it is |
|---|---|
bot |
The annoybot itself. Personality, networks, and features all come from bot.yaml. |
redis |
The shared store: karma, accounts, and IdleRPG state persist here, and it's the bus sibling bots coordinate over. Runs without on-disk persistence (the state that matters is small and game-only — back up the volume if you care about it). |
dashboard |
The same image with the /dashboard entrypoint: a read-only web view of the IdleRPG realm. |
Secrets live in .env, never in bot.yaml — each *_env field in the config
names a variable to read. Omit a variable to disable that network.
- Add a second bot. Copy the
botservice tobot2, give it its own config (./bot2.yaml:/config/bot.yaml:ro), and list each bot in the others'personality.siblings. They'll coordinate skits over the shared Redis. - Make quests fire often (to actually watch one): set
idlerpg.quest_intervalto something like15mandquest_durationto5minbot.yaml. - Turn off the game or the dashboard. Set
idlerpg.enabled: false, or drop thedashboardservice. - Persist nothing. Remove the
bot-datavolume and setbrain.pathto a throwaway path — the bot starts fresh each time.
For the complete configuration surface, copy from
configs/echo.yaml (it exercises every feature and all
three platforms). For commands and the game, see docs/.