Skip to main content

Introduction

Tavily Scout is an open-source Slack research agent. DM it or @mention it in a channel and it answers with live web research — streaming search and extract activity into Slack as it works, then posting a cited reply in the same thread.

View Github Repository

Try It

This app runs in your own Slack workspace. Clone the repo, add API keys, and install the Slack app from the included manifest.

Step 1: Get Your API Keys

Get your Tavily API key

Get your Nebius API key

Step 2: Clone the App

View Github Repository

Architecture

The agent exposes only two tools: Tavily Search (advanced web search) and Tavily Extract (full-page content). Deep Agent filesystem and subagent extras are disabled so every tool call is Tavily.

Features

  1. Live tool streaming: Search and extract calls show up in Slack as plan and task cards, including source links, while the agent is still running.
  2. Cited thread replies: The final answer lands in the same Slack thread, formatted for Slack mrkdwn with source links.
  3. Model switching: Switch models per user with /agent-model. New threads use the selected model; existing threads stay on the model they started with.
  4. Thread-aware: The agent uses preceding thread messages as context so follow-ups stay grounded in the conversation.
  5. In-process runtime: FastAPI, Slack Bolt, and the Deep Agent run in one Python process. Model preferences and thread history live in memory and reset on restart.

How It Works

Slack DMs and @mentions arrive over the Events API at /events/slack. FastAPI + Slack Bolt verify the request, deduplicate events, and start an in-process agent turn.
The Deep Agent can call Tavily Search when it needs current or external information, then Tavily Extract to read specific result pages in detail. For stable facts or conversation that does not need the web, it answers directly.
While Tavily runs, tool events stream into a Slack plan message. Users see search queries, extract URLs, and source links before the final reply is posted.
/agent-model lists aliases and sets a user default:
  • gptopenai/gpt-5.6-sol (default)
  • kiminebius:moonshoot/Kimi-K3
  • nemotronnebius:nvidia/Nemotron-3_5-Lightning

Setup

1

Configure

Fill in OPENAI_API_KEY, NEBIUS_API_KEY, and TAVILY_API_KEY. Slack bot token and signing secret are added after you create the Slack app.
2

Run the server

From the repository root:
Check http://127.0.0.1:8000/health.
3

Start a tunnel

With the agent listening on port 8000:
Copy the generated HTTPS URL into both url fields in slack-app-manifest.json:
4

Create the Slack app

  1. Go to api.slack.com/appsCreate New AppFrom a manifest.
  2. Paste slack-app-manifest.json and replace the tunnel placeholder.
  3. Install the app to the workspace.
  4. Copy the Bot User OAuth Token and Signing Secret into backend/.env.
  5. Restart the agent.
  6. DM the bot or mention it in a channel.