Most AI-in-Slack integrations work by sending your messages to a cloud API and piping the response back. That means your code context, your files, your entire workspace - all going through someone else’s servers.

I built one that keeps everything local. It’s been running since February.

The Architecture

The system has two parts:

  1. A Railway worker that receives Slack events (mentions, DMs) and forwards them to your machine
  2. A local daemon that picks up those messages, starts a Claude Code session, and streams the response back to Slack

Your code never leaves your machine. Claude runs locally with full access to your filesystem, git repos, and tools. Slack is just the interface.

Why Local-First Matters

When Claude Code runs on your machine, it can:

  • Read and write your actual files
  • Run your test suite
  • Check git history
  • Use your MCP servers (Google Workspace, Cloudflare, etc.)

None of that works if you’re running in a cloud sandbox. The tradeoff is that your machine needs to be on, but for a personal or small-team setup, that’s fine.

How It Works in Practice

You mention the bot in any Slack channel:

@claude-code what’s the status of the deployment?

The daemon picks it up, runs a Claude Code session with your workspace context, and posts the response as a thread. Long-running tasks stream updates so you’re not staring at a typing indicator for two minutes.

What It’s Like After Two Months

I’ve been running this against my real workspace since February. A few patterns emerged:

  • Most queries are read-only. Status checks, “what’s in tasks-inbox”, “summarize this thread.” That’s where the value compounds - it’s like having a search interface to your own files.
  • Long-running tasks stream. A 90-second task becomes a thread that posts intermediate progress. The Slack chat becomes the activity log.
  • Permission model matters. The daemon respects Claude Code’s --allowedTools flag per task, so a write-capable command requires explicit allowance.

Getting Started

The repo has everything you need:

  • daemon/ - Python daemon that runs on your machine
  • worker/ - Railway-deployable Slack event handler
  • Setup guide for Slack app creation, Railway deployment, and daemon installation

It’s open source. Clone it, set up a Slack app, deploy the worker, and you’ve got Claude Code in your team’s Slack.