npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

n8n-nodes-slack-ai-streaming-agent

v0.1.0

Published

n8n AI Agent node with native Slack streaming output

Downloads

132

Readme

n8n-nodes-slack-ai-streaming-agent

A custom n8n community node that streams AI agent responses to Slack in real time using the native Slack AI Apps streaming API. Supports the same sub-node connections (Model / Tools / Memory) as n8n's built-in AI Agent node.

Demo

https://github.com/user-attachments/assets/78b9b67e-76cb-427a-805f-f34c83b4b932

Features

  • Real-time streaming — Tokens appear in Slack as they are generated, just like ChatGPT or Claude
  • No "edited" label — Uses Slack's native streaming API, not message editing
  • Sub-node connections — Connect any n8n LangChain model, tool, or memory node
  • Tool step display — Tool execution steps shown as task_update chunks in the Slack UI
  • Automatic fallback — Falls back to chat.postMessage if streaming fails
  • Feedback buttons — Optional thumbs up/down buttons on responses

Prerequisites

  • n8n v1.0+ (self-hosted)
  • Slack App with Agents & AI Apps feature enabled
  • Node.js 18+

Installation

Option 1: npm (recommended)

Install via the n8n GUI:

  1. Settings > Community Nodes > Install a community node
  2. Enter n8n-nodes-slack-ai-streaming-agent
  3. Click Install

Or via CLI:

cd ~/.n8n/custom
npm install n8n-nodes-slack-ai-streaming-agent

Option 2: Build from source

git clone <repository-url> n8n-nodes-slack-ai-streaming-agent
cd n8n-nodes-slack-ai-streaming-agent
npm install
npm run build

Then link to n8n:

npm link
cd ~/.n8n/custom
npm link n8n-nodes-slack-ai-streaming-agent

Option 3: Docker (volume mount)

Add to your docker-compose.yml:

services:
  n8n:
    image: n8nio/n8n
    volumes:
      - ./n8n-nodes-slack-ai-streaming-agent/dist:/home/node/.n8n/custom/node_modules/n8n-nodes-slack-ai-streaming-agent/dist
      - ./n8n-nodes-slack-ai-streaming-agent/package.json:/home/node/.n8n/custom/node_modules/n8n-nodes-slack-ai-streaming-agent/package.json

Note: Restart n8n after installation.

Slack App Setup

1. Create and configure the app

  1. Create a new app at Slack API
  2. Enable Agents & AI Apps under Features
  3. Add the following scopes under OAuth & Permissions:

| Scope | Purpose | |---|---| | chat:write | Send messages and stream | | assistant:write | AI Apps features (status, prompts, title) | | im:history | Read DM thread history | | channels:history | Read channel thread history | | app_mentions:read | Receive @mention events in channels |

2. Subscribe to events

Enable Event Subscriptions and set the Request URL to your n8n webhook:

https://your-n8n-domain.example.com/webhook/slack-events

Subscribe to these Bot Events:

  • assistant_thread_started
  • assistant_thread_context_changed
  • message.im
  • message.channels
  • app_mention

3. App Manifest

Use the template examples/slack-app-manifest.json:

  1. Replace request_url with your actual n8n webhook URL
  2. Paste into Slack API > App Manifests

4. Get the Bot Token

OAuth & Permissions > Install to Workspace > Copy the Bot User OAuth Token (xoxb-...).

Usage in n8n

1. Set up credentials

Uses n8n's built-in Slack credential:

  1. Credentials > New Credential > Slack API
  2. Enter the xoxb-... token in the Access Token field
  3. Save > Test

You can reuse an existing Slack credential if you have one.

2. Build the workflow

Import the template examples/slack-ai-agent-workflow.json into n8n:

How to import: Click ... (top right) > Import from File > Select the JSON file

Workflow structure

[Webhook]
  |
  +- Respond 200 (immediate response to Slack)
  |
  +- Route by Event (Switch)
       |
       +- (assistant_thread_started)
       |   -> [Set Suggested Prompts]
       |
       +- (app_mention / message.im)
           -> [Extract Event Data]
               -> [Slack AI Streaming Agent]
                    +-- Model: OpenAI Chat Model
                    +-- Tools: (optional)
                    +-- Memory: Window Buffer Memory

Webhook settings

| Setting | Value | |---|---| | HTTP Method | POST | | Path | /slack-events | | Response Mode | Using 'Respond to Webhook' Node |

Important: Slack Events API requires a 200 response within 3 seconds. The Respond 200 node handles this immediately, allowing the workflow to continue processing asynchronously.

Slack AI Streaming Agent parameters

| Parameter | Example | Description | |---|---|---| | Channel ID | {{ $json.channel }} | Channel from the Slack event | | Thread TS | {{ $json.thread_ts }} | Thread timestamp | | Recipient User ID | {{ $json.user_id }} | User who sent the message | | Recipient Team ID | {{ $json.team_id }} | Workspace ID | | Prompt Source | Take from Previous Node | Auto-detects chatInput from input | | System Prompt | (optional) | Instructions for the AI model |

Options

| Option | Default | Description | |---|---|---| | Max Iterations | 10 | Maximum tool call iterations | | Stream Buffer Size | 64 | Characters to buffer before sending to Slack (smaller = more frequent updates) | | Feedback Buttons | false | Show thumbs up/down buttons after the response | | Set Thread Title | false | Auto-set thread title from the user's message |

3. Connect sub-nodes

Model (required)

Connect any n8n LLM model node:

  • OpenAI Chat Model
  • Anthropic Chat Model
  • Google Gemini Chat Model

Tools (optional)

  • HTTP Request Tool
  • Code Tool
  • Calculator
  • Any custom tool

Memory (optional)

  • Window Buffer Memory (in-memory, lost on restart)
  • Postgres Chat Memory (persistent, recommended for production)
  • Redis Chat Memory (persistent)

4. Output data

The node outputs:

{
  "channel": "D324567865",
  "thread_ts": "1724264400.000000",
  "response_text": "The full AI response text",
  "intermediate_steps": [
    {
      "toolName": "http_request",
      "toolCallId": "call_abc123",
      "args": { "url": "https://api.example.com/data" },
      "result": "..."
    }
  ],
  "token_count": 342,
  "duration_ms": 4520
}

Development

npm install       # Install dependencies
npm run build     # Build
npm run lint      # Type check
npm test          # Run tests
npm run dev       # Watch mode

Limitations

  • Streaming only works within threads (DMs are always threaded)
  • Block Kit cannot be used during streaming (only on stopStream)
  • Unfurls are disabled during streaming
  • Workspace guests cannot access the Agents & AI Apps feature
  • Slack AI Apps requires a paid plan (Developer Program offers a free sandbox)

License

MIT