1
Set the callback origin
Copy the manifest below and replace every
https://your-mob.example
placeholder with your MOB_BASE_URL. Slack will send signed HTTPS
callbacks to this origin.2
Create the app from the edited manifest
Go to api.slack.com/apps and choose
Create New App → From an app manifest. Pick your workspace,
then paste the edited manifest.
3
Basic Information
Copy the client id, client secret, and signing secret into
MOB_SLACK_CLIENT_ID, MOB_SLACK_CLIENT_SECRET, and
MOB_SLACK_SIGNING_SECRET in your .env.4
Install the app
Install the app in the workspace. The OAuth callback stores the rotating
bot credential encrypted for posting and workspace metadata. Each member
later grants their own rotating user credential when they connect; that
credential is required for searches initiated outside Slack.
5
Keep a self-hosted app internal
A self-hosted deployment is a customer-built internal Slack app. Keep
public distribution disabled. The hosted mob.so app follows Slack
Marketplace review and distribution.
What each scope serves
Slack applies the user scopes insideassistant.search.context on every
query.
Two scopes arrived after the first release, and each has a migration step:
- Members connected before
search:read.fileswas added keep messages-only search until they reconnect. - Existing installations must reinstall the app once to grant
reactions:write.
Posting
mob posts as the app, and Slack lets an app post only in channels it is a member of. The console’s channel list shows exactly those channels, so a private channel must have the app invited (/invite @mob inside the
channel) before it appears there and its writing can be enabled. Agent
writing remains off until the owner enables a channel in mob. See the
authorization model for the complete read and write rules.