A Discord bot that connects your server to Maestro AI agents through maestro-cli.
- Creates dedicated Discord channels for Maestro agents
- Queues messages per channel for orderly processing
- Streams agent replies back into Discord, including usage stats
- Node.js 18+
- A Discord application + bot token
- Maestro CLI installed and authenticated
CLI docs: https://docs.runmaestro.ai/
- Install dependencies:
npm install- Configure environment:
cp .env.example .envSet these values in .env:
DISCORD_BOT_TOKEN= # Bot token from Discord Developer Portal
DISCORD_CLIENT_ID= # Application ID from Discord Developer Portal
DISCORD_GUILD_ID= # Your server's ID (right-click server → Copy ID)
- Deploy slash commands:
npm run deploy-commands- Start the bot (dev mode):
npm run devnpm run build
npm startnode --test --import tsxCoverage:
node --test --experimental-test-coverage --import tsx| Command | Description |
|---|---|
/health |
Verify Maestro CLI is installed and working |
/agents list |
Show all available agents |
/agents new <agent-id> |
Create a dedicated channel for an agent |
/agents disconnect |
(Run inside an agent channel) Remove and delete the channel |
/agents listreads running agents from Maestro./agents newcreates a text channel under the Maestro Agents category.- Messages in agent channels are queued and forwarded to
maestro-cli. - The bot adds a ⏳ reaction while waiting, shows typing, and splits long replies.
- After each response, it posts a small usage footer with tokens, cost, and context.
The bot stores channel ↔ agent mappings in a local SQLite database at maestro-bot.db.
Delete this file to reset all channel bindings.
- Read Messages / View Channels
- Send Messages
- Manage Channels
- Add Reactions
- Read Message History
Only invite this bot to private servers you trust. There is currently no access control beyond Discord permissions.
- If
/healthfails, ensuremaestro-cliis on your PATH and you are logged in. - If commands don’t appear, re-run
npm run deploy-commandsafter updating your bot or application settings.