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