Skip to content

Discord Communication Guide ​

This document defines the communication channels and rules for Discord integration with protoLabs, which serves as the real-time coordination layer for development teams.

Server Setup ​

Create a Discord server for your protoLabs team. The channel structure below is the recommended layout.

Channel Structure ​

INFO ​

Server-level information and onboarding.

ChannelPurpose
#rulesServer rules and code of conduct. Read-only.
#announcementsMajor updates, releases, milestones. Read-only for agents.
#introductionsNew member introductions and role assignments.

TEAM ​

Day-to-day team communication.

ChannelPurpose
#standupsDaily async standups. Post what you did, what's next, blockers.
#generalGeneral team discussion. Default channel for non-specific topics.
#randomOff-topic, fun, non-work discussion.
#suggestionsFeature ideas, process improvements, tooling suggestions.

ENGINEERING ​

Domain-specific technical discussion. Each channel maps to a team role in the agent hierarchy.

ChannelPurposeTeam Role
#frontendUI/UX, React, CSS, component architecturefrontend
#backendAPI design, database, server, servicesbackend
#ai-mlAgent prompts, model config, AI features, fine-tuningai-ml
#devopsDocker, CI/CD, deployment, infrastructuredevops
#code-reviewPR reviews, architecture discussions, code qualityall teams
#infraInfrastructure, networking, Docker, backupsdevops

AUTOMAKER ​

protoLabs system activity and monitoring. Primarily bot/webhook-driven.

ChannelPurpose
#agent-logsAgent start/stop/complete events, error summaries
#pr-notificationsPR created/merged/reviewed notifications from GitHub
#deploymentsDeployment status, release notes, environment changes
#bugs-and-issuesBug reports, system issues, incident tracking
#alertsHealth checks, CI failures, monitoring, error alerts
#approvalsAgent HITL requests, trust escalations, merge gates

PROJECTS ​

Project coordination and team-specific workspaces. Used for cross-team planning and issue escalation.

ChannelPurpose
#project-planningEpic planning, milestone tracking, roadmap discussions
#project-issuesCross-project issues, blockers, dependency conflicts
#team-frontendFrontend team workspace - sprint items, questions, updates
#team-backendBackend team workspace - sprint items, questions, updates
#team-ai-mlAI/ML team workspace - sprint items, questions, updates
#team-devopsDevOps team workspace - sprint items, questions, updates

RESOURCES ​

Reference material and learning resources.

ChannelPurpose
#papers-and-researchResearch papers, blog posts, technical writeups
#tools-and-linksUseful tools, libraries, bookmarks
#tutorialsTutorials, guides, how-tos, learning resources

AI DISCUSSION ​

Open discussion about AI/ML topics (not project-specific).

ChannelPurpose
#language-modelsLLM discussion, benchmarks, model comparisons
#prompt-engineeringPrompt techniques, templates, best practices
#ai-newsAI industry news, releases, announcements

FEEDS ​

Automated content feeds from external sources. These channels are bot-driven, read-only for users, and provide a curated stream of industry knowledge. Users discuss articles by creating threads on individual messages.

ChannelSourceBotStatus
#feed-ai-researchArXiv, HuggingFace, lab blogsMonitoRSSActive
#feed-hackernewsHackerNews best + front pageMonitoRSSActive
#feed-redditr/LocalLLaMA, ML, programmingMonitoRSSActive
#feed-githubGitHub trending repos by languageMonitoRSSActive
#feed-youtubeAI/ML content creatorsMonitoRSSActive
#feed-engineeringNode, React, JS weeklyMonitoRSSActive
#feed-twitterAI researchers on X/TwitterTBDSetup

Feed Channel Permissions ​

Each feed channel should have these permission overrides:

Permission@everyoneBot Role
View ChannelAllowAllow
Send MessagesDenyAllow
Create Public ThreadsAllow-
Send Messages in ThreadsAllow-

This ensures only bots post to the main channel. Users discuss articles by creating threads on specific messages. Discord auto-archives inactive threads after 24 hours.

MonitoRSS Setup ​

MonitoRSS powers all RSS-based feed channels (paid plan, 75 feeds). Dashboard: https://monitorss.xyz/me

Settings per feed:

  • Threads: Don't use (users create threads manually for discussion)
  • Check interval: Default (~10 min)

#feed-ai-research (6 feeds):

Feed TitleRSS URL
ArXiv AI Papershttps://arxiv.org/rss/cs.AI
ArXiv MLhttps://arxiv.org/rss/cs.LG
ArXiv NLPhttps://arxiv.org/rss/cs.CL
HuggingFacehttps://papers.takara.ai/api/feed
OpenAI Newshttps://openai.com/news/rss.xml
Google DeepMindhttps://deepmind.google/blog/rss.xml

#feed-hackernews (2 feeds):

Feed TitleRSS URL
HN Besthttps://hnrss.org/best
HN Front Pagehttps://news.ycombinator.com/rss

#feed-reddit (3 feeds):

Feed TitleRSS URL
r/LocalLLaMAhttps://www.reddit.com/r/LocalLLaMA/hot/.rss
r/MachineLearninghttps://www.reddit.com/r/MachineLearning/hot/.rss
r/programminghttps://www.reddit.com/r/programming/hot/.rss

#feed-github (4 feeds):

Feed TitleRSS URL
Pythonhttps://mshibanami.github.io/GitHubTrendingRSS/daily/python.xml
TypeScripthttps://mshibanami.github.io/GitHubTrendingRSS/daily/typescript.xml
Gohttps://mshibanami.github.io/GitHubTrendingRSS/daily/go.xml
Rusthttps://mshibanami.github.io/GitHubTrendingRSS/daily/rust.xml

#feed-youtube (8 feeds):

Feed TitleRSS URL
Sam Witteveenhttps://www.youtube.com/feeds/videos.xml?channel_id=UC55ODQSvARtgSyc8ThfiepQ
LangChainhttps://www.youtube.com/feeds/videos.xml?channel_id=UCC-lyoTfSrcJzA1ab3APAgw
NerdyRodenthttps://www.youtube.com/feeds/videos.xml?channel_id=UC4-5v-f-xKnbi1yaAuRSi_w
aiDotEngineerhttps://www.youtube.com/feeds/videos.xml?channel_id=UCLKPca3kwwd-B59HNr-_lvA
Yannic Kilcherhttps://www.youtube.com/feeds/videos.xml?channel_id=UCZHmQk67mSJgfCCTn7xBfew
Two Minute Papershttps://www.youtube.com/feeds/videos.xml?channel_id=UCbfYPyITQ-7l4upoX8nvctg
AI Explainedhttps://www.youtube.com/feeds/videos.xml?channel_id=UCNJ1Ymd5yFuUPtn21xtRbbw
3Blue1Brownhttps://www.youtube.com/feeds/videos.xml?channel_id=UCYO_jab_esuFRV4b17AJtAw

#feed-engineering (3 feeds):

Feed TitleRSS URL
Node Weeklyhttps://nodeweekly.com/rss
React Statushttps://react.statuscode.com/rss
JavaScript Weeklyhttps://javascriptweekly.com/rss

Remaining Feed Channel (Setup Needed) ​

ChannelRecommended BotSetup Steps
#feed-twitterReadybot or TweetShiftInvite bot → Configure accounts to follow (Anthropic, OpenAI, key researchers) → Set output

Bot Summary ​

BotFeeds It PowersDashboardCost
MonitoRSSai-research, hackernews, reddit, github, youtube, engineeringhttps://monitorss.xyzPaid
TBDtwitter--

ARCHIVE ​

Empty category for preserving old discussions. Channels are moved here when they are no longer active but contain valuable history.

Communication Rules ​

General Rules ​

  1. Use the right channel. Keep discussions in their designated channels. Off-topic messages go in #random.
  2. Be concise. Prefer short, clear messages over walls of text. Use threads for extended discussions.
  3. Use threads. Any discussion that exceeds 3-4 messages on a topic should be moved to a thread.
  4. No sensitive data. Never post API keys, tokens, passwords, or credentials in any channel.
  5. Search first. Before asking a question, search the channel history and #resources channels.

Standup Format ​

Post in #standups daily (async, no specific time required):

**Yesterday:** Completed feature X, reviewed PR #123
**Today:** Working on feature Y, pair with @name on Z
**Blockers:** Waiting on API endpoint from backend team

Engineering Channels ​

  • Use the domain channel that matches your topic (#frontend, #backend, #ai-ml, #devops)
  • Cross-cutting concerns go in #code-review
  • Tag relevant team members with @mention when you need their input
  • Post code snippets using markdown code blocks with language hints

Project Channels ​

  • #project-planning is for high-level roadmap and epic discussions
  • #project-issues is for escalating blockers that affect multiple teams
  • #team-* channels are team workspaces for day-to-day sprint coordination
  • Keep project-specific discussions in the appropriate team channel

protoLabs Channels ​

These channels are primarily automated:

  • #agent-logs - Agents post status updates here via webhooks
  • #pr-notifications - GitHub webhook integration for PR activity
  • #deployments - CI/CD pipeline notifications
  • #bugs-and-issues - Manual bug reports and automated error alerts

Human messages in protoLabs channels should be limited to:

  • Responding to alerts
  • Adding context to automated notifications
  • Reporting manual observations

Agent Communication Protocol ​

AI agents in the protoLabs hierarchy use Discord for status updates and coordination.

Which agents post where ​

Agent RolePrimary ChannelAlso Posts To
product-manager#project-planning#announcements
project-manager#project-planning#project-issues
engineering-manager#code-review#team-* channels
frontend team#team-frontend#frontend
backend team#team-backend#backend
ai-ml team#team-ai-ml#ai-ml
devops team#team-devops#devops, #infra
trust system#approvals#alerts
health monitor#alerts#infra

Message Format for Agents ​

Agents should use a consistent format:

**[Role] Status Update**
Feature: <feature name>
Status: <started|completed|blocked|failed>
Details: <brief description>

Event-Driven Notifications ​

protoLabs emits events that can be routed to Discord channels:

EventChannelMessage
agent:started#agent-logsAgent started working on feature X
agent:completed#agent-logsAgent completed feature X
agent:failed#agent-logsAgent failed on feature X (error summary)
pr:created#pr-notificationsPR #N created for feature X
pr:merged#pr-notificationsPR #N merged into main
pr:review#pr-notificationsCodeRabbit review on PR #N
deploy:started#deploymentsDeployment started (version X)
deploy:completed#deploymentsDeployment completed successfully
deploy:failed#deploymentsDeployment failed (error summary)
epic:completed#announcementsEpic "X" completed (N features)
milestone:completed#announcementsMilestone "X" reached
health:degraded#alertsService health check failed
health:recovered#alertsService recovered from degraded state
trust:approval#approvalsAgent requesting trust level promotion
policy:denied#approvalsHigh-risk action needs human approval
infra:backup#infraBackup completed/failed
infra:secret-rotated#infraSecret rotation completed

Server Configuration ​

The protoLabs server uses Discord for event routing, agent notifications, and the idea submission bot. All Discord IDs are configured via environment variables — no channel IDs are hardcoded.

Required Environment Variables ​

Add these to your .env file (see apps/server/.env.example):

bash
# Bot token — required for any Discord integration
DISCORD_TOKEN=your_bot_token

# Guild (server) ID
DISCORD_GUILD_ID=your_guild_id

# Channel IDs — the bot routes events to these channels
DISCORD_CHANNEL_SUGGESTIONS=       # #suggestions — !idea command and feature voting
DISCORD_CHANNEL_PROJECT_PLANNING=  # #project-planning — epic discussions
DISCORD_CHANNEL_AGENT_LOGS=        # #agent-logs — agent start/stop/complete
DISCORD_CHANNEL_CODE_REVIEW=       # #code-review — PR notifications
DISCORD_CHANNEL_INFRA=             # #infra — health checks, Ava Gateway heartbeat

How to Get Channel IDs ​

  1. Open Discord User Settings > Advanced > Developer Mode (toggle on)
  2. Right-click any channel > Copy Channel ID
  3. Right-click the server name > Copy Server ID (this is the Guild ID)

Plugin Environment Variables ​

The MCP plugin uses a separate .env at packages/mcp-server/plugins/automaker/.env:

bash
DISCORD_BOT_TOKEN=your_bot_token   # Same token as DISCORD_TOKEN above

If channel IDs are not configured, the bot service will start but skip routing to unconfigured channels. No errors are thrown — events are silently dropped.

Integration Points ​

Discord MCP ​

The Discord MCP server provides programmatic access to all channels. Available via Claude Code:

bash
claude mcp add discord -s user -- docker run --rm -i \
  -e "DISCORD_TOKEN=<token>" \
  -e "DISCORD_GUILD_ID=<guild-id>" \
  discord-mcp:amd64

Key tools: send_message, read_messages, create_webhook, send_webhook_message

See Discord MCP setup for details.

Webhooks ​

Webhooks can be created per-channel for automated notifications:

POST https://discord.com/api/webhooks/{id}/{token}
Content-Type: application/json

{
  "content": "Message text",
  "username": "protoLabs Bot"
}

Recommended webhooks:

ChannelWebhook NameSource
#agent-logsprotoLabs AgentprotoLabs server
#pr-notificationsGitHubGitHub webhook
#deploymentsCI/CDGitHub Actions
#ai-newsAI News FeedRSS/Atom aggregator
#alertsprotoLabs AlertsHealth monitor
#approvalsTrust SystemPolicy engine
#infraDevOps BotBackup/deploy scripts

Channel Lifecycle ​

Creating New Channels ​

New channels should only be created when:

  1. A new project team is formed (add #team-<name> to PROJECTS)
  2. A new engineering domain is added (add to ENGINEERING)
  3. A temporary channel is needed for a large initiative (use ARCHIVE when done)

Archiving Channels ​

When a channel is no longer needed:

  1. Move it to the ARCHIVE category
  2. Set it to read-only
  3. Post a final message explaining why it was archived
  4. Do NOT delete channels with valuable discussion history

Channel Naming Conventions ​

  • Use lowercase kebab-case: #my-channel-name
  • Team channels: #team-<domain>
  • Project channels: #project-<name> (if project-specific channels are needed)
  • Prefix automated channels with their source where helpful

Built by protoLabs — Open source on GitHub