Discord Bots¶
Note on runtime references (2026-05-20): Some sections below describe Volt-E and Review-E as running on OpenClaw — that runtime was retired 2026-05-20 and replaced by
agent-runner(systemd, in this repo). The other host-based agents (Pi-E, iClaw-E, and iBuild-E) have since also moved toagent-runner: Pi-E on Pi4-03 (systemd), iClaw-E and iBuild-E on the Mac Mini M4 via user-domain LaunchAgentsai.invotek.iclaw-e/ai.invotek.ibuild-e. OpenClaw is fully retired; the per-agent runtime rows below are stale and need the same correction. Bot tokens, intents, channel IDs, and Bitwarden entries remain accurate; only the runtime layer changed. Seeagents.mdfor current agent topology.
Every agent that communicates via Discord has a dedicated bot application. This document covers the configuration, permissions, Bitwarden entries, and how to recreate each bot if a token is lost.
Bot Overview¶
| Agent | Application Name | Bot User ID | Mention | Public Bot | Server |
|---|---|---|---|---|---|
| Codi-E | Codi-E Agent | 1477267530946187305 |
<@1477267530946187305> |
No | Dashecorp Agents |
| Pi-E | Pi-E Agent | 1477270576765735024 |
<@1477270576765735024> |
No | Dashecorp Agents |
| Volt-E | Volt-E Agent | 1477272514332852416 |
<@1477272514332852416> |
No | Dashecorp Agents |
| Review-E | Review-E Agent | 1477785888095473798 |
<@1477785888095473798> |
No | Dashecorp Agents |
| iBuild-E | iBuild-E Agent | 1480845201978163271 |
<@1480845201978163271> |
No | Dashecorp Agents |
| iClaw-E | iClaw-E Agent | 1482352836242051092 |
<@1482352836242051092> |
No | Dashecorp Agents |
| ~~ATL-E~~ | ~~ATL-E Agent~~ | — | — | No | Retired 2026-05-20 (replaced by rig-conductor + rig-planner; was Dashecorp Agents) |
Guild: Dashecorp Agents (1477259107684847708)
Standard Configuration (All Bots)¶
All bots share the same settings. Only deviate if noted per-agent.
Discord Developer Portal Settings¶
| Setting | Value | Where |
|---|---|---|
| Public Bot | Off | Bot tab |
| Presence Intent | On | Bot tab → Privileged Gateway Intents |
| Server Members Intent | On | Bot tab → Privileged Gateway Intents |
| Message Content Intent | On | Bot tab → Privileged Gateway Intents |
| Default Install Settings | None | Installation tab |
Bot Permissions¶
All bots are invited with Administrator permission (simplest for a closed private server).
OAuth2 scope: bot + applications.commands.
Per-Agent Details¶
Codi-E¶
| Property | Value |
|---|---|
| Application Name | Codi-E Agent |
| Bot User ID | 1477267530946187305 |
| Bitwarden Entry | Discord Bot Token (Codi-E) |
| Runtime | Claude Code (MacBook Air M4) |
| Channel | #codi-e (1477263450324336705) |
| Logs Channel | — |
| Token used by | discord MCP in Claude Code |
Pi-E¶
| Property | Value |
|---|---|
| Application Name | Pi-E Agent |
| Bot User ID | 1477270576765735024 |
| Bitwarden Entry | Discord Bot Token (Pi-E) |
| Runtime | agent-runner (systemd, Pi4-03) |
| Channel | #pi-e (1477263673700651051) |
| Logs Channel | #pi-e-logs (1481788666975092878) |
| Token used by | agent-runner .env on Pi4-03 |
Volt-E¶
| Property | Value |
|---|---|
| Application Name | Volt-E Agent |
| Bot User ID | 1477272514332852416 |
| Bitwarden Entry | Discord Bot Token (Volt-E) |
| Runtime | agent-runner (systemd, VPS srv1099021) |
| Channel | #volt-e (1477263777266270300) |
| Logs Channel | #volt-e-logs (1481788607726620753) |
| Token used by | agent-runner .env on VPS |
Review-E¶
| Property | Value |
|---|---|
| Application Name | Review-E Agent |
| Bot User ID | 1477785888095473798 |
| Bitwarden Entry | Discord Bot Token (Review-E) |
| Runtime | rig-agent-runtime (in-cluster, k3s on GCE VM invotek-k3s); dispatched push-based via Valkey assignments:review-e + KEDA |
| Channel | #review-e (1477787408773943488) |
| Logs Channel | #review-e-logs (1482280608364232828) |
| Token used by | in-cluster rig-agent-runtime pod (review-e); Discord bot token provisioned via rig-gitops SOPS secret apps/review-e/review-e-secrets.sops.yaml (discord-bot-token key) |
iBuild-E¶
| Property | Value |
|---|---|
| Application Name | iBuild-E Agent |
| Bot User ID | 1480845201978163271 |
| Bitwarden Entry | Discord Bot Token (iBuild-E) |
| Runtime | agent-runner (user-domain LaunchAgent ai.invotek.ibuild-e, Mac Mini M4) |
| Channel | #ibuild-e (1478779143914262711) |
| Logs Channel | #ibuild-e-logs (1482368579910238511) |
| Token used by | agent-runner .env.ibuild-e (LaunchAgent on Mac Mini) |
iClaw-E¶
| Property | Value |
|---|---|
| Application Name | iClaw-E Agent |
| Bot User ID | 1482352836242051092 |
| Bitwarden Entry | Discord Bot Token (iClaw-E) |
| Runtime | agent-runner (LaunchAgent ai.invotek.iclaw-e, Mac Mini M4) |
| Channel | #iclaw-e (1482354822492455065) |
| Logs Channel | #iclaw-e-logs (1482354831342567494) |
| Token used by | agent-runner .env.iclaw-e on Mac Mini |
ATL-E — RETIRED 2026-05-20¶
ATL-E was the pre-2026-05-20 assignment + queueing agent. It used a Discord webhook to post task notifications to #tasks, running as a Kubernetes CronJob on the Dell k3s cluster.
Replaced by: rig-conductor (assignment dispatch + GitHub webhook intake) + rig-planner (intake refinement). Both run on the GCP k3s cluster as standard k8s deployments.
The legacy atl-agent-secrets SealedSecret + Stig-Johnny/atl-docs.pages.dev URL are no longer in use.
How to Recreate a Bot Token¶
If a token is lost or compromised:
- Go to Discord Developer Portal
- Select the application (e.g., "Pi-E Agent")
- Bot tab → Reset Token → confirm → copy the new token
- Update Bitwarden: open
Discord Bot Token (Agent-Name)→ edit password field - Update the token on the agent host:
Codi-E (discord MCP in Claude Code):
agent-runner systemd agents (Volt-E on VPS, Pi-E on Pi4-03):
ssh -i ~/.ssh/<key> <user>@<host>
# Edit the agent's .env: ~/repos/claude-3/agent-runner/.env
# Replace DISCORD_TOKEN=...
sudo systemctl restart agent-runner
agent-runner LaunchAgent agents (iBuild-E, iClaw-E on Mac Mini):
ssh -i ~/.ssh/mac-executor claude@100.92.170.124
# Edit ~/repos/claude-3/agent-runner/.env.<agent> → replace DISCORD_TOKEN=...
launchctl unload ~/Library/LaunchAgents/ai.invotek.<agent>.plist
launchctl load ~/Library/LaunchAgents/ai.invotek.<agent>.plist
Review-E (in-cluster rig-agent-runtime):
- Verify bot comes back online: post in the agent's private channel, confirm response.
Creating a New Bot from Scratch¶
Follow these steps when adding a new agent to the fleet:
- Discord Developer Portal → New Application
- Name:
{Agent-Name} Agent - Installation tab → Default Install Settings → set Install Link to None → Save
- Bot tab → uncheck Public Bot → Save
- Bot tab → Privileged Gateway Intents → enable all 3 (Presence, Server Members, Message Content) → Save
- Bot tab → Reset Token → copy token
- Store in Bitwarden:
Discord Bot Token ({Agent-Name}), username = Application ID - Note the Application ID from General Information (= Bot User ID, use for mentions)
- OAuth2 → URL Generator → check
bot+applications.commands→ checkAdministrator→ copy URL - Open URL → select Dashecorp Agents → Authorize
- In Discord: create
#{agent-name}channel +#{agent-name}-logschannel - Enable Developer Mode in Discord → right-click channels → Copy Channel IDs
- Add to
docs/infrastructure/agents.md(Discord Bot IDs table and Discord Channels table) - Add to this file (Per-Agent Details section)
Troubleshooting¶
| Symptom | Likely Cause | Fix |
|---|---|---|
| Bot offline / not responding | Token expired or rotated | Reset token, update config, restart agent |
| Missing Message Content Intent | Not enabled in Dev Portal | Enable on Bot tab → save → no restart needed |
| "Used disallowed intents" error | Privileged intents not enabled | Enable all 3 on Bot tab |
| Bot not receiving DMs | Public Bot is On | Turn off Public Bot, reinvite bot |
| Can't invite to server | Install Link not set to None | Set to None under Installation tab first |
| Mentions not working | Using name instead of ID | Use <@BOT_USER_ID> format |