Slack Integration

The Slack integration lets your VM post messages to a Slack channel with a plain HTTP request — no Slack tokens on the VM, no Slack SDK required. It's handy for build notifications, long-running job completions, or anything an agent wants to tell you about.

If you want a bot that can respond to Slack — read messages, react to mentions, call the full Slack Web API — see the Slack Bot Integration instead.

Setup

Click the Slack tile on the Integrations page, or run:

exe.dev ▶ integrations setup slack

Either way, you'll be sent to Slack to authorize the exe.dev app. Slack shows a channel picker: choose the workspace and channel the integration should post to, then click Allow. That's the whole dance — exe.dev stores the resulting webhook server-side, and the integration is created for you.

Each integration posts to exactly one channel. To post to a second channel, run setup again and pick a different channel.

Sending messages

Attach the integration to a VM, then POST JSON to the integration hostname:

exe.dev ▶ integrations attach slack-hook vm:my-vm
Attached slack-hook to vm:my-vm

exe.dev ▶ ssh my-vm curl --json '{"text":"build finished ✅"}' https://slack-hook.int.exe.xyz/
ok

The request body is Slack's incoming webhook payload, so anything Slack supports there works — including Block Kit:

curl --json '{"blocks":[{"type":"section","text":{"type":"mrkdwn","text":"*deploy done* :rocket:"}}]}' \
  https://slack-hook.int.exe.xyz/

Notes

  • The webhook URL is a secret, and it never touches your VM. exe.dev holds it server-side and injects it when proxying your request.
  • Messages are rate limited to 5 per minute per user.
  • If the webhook is revoked on the Slack side (app removed from the workspace), requests return 404 — re-run integrations setup slack.
  • If a workspace requires admin approval for apps, clicking Allow files an approval request; the integration is created once an admin approves.

Manual webhook

Already have a Slack incoming webhook URL from your own app? Skip OAuth and add it directly:

exe.dev ▶ integrations add slack --name my-slack --webhook-url https://hooks.slack.com/services/T000/B000/XXXX