Tiger Agent is a production-ready library and CLI for building Slack-native agents for serious work. Tiger Agents can handle concurrent conversations with enterprise-grade reliability and (optionally) zero-code setup.
- Want to develop with Tiger Agent as quickly as possible? Jump to the Developer Quick Start.
- Want to know what makes Tiger Agent special? Continue to the Features.
- Want to dig into the details? Consume the docs.
- Durable & Atomic Event Handling: PostgreSQL-backed event claiming ensures exactly-once processing with no duplicates, even under high concurrency and failure conditions
- Bounded Concurrency: Fixed worker pools prevent resource exhaustion while maintaining predictable performance under load
- Immediate Event Processing: Events are processed within milliseconds of arrival rather than waiting for polling cycles, providing real-time responsiveness
- Resilient Retry Logic: Automatic retry with visibility thresholds and cleanup of stuck or expired events
- Horizontal Scalability: Multiple instances can run simultaneously with coordinated work distribution across all instances
- AI-Powered Responses: Pydantic-AI Agents using the model of your choice with (optional) MCP server integrations
- Extensible Architecture: No coding required for basic bots and easy customization via Python for more specialized use cases
- Complete Observability: Full Logfire instrumentation provides detailed tracing of event flow, worker activity, and database operations
How does Tiger Agent provide all of these features? Read the docs.
# clone the repo
git clone https://github.com/timescale/tiger-agents-for-work
cd tiger-agent
# install the dependencies
uv sync
# verify the installation
uv run tiger_agent --help
# pull the latest image
docker pull timescale/timescaledb-ha:pg17
# run the database container
docker run -d --name tiger-agent \
-e POSTGRES_PASSWORD=password \
-e POSTGRES_DB=tsdb \
-e POSTGRES_USER=tsdbadmin \
-p 127.0.0.1:5432:5432 \
timescale/timescaledb-ha:pg17
Tiger Agent use the Slack Events API with Socket Mode to receive app_mention
events when your Slack users mention the bot.
You must create a Slack App for your Tiger Agent.
- Edit the slack-manifest.json file to have the names and descriptions you want to use.
- Create a new Slack app
- Choose to create an app from a manifest.
- Pick your workspace and click
Next
. - Paste that manifest configuration in the input field provided and click
Next
. - Review and verify that the configuration you entered matches the summary and click
Create
. - Navigate to: App Home → Show Tabs → Messages Tab
- Enable the Messages tab setting as well as checkbox to "Allow users to send Slash commands and messages from the messages tab"
- Navigate to: Basic Information → App-Level Tokens
- Click 'Generate Token and Scopes' → Add 'connections:write' scope → Generate
- Save your
SLACK_APP_TOKEN
(It starts withxapp-
). - Navigate to: Install App → Click 'Install to [Workspace]'
- After installation, save the 'Bot User OAuth Token' A.K.A.
SLACK_BOT_TOKEN
(It starts withxoxb-
)
Copy the sample .env file.
cp .env.sample .env
Edit the .env file.
- Add your
SLACK_APP_TOKEN
. It starts withxapp-
. - Add your
SLACK_BOT_TOKEN
. It starts withxoxb-
. - Add your
ANTHROPIC_API_KEY
. It starts withsk-ant-
. - [OPTIONAL] Add your
LOGFIRE_TOKEN
. It starts withpylf_
.
Run the Tiger Agent.
uv run tiger_agent run
Now, Tiger Agent will be receiving app_mention
events from your Slack workspace!
Send a Slack message mentioning your bot by name.
At this point, your Tiger Agent is using our default prompts and has no tools at its disposal. It can only respond using the knowledge that was trained into the LLM, and it only "sees" the one Slack message that mentioned it. To make your Tiger Agent powerful, you'll need to customize it.
For light customization, you can use Jinja2 templates to customize the system and user prompts. You can give your Tiger Agent custom superpowers by configuring one or more MCP servers. See the CLI docs for more information.
For heavy customization, you can subclass the TigerAgent class or implement an EventProcessor from scratch. Check out the Tiger Agent docs to see how.
Want to see a full-fledged example of Tiger Agent? Check out Eon.