Connect Slack
Talk to your deployed agent platform from Slack and ask it to run Daily Brief.
Connect your platform to Slack so your team can ask for a briefing, follow up on a story, or talk to OS Manager without opening another application.
The template already wires a Slack interface to OS Manager in app/interfaces.py. Once configured, Slack messages reach that manager, which can use the agents registered in your platform. We'll start with direct messages and channel mentions.
Create a Slack app
Open Slack's app dashboard, create an app From scratch, and select your workspace. Give it a recognizable name such as AgentOS.
In App Home, enable the Messages Tab and allow users to send messages. Under OAuth & Permissions, add these Bot Token Scopes:
| Scope | Used for |
|---|---|
app_mentions:read | Receiving mentions in channels. |
chat:write | Sending replies. |
im:history | Receiving direct messages. |
channels:read | Resolving public channel information. |
users:read and users:read.email | Resolving Slack users to their email identity. |
The template uses resolve_user_identity=True. Slack requires both user scopes to expose the email field; see its email scope documentation.
Install the app to your workspace, following any workspace approval requirements. Copy its Bot User OAuth Token from OAuth & Permissions and its Signing Secret from Basic Information → App Credentials.
Connect the Render service
In your API service's Environment settings, add:
| Variable | Value |
|---|---|
SLACK_BOT_TOKEN | The bot token, starting with xoxb-. |
SLACK_SIGNING_SECRET | The app's signing secret. |
Keep RUNTIME_ENV=prd and your existing authentication settings. The Slack endpoint verifies Slack's request signatures; Slack does not send your AgentOS UI JWT or MCP connection secret.
For this initial setup, change streaming=True to streaming=False in the existing Slack(...) call in app/interfaces.py. This sends complete replies and works with the ordinary bot messaging flow. Preserve the surrounding interface setup and the OS Manager target.
Commit and push that change, save the Render environment settings, and wait for the deployment to become healthy. Both Slack variables must be present for the template to mount the interface.
Point Slack at your platform
Return to the Slack app dashboard:
- Open Event Subscriptions and enable events.
- Set Request URL to
https://YOUR-RENDER-DOMAIN/slack/eventsand wait for Slack to verify it. - Under Subscribe to bot events, add
app_mentionandmessage.im. - Under Interactivity & Shortcuts, enable interactivity and set its Request URL to
https://YOUR-RENDER-DOMAIN/slack/interactions. - Save the settings and reinstall the app if Slack requests it after permission changes.
Use your actual Render hostname, without a second slash before slack. A failed URL verification usually means the new deployment is not ready, the Slack variables are missing, or the signing secret belongs to a different app.
Ask for your brief
Open a direct message with the app:
Ask Daily Brief to write today's edition for me.Then follow up in the same thread:
Explain the lead story in more detail. What should our engineering team try?To use a channel, invite the app and mention it:
@AgentOS ask Daily Brief what changed in agent frameworks today.Channel replies require an @mention, including follow-ups in a thread. DMs do not. Inspect the resulting session in AgentOS and confirm that OS Manager ran the expected agent and returned its result.
Start in a small test channel. This bot reaches OS Manager and the capabilities configured for it, including enabled coding agents. If you want a bot dedicated to Daily Brief, change the interface target to Slack(agent=daily_brief, ...) using the actual agent object from your repository, instead of team=manager.
Add streaming when you want it
Slack's agent experience supports streamed responses and progress. Follow Slack's current agent setup, add assistant:write, reinstall the app as required, and set streaming=True again. Test a complete reply before sharing it with your team.
Ordinary messaging and Slack's agent welcome prompts have different lifecycles. For the current adapter's supported features and setup details, see the Slack interface guide.
Deliver the morning edition
Connecting Slack makes the platform available for conversations. It does not change your existing Daily Brief schedule into a channel delivery job.
When you want delivery, give your local coding agent the destination channel ID and ask it to add that step:
Add Slack delivery for the Daily Brief schedule using the existing Slack
bot. Use the destination channel ID I provide through configuration.
Generate one edition, then send that result to the configured channel.
Preserve the edition in notes. Reuse the existing 08:00 UTC schedule;
do not create a second independent briefing schedule.
Make delivery failures visible, and avoid resending an edition after a
retry when its successful delivery has already been recorded. Keep the
bot token in environment settings. Show the change and test plan before
sending a message or updating the production schedule.Invite the bot to the destination channel. Test one delivery, inspect the saved run and Slack message, then enable scheduled delivery. Giving a bot an incoming message interface does not automatically give every agent a tool for sending messages.
Next
When load warrants more than one API instance, scale your platform with shared storage and Redis coordination.