What you need
- a Slack workspace where you can create and install apps
- a stable public Roomote URL
- access to Roomote setup or deployment environment variables
<public-url> below for the exact public URL printed by local development
or configured for your self-hosted deployment.
Session path
In/setup or Settings → Communications, paste a Slack app configuration
token and Roomote creates the Slack app for you through Slack’s
apps.manifest.create API:
- open api.slack.com/apps and click Generate Token under Your App Configuration Tokens (at the bottom of the page), picking the workspace where Roomote should live
- paste the access token into Roomote and click Create Slack app
Update an existing Slack app
After connecting a workspace, use Settings → Communications → Slack → Update app to bring the existing app manifest up to date with the current Roomote configuration. Generate and paste a fresh app configuration token when prompted. Roomote exports the app’s current manifest, preserves custom fields, adds or updates Roomote’s required capabilities, scopes, events, redirect URLs, and callback URLs, validates the result, and then applies it. The token is not stored. If the update changes permissions, Roomote shows Reinstall in Slack. Finish that approval step before testing the new capabilities because Slack does not add scopes to existing installations automatically.Alternative: env vars or an existing app
If you already have a Slack app, or production secret management should own the credentials, create the app in Slack (optionally from a prefilled manifest) and set these deployment env vars instead of using the config-token flow:SLACK_APP_ID is optional for manual preconfiguration. Roomote saves Slack’s
app_id from the OAuth installation response after workspace install.
During OAuth install, Roomote also records the installed bot display name when
Slack exposes it, so setup and automation guidance can show the actual Slack
app users should mention instead of assuming @Roomote.
Automatic manager channel
After the app is installed, the first user who links their Slack account to Roomote triggers setup of a public#roomote-managers channel in that workspace.
Installing the app alone does not trigger setup. Roomote creates the channel or
reuses an existing public, unarchived, nonshared channel with that exact name,
ensures the bot is a member, and sets it as the shared Manager Channel under
Automations > Automation output.
Existing Slack or Discord Manager Channel settings and explicit automation
destinations are preserved. This setup does not create or enable automations.
Private channels are not selected, converted, or read by automatic setup; they
remain available for manual configuration with the appropriate bot access.
Automatic setup requires the bot scopes channels:manage and channels:join.
For an existing installation, use Update app, then Reinstall in Slack to
approve these permissions. If workspace restrictions, unavailable permissions,
or Slack errors prevent setup, account authentication still succeeds. Link your
Slack account again to retry, or configure the Manager Channel manually.
Redirect URLs
Slack sign-in uses Slack OpenID Connect. Add the sign-in redirect URL:Bot scopes
Add these bot token scopes under OAuth & Permissions > Scopes > Bot Token Scopes:files:write. For an existing installation,
reinstall the app and obtain workspace admin reapproval if required before
expecting videos to appear as Slack files. Updating the manifest alone does not
grant the installed bot this permission.
Video replies
Roomote can share selected task recordings as native Slack video files in the conversation. Ask for the recording from a task associated with the current session, including an earlier task in that session, and Roomote can recover its uploaded artifact and share it without recording again. Native delivery is limited to uploaded recordings from that session’s task runs, not arbitrary recordings from other sessions. Uploading a task artifact alone does not automatically post it to Slack. The recording must be no larger than 50 MiB. When conversion is needed, the converted file must also fit within 50 MiB. Larger recordings use an artifact viewer link instead of a native Slack attachment. For WebM recordings, delivery converts a copy to MP4 for Slack playback while preserving the original task artifact. If permissions, conversion, or upload prevent native delivery, Roomote shares only an artifact viewer link, without an error or unavailability explanation. Roomote only describes a video as attached when native delivery succeeds.Events and interactivity
Turn on Event Subscriptions and set Request URL to:Agent messaging experience
Roomote-created apps enable Slack’s current Agent messaging experience (features.agent_view). This keeps conversations in the app’s Messages tab,
opens session responses in threads, and allows Slack to render native loading
states and streamed task cards for tasks delegated by Roomote. These cards stream
coding progress and settle to their final result in the same thread.
For an existing app, use Update app in Settings → Communications to apply
these settings. You can also configure them manually by enabling the Agents
feature, selecting the Agent messaging experience, adding the assistant:write
scope and the app_home_opened and app_context_changed events, and then
reinstalling the app. Hard-refresh Slack afterward. Keep message.im enabled
so direct messages continue reaching Roomote.
Session answers
Session responses are always on across Slack, Discord, Microsoft Teams, and Telegram: ordinary messages from your linked account go through the session orchestrator, which can delegate work into tasks. In channels, mention the app, for example@Roomote summarize this thread or @Roomote fix the failing CI job. Replies in a Roomote-owned Slack thread continue that session; replies
in an existing task-only thread continue the task.
Roomote can read a bounded history from the current Slack channel, discover other
channels in the same workspace, and post standalone updates to channels where
the Roomote app is authorized. From another session surface, such as Telegram, you
can provide a Slack link or explicitly name Slack to read authorized context,
then ask Roomote to send an update to an explicit workspace and destination.
Roomote uses the same destination lookup and send action for your own linked Slack
account, an explicitly named linked member, or an authorized Slack channel or
thread. People and channel lookups require a targeted search or exact destination,
return bounded pages, and can be limited to one workspace. A self destination is
always resolved from your authenticated identity without enumerating the Slack
directory; it is not a caller-supplied user ID. Public channels require app membership;
private channels also require your linked Slack account to be a member, and
direct messages to another member require workspace-scoped linked identities for
both participants. Reactions remain scoped to the current inbound message. Roomote
can also use MCP servers and user-scoped integrations that you are allowed to
access and delegate repository work to Roomote tasks. Members can
create and manage their own custom automations
through a session; deployment admins can manage all custom automations, including
those without a creator. Built-in automations and deployment settings remain
admin-only. Roomote does not read other
channels implicitly or inspect repository contents without delegating the work
to a task. When the request spans every repository, Roomote can delegate it to the
deployment’s all-repositories environment.
Eligible human discussion in an established Roomote Slack thread keeps reaching
Roomote after another participant is mentioned. When a
judgment model is configured, every unmentioned
reply from a linked member in a Roomote thread with more than one person is
judged before it can start a turn: it routes when the model finds it is
addressed to Roomote. Messages meant for a colleague stay silent;
acknowledgements addressed to Roomote reach the session, which then decides
whether a response is warranted. Without a judgment model, Roomote stays quiet
around peer discussion unless directly addressed. Direct mentions always work.
Every Roomote reply ends with a compact footer: Reply anytime, a plain
running-task count when at least one task is running, links to pull requests the
session is working on, and Open in Roomote, which opens the session transcript.
Roomote keeps the footer on the latest reply current as delegated tasks start
and finish, checking about every 30 seconds while work is running, so the
thread shows whether coding is still going without another reply. Only the
newest reply carries the footer; earlier replies drop it when a new reply
posts.
Agent replies and delegated reports can include up to two native Slack charts.
Ask Roomote to visualize suitable data as a pie, bar, area, or line chart. Each
chart keeps a Markdown fallback for notifications and accessibility, and the
same structured data renders as a chart with an accessible table in the Roomote
web transcript. No additional Slack scope is required.
Local URL changes
Keep the public URL stable. When it changes, update the Slack app’s redirect URLs, Event Subscriptions request URL, and Interactivity request URL, then restart Roomote with the matching URL.Verify setup
- sign in with Slack, if Slack sign-in is enabled
- install the Slack app to the workspace
- mention the app in a channel or send it a direct message
- confirm Roomote answers in the session and includes a web continuation link
- reply in the same thread and confirm the message continues the same session; when Roomote delegates work, confirm the task card stays in that thread