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
- 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.
- Cited thread replies: The final answer lands in the same Slack thread, formatted for Slack mrkdwn with source links.
- Model switching: Switch models per user with
/agent-model. New threads use the selected model; existing threads stay on the model they started with. - Thread-aware: The agent uses preceding thread messages as context so follow-ups stay grounded in the conversation.
- 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
1. Slack events
1. Slack events
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.2. Tavily tools
2. Tavily tools
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.
3. Live Slack updates
3. Live Slack updates
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.
4. Model selection
4. Model selection
/agent-model lists aliases and sets a user default:gpt→openai/gpt-5.6-sol(default)kimi→nebius:moonshoot/Kimi-K3nemotron→nebius:nvidia/Nemotron-3_5-Lightning
Setup
1
Configure
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
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
- Go to api.slack.com/apps → Create New App → From a manifest.
- Paste
slack-app-manifest.jsonand replace the tunnel placeholder. - Install the app to the workspace.
- Copy the Bot User OAuth Token and Signing Secret into
backend/.env. - Restart the agent.
- DM the bot or mention it in a channel.