Set Up Multiple Hermes Agents on One Machine
Run multiple Hermes agents with different personalities, skills, and channels — each with isolated memory.
Running multiple Hermes agents lets you separate concerns — a personal agent with your private context, a work agent connected to your company Slack, a community agent for your Discord. Each has isolated memory and channels.
Before you start:
- ☑Hermes Agent installed
- ☑Enough server resources: each agent needs at least 256MB RAM
- ☑Separate bot tokens for each agent's messaging channels
Steps
- 1
Plan your agents
Decide how many agents you need and their roles (personal, work, community, etc.)
- 2
Create separate configs
Create config files for each: config-personal.yaml, config-work.yaml, etc.
- 3
Isolate data directories
Set different dataDir: paths in each config to keep memory and skills separate
- 4
Assign different channels
Each agent gets its own Telegram bot, Discord bot, or Slack app
- 5
Start each agent
hermes start --config config-personal.yaml for each agent, or use PM2 ecosystem file
- 6
Monitor all agents
Use pm2 list to see all running agents and their status
Pro Tips
- 💡Use Hermes profiles (v0.6.0+) instead of separate configs for the cleanest isolation — 'hermes profile create work' sets up a fully isolated environment
- 💡Name your PM2 processes clearly: 'pm2 start hermes --name hermes-personal -- --profile personal'
- 💡Each profile gets its own web UI port — document these to avoid confusion when connecting channels
Troubleshooting
❌ Two agents interfere with each other's memory
✅ Check that 'dataDir' is set to different paths in each config. By default both use ~/.hermes/ — override this explicitly for each agent.
❌ Can't tell which agent is which in Telegram
✅ Give each bot a distinct name and profile picture in @BotFather. Use the bot's display name to distinguish them when messaging.
❌ Port conflict when starting a second agent
✅ Each Hermes instance needs its own web UI port. Set 'web: port: 3001' for the second agent. Check for conflicts with 'ss -tlnp | grep 300'.