Get real-time milestone notifications for Hugging Face models and organizations directly in your Slack channels!
This Slack bot lets your team subscribe to any Hugging Face model or organization and receive automatic milestone notifications β downloads, likes, new followers, new models β right in your Slack channels. Stay on top of the ML ecosystem without leaving your workflow.
Subscribe any model or organization to a channel with /hf subscribe.
The bot posts rich, formatted messages when models cross download, like, or follower milestones.
Get notified about new models, follower growth, and top model ranking changes for entire organizations.
π‘ Building in AI is hard work. In our team, we used to celebrate "small wins"βlike reaching a download milestone or successfully pushing a new modelβby sharing screenshots in Slack. I built this app to automate that celebration and turn static screenshots into a live, interactive "playground." It's designed to keep team spirit high and make AI development a collaborative social experience.
Team Culture: Automatically celebrate when your model hits 1k, 10k, or 50k downloads.
Release Monitoring: Get a notification the second a new model is pushed to your organization's namespace.
π΅οΈ Market Intelligence: Itβs not just for your own wins. You can use it to keep a pulse on what other organizations are up to. Track their new model drops or download spikes... π Sometimes even before the official announcement.
| Feature | Description |
|---|---|
| π¦ Model Subscriptions | Subscribe any Slack channel to any Hugging Face model by ID. |
| π’ Organization Subscriptions | Subscribe to an entire organization and track all activity. |
| π Download Milestones | Automatic notifications at 100, 500, 1k, 2k, 5k, 10k, 15k, 20k, 30k+ downloads. |
| β€οΈ Like Milestones | Automatic notifications at 5, 10, 50, 100, 250, 500, 750, 1k+ likes. |
| π₯ New Follower Alerts | Get notified when organizations gain new followers, with names and associated organizations. |
| π New Model Alerts | Real-time notifications when organizations release new models. |
| π Top Model Rankings | Track ranking changes in an org's top 3 models by downloads (last 30d). |
| β° On-Demand Stats | Run /hf now to get current stats for all subscriptions instantly. |
| π Socket Mode | Runs entirely via Slack Socket Mode β no public URL needed. |
| πΎ Persistent Subscriptions | Subscriptions survive bot restarts via JSON file storage. |
| π Thread-Safe Storage | File locking prevents data corruption in concurrent scenarios. |
| π Weekly Digest | Weekly summary with total downloads, new followers, and new models every Friday. |
- Python 3.9+
- A Slack workspace with permissions to install apps
- A Slack app created at api.slack.com/apps
git clone https://github.com/your-username/huggingface-slack-app.git
cd huggingface-slack-appOption A: With uv (recommended)
uv is a fast Python package manager that handles environments automatically:
# Install uv if you don't have it
curl -LsSf https://astral.sh/uv/install.sh | sh
# Run directly - uv creates a virtual environment automatically
uv run --with-requirements requirements.txt python app.pyOption B: Traditional
python3 -m venv .venv
source .venv/bin/activate # Linux/macOS
# .venv\Scripts\activate # Windows
pip install -r requirements.txt
python3 app.py- Go to api.slack.com/apps and click Create New App β From an app manifest.
- Select your workspace and paste the contents of
manifest.json. - Review and create the app.
- Navigate to Basic Information β App Icon and upload
docs/assets/hf_logo.pngas the icon. - Navigate to Install App and install the app to your workspace.
Create a .env file in the project root:
SLACK_BOT_TOKEN=xoxb-your-bot-token-here
SLACK_APP_TOKEN=xapp-your-app-level-token-hereSecurity note: Never commit your
.envfile or tokens to version control. The project includes a.gitignore.
python3 app.pyYou should see:
β‘ Bolt app is running on Socket Mode!
Build and run the app as a container:
# Build the image
docker build -f docker/Dockerfile -t huggingface-slack-app .
# Run the container
docker run -d \
-e SLACK_BOT_TOKEN=xoxb-your-bot-token-here \
-e SLACK_APP_TOKEN=xapp-your-app-level-token-here \
huggingface-slack-appA GitHub Actions workflow automatically builds and pushes a Docker image to the GitHub Container Registry on every push to master. You can also trigger it manually via workflow_dispatch.
The image is available at:
ghcr.io/<owner>/huggingface-slack-app:latest
In Slack, run:
/invite @HuggingFace
Then subscribe to a model:
/hf subscribe meta-llama/Llama-3-8B-Instruct
All interaction happens through the /hf slash command in any channel where the bot is present.
/hf subscribe <model/org> Subscribe to a model or organization
/hf unsubscribe <model/org> Unsubscribe from updates
/hf now Get current stats for all subscriptions
/hf data Upload data files (database.json, weekly_stats.json) to the channel
Examples:
/hf subscribe meta-llama/Llama-3-8B-Instruct
/hf subscribe microsoft
/hf subscribe stabilityai/stable-diffusion-3-medium
/hf unsubscribe meta-llama/Llama-3-8B-Instruct
/hf now
/hf data
huggingface-slack-app/
βββ app.py # Application entry point
βββ manifest.json # Slack app manifest
βββ requirements.txt # Python dependencies
βββ pyproject.toml # Project config (ruff, pytest)
βββ database.json # Subscription & stats persistence
βββ weekly_stats.json # Weekly stats (downloads, followers, models)
β
βββ listeners/ # Slack event handlers
β βββ commands/
β βββ hf.py # /hf slash command handler
β
βββ jobs/ # Scheduled background jobs
β βββ hourly.py # Hourly update checker & notifier
β βββ weekly_digest.py # Weekly digest generator (Mondays 9am)
β
βββ services/ # Business logic layer
β βββ hf.py # HuggingFace Hub API integration
β βββ milestones.py # Milestone detection engine
β
βββ schemas/ # Data models
β βββ hf.py # ModelStatistics, OrganizationStatistics, User
β βββ icons.py # Emoji constants for messages
β
βββ persistence/ # Data storage layer
β βββ subscription_store.py # JSON file storage with FileLock
β
βββ docker/
β βββ Dockerfile # Container image definition
β
βββ .github/workflows/
β βββ docker.yml # CI: build & push to GitHub Container Registry
| Feature | Status |
|---|---|
| Per-channel settings β configure which milestone types a channel receives | ποΈ Planned |
Leaderboard commands β /hf top to see trending models |
ποΈ Planned |
| Database backend β swap JSON storage for PostgreSQL/SQLite | ποΈ Planned |
Want a feature? Open an issue!
Contributions are welcome! Here's how to get started:
# Clone and set up
git clone https://github.com/your-username/huggingface-slack-app.git
cd huggingface-slack-app
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
# Copy env and fill in your tokens
cp .env.example .env # (or create .env manually)-
Fork the repository and create a branch:
git checkout -b feat/your-feature-name
-
Make your changes. Follow the existing code style (enforced by
ruff). -
Test any new functionality.
-
Commit with a clear message:
git commit -m "feat: add support for daily digest mode" -
Push and open a Pull Request.
- Keep pull requests focused and small β one feature or fix per PR.
- Run
ruff check . && ruff format .before committing. - Update this README if you add user-facing features.
This project is licensed under the MIT License. See LICENSE for details.
- Slack Bolt β the Python framework that powers this app
- HuggingFace Hub β for the API that makes this all possible
- All contributors who help improve this project




