Self-hosted Slack AI assistant — bring Pi to your workspace
Add a Pi-powered AI assistant to your Slack workspace, self-hosted, no SaaS in the middle. Per-channel bindings, ACK reactions, thread summaries.
- slack
- tutorial
- workspace
- self-hosted
Slack is where work happens. Adding an AI co-pilot inside Slack used to mean handing your messages to a SaaS vendor. openclawOS gives you a self-hosted alternative that takes about 10 minutes to set up.
What you’ll end up with
A Slack bot that answers DMs, joins channels you invite it to, summarises threads on demand, and runs Pi’s full tool set (browser, code, file system, memory). Conversations decrypt and process inside your Gateway; only the prompt + tool calls go to your LLM provider.
Setup
1. Create a Slack app
Go to api.slack.com/apps → Create New App → From an app manifest. The openclawOS CLI prints the exact manifest YAML to paste in. It requests the minimal scopes Pi needs:
app_mentions:read,im:history,im:read,chat:write,channels:history,groups:history,reactions:write,commands.
Install to your workspace. Copy the Bot User OAuth Token.
2. Expose your Gateway
Slack needs to reach your Gateway via HTTPS. Easy paths:
- Cloudflare Tunnel (free, no config).
cloudflared tunnel --url http://localhost:7777. - Tailscale Funnel. If you already use Tailscale.
- A real domain behind a reverse proxy.
The CLI shows you exactly what URL to give Slack as the Events Subscription endpoint and Slash Command URL.
3. Wire up openclawOS
openclaw apps install slack
Paste the token, paste the tunnel URL. The Gateway registers Pi as a channel adapter.
4. Invite Pi to channels
/invite @pi
Pi now listens on that channel for @-mentions.
Default behaviour
- DMs → every message goes to Pi.
- Channels → only when @-mentioned.
- Threads → each thread is its own session, so a long thread doesn’t pollute the main DM.
Bindings let you change any of this per-channel.
ACK reactions
Pi reacts with a configurable emoji (default 👀) within milliseconds of seeing a message. The full reply lands when ready. Users get a “yes I heard you” signal even on long-running tasks.
Thread summaries
/summary in any thread asks Pi to compact the thread into a tight summary. Useful for catching up on a thread you missed without scrolling.
Auto-summarisation
If a thread crosses a configurable length, Pi can auto-emit a summary as the first reply in the thread, with a fold-up button to read the original. Off by default — flip on in the binding.
Reaction-triggered actions
You can configure reaction emoji to trigger Pi actions. Common setups:
:ai:reaction → Pi summarises that message:translate:reaction → Pi translates to a target language:file:reaction → Pi creates a Linear issue from the message
Per-channel personas
Run a “coding Pi” in #engineering with a different system prompt and different tools than a “support Pi” in #customer-help. Bindings scope by channel ID.
Why self-host this
The dominant alternatives are SaaS — they see every message you send Pi, retain conversation logs, and price-per-seat. Self-hosting means your Slack stays Slack, your AI stays in-network, and you pay for what you consume on the LLM side. For any org with even mild data sensitivity, it’s the saner path.
Frequently asked
Yes — Slack pushes events to a webhook. Cloudflare Tunnel or Tailscale Funnel are the easiest exposures. The CLI shows you how.
Related reading
The complete guide to self-hosted AI gateways in 2026
What a self-hosted AI gateway is, why it matters, how openclawOS implements one, and a practical setup walkthrough — from zero to multi-channel agent in an afternoon.
openclawOS vs Zapier AI — which is right for a self-hosted AI agent?
Zapier and openclawOS look similar from far away — both connect AI to other tools. Here's how they actually differ and when each one wins.