A Slack bot designed to help teams efficiently resolve incidents through intelligent monitoring and automated response capabilities.
HOLMES is an incident management Slack bot that provides real-time monitoring, alerting, and incident resolution assistance. It helps teams quickly identify, diagnose, and resolve operational issues.
- Incident Detection: Real-time monitoring and alerting for system health issues
- Automated Response: Intelligent incident response and resolution suggestions
- Slack Integration: Seamless integration with Slack for team collaboration
- Live Monitoring: Continuous system health checks and performance monitoring
- Expert System: Knowledge-based recommendations for incident resolution
- Python 3.9+
- Poetry (for dependency management)
- Docker & Docker Compose (optional)
- Slack workspace with admin access
- Create and activate virtual environment:
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- Install Poetry in the virtual environment:
pip install poetry- Install dependencies:
poetry install- Configure environment variables:
cp .env.example .env
# Edit .env with your Slack credentials- Run the bot:
poetry run python -m app.main
# Or use the Makefile:
make run- Build the Docker image:
docker-compose build
# Or for production:
docker build -t holmes-bot .- Run with Docker Compose:
docker-compose up -d
# View logs:
docker-compose logs -f holmes-bot- Create a new Slack app at https://api.slack.com/apps
- Add the following Bot Token Scopes:
app_mentions:readchannels:historychat:writecommands
- Install the app to your workspace
- Copy the tokens to your
.envfile:- Bot User OAuth Token →
SLACK_BOT_TOKEN - Signing Secret →
SLACK_SIGNING_SECRET - App-Level Token →
SLACK_APP_TOKEN(for Socket Mode)
- Bot User OAuth Token →
make testmake lint # Run flake8 and mypy
make format # Format with blackholmes/
├── app/
│ ├── __init__.py
│ └── main.py # Main bot application
├── tests/
│ └── test_main.py # Unit tests
├── .env.example # Environment variables template
├── docker-compose.yml # Docker Compose configuration
├── Dockerfile # Production Docker image
├── Dockerfile.dev # Development Docker image
├── Makefile # Common commands
├── poetry.lock # Locked dependencies
└── pyproject.toml # Project configuration
The bot responds to:
- Direct messages containing "hello"
- App mentions
- Slash commands:
/holmes [status|scan|report|help]
To be determined