Slack App
Create the Slack app for a self-hosted Mogplex, with a ready-to-paste manifest, the scopes, events, slash commands, and environment variables.
Slack is optional. A self-hosted deployment needs its own Slack app, because the hosted app sends its events to mogplex.com. One app can be installed in many workspaces. Users install it from Connections → Slack in your deployment.
1. Create the app from a manifest
Open api.slack.com/apps, select Create New App →
From a manifest, and paste the manifest below. It is also in the repo as
slack-app-manifest.yml, and a unit test keeps its scopes in sync with the
install flow. Replace mogplex.example.com with your domain.
display_information:
name: Mogplex
description: Run Mogplex agents from Slack
features:
app_home:
messages_tab_enabled: true
messages_tab_read_only_enabled: false
bot_user:
display_name: mogplex
always_online: true
slash_commands:
- command: /mogplex
url: https://mogplex.example.com/api/webhooks/slack
description: Mogplex commands
usage_hint: help | status | cancel | repo | prs | issues | usage | model | harness | agent
should_escape: false
- command: /mogplex-cancel
url: https://mogplex.example.com/api/webhooks/slack
description: Cancel your active Mogplex run in this channel
usage_hint: "[run-id]"
should_escape: false
- command: /harness
url: https://mogplex.example.com/api/webhooks/slack
description: View or choose your repository runner
usage_hint: "[mogplex|codex|claude-code]"
should_escape: false
oauth_config:
redirect_urls:
- https://mogplex.example.com/api/integrations/slack/callback
scopes:
bot:
- app_mentions:read
- channels:history
- channels:read
- chat:write
- commands
- files:read
- groups:history
- groups:read
- im:history
- im:read
- mpim:history
- mpim:read
- users:read
- users:read.email
settings:
event_subscriptions:
request_url: https://mogplex.example.com/api/webhooks/slack
bot_events:
- app_mention
- message.channels
- message.groups
- message.im
- message.mpim
interactivity:
is_enabled: true
request_url: https://mogplex.example.com/api/webhooks/slack
org_deploy_enabled: false
socket_mode_enabled: false
token_rotation_enabled: falseOne endpoint, /api/webhooks/slack, receives events, slash commands, and
interactivity. Deploy the app with the Slack variables set before you save
the manifest, so that Slack's URL verification succeeds.
To distribute the app to workspaces other than the one that created it, turn on Manage Distribution → Public Distribution.
2. Set the environment variables
From Basic Information → App Credentials:
SLACK_CLIENT_ID=...
SLACK_CLIENT_SECRET=...
SLACK_SIGNING_SECRET=...
# Optional. Defaults to ${NEXT_PUBLIC_APP_URL}/api/integrations/slack/callback
SLACK_REDIRECT_URI=Set the same variables in your Trigger.dev environment. Slack runs execute as Trigger.dev tasks.
3. Install and verify
- In your deployment, open Connections, find Slack, and select Install to Slack.
- Link a channel to a repository, and turn on repo-agent runs.
- In Slack, run
/mogplex help. It responds without a linked account. - Mention
@mogplexwith a real instruction in the linked channel. Confirm that a run appears in Observability.
For channel links, user mapping, and run controls, see Slack.
Scope changes
Changing code cannot expand an existing Slack OAuth grant. When a release adds
a scope, add it to the app, then reconnect each workspace from
Connections → Slack. For example, files:read lets agents read images
attached to thread messages, and older installs must reconnect to get it.