{"id":14064687,"url":"https://github.com/meetbryce/open-source-slack-ai","last_synced_at":"2026-01-17T05:57:45.827Z","repository":{"id":229017011,"uuid":"684342555","full_name":"meetbryce/open-source-slack-ai","owner":"meetbryce","description":"An open source alternative to some of Slack AI's premium features. Summarize channels and threads any time you want.","archived":false,"fork":false,"pushed_at":"2025-07-15T09:37:01.000Z","size":911,"stargazers_count":178,"open_issues_count":6,"forks_count":12,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-07-29T19:45:08.311Z","etag":null,"topics":["ai","generative-ai","openai","slack","slack-bot"],"latest_commit_sha":null,"homepage":"https://opensourceslackai.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/meetbryce.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-08-29T00:15:10.000Z","updated_at":"2025-07-27T01:46:45.000Z","dependencies_parsed_at":"2024-05-09T17:28:46.051Z","dependency_job_id":"6b8a7b0d-2e2b-490e-8946-77a1a1b49e7f","html_url":"https://github.com/meetbryce/open-source-slack-ai","commit_stats":null,"previous_names":["meetbryce/open-source-slack-ai"],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/meetbryce/open-source-slack-ai","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meetbryce%2Fopen-source-slack-ai","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meetbryce%2Fopen-source-slack-ai/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meetbryce%2Fopen-source-slack-ai/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meetbryce%2Fopen-source-slack-ai/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/meetbryce","download_url":"https://codeload.github.com/meetbryce/open-source-slack-ai/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meetbryce%2Fopen-source-slack-ai/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28501351,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T04:31:57.058Z","status":"ssl_error","status_checked_at":"2026-01-17T04:31:45.816Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","generative-ai","openai","slack","slack-bot"],"created_at":"2024-08-13T07:04:01.221Z","updated_at":"2026-01-17T05:57:45.822Z","avatar_url":"https://github.com/meetbryce.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# The Open-Source Slack AI App\n\n![Total Clones Badge](https://img.shields.io/badge/dynamic/regex?url=https%3A%2F%2Fmeetbryce.github.io%2Fopen-source-slack-ai--gh-stats%2Fmeetbryce%2Fopen-source-slack-ai%2Flatest-report%2Freport.html\u0026search=Cumulative%3A%20(%5Cd%2B)\u0026replace=%241\u0026logo=github\u0026label=Total%20Clones\u0026color=violet\u0026link=https%3A%2F%2Fmeetbryce.github.io%2Fopen-source-slack-ai--gh-stats%2Fmeetbryce%2Fopen-source-slack-ai%2Flatest-report%2Freport.html) [![Static Badge](https://img.shields.io/badge/repo-analytics-violet?link=https%3A%2F%2Fmeetbryce.github.io%2Fopen-source-slack-ai--gh-stats%2Fmeetbryce%2Fopen-source-slack-ai%2Flatest-report%2Freport.html)](https://meetbryce.github.io/open-source-slack-ai--gh-stats/meetbryce/open-source-slack-ai/latest-report/report.html) [![Maintainability](https://qlty.sh/gh/meetbryce/projects/open-source-slack-ai/maintainability.svg)](https://qlty.sh/gh/meetbryce/projects/open-source-slack-ai) ![GitHub License](https://img.shields.io/github/license/meetbryce/open-source-slack-ai)\n [![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://github.com/dwyl/esta/issues) ![X (formerly Twitter) Follow](https://img.shields.io/twitter/follow/meetbryce)\n\u003c!-- TODO: bring back code coverage with qlty --\u003e\n[//]: # \"todo: youtube badge linking to walkthrough video?\"\n\nThis repository is a ready-to-run basic Slack AI solution you can host yourself and unlock the ability to summarize\nthreads and channels on demand using OpenAI (support for alternative and open source LLMs will be added if there's\ndemand). The official Slack AI product looks great, but with limited access and add-on pricing, I decided to open-source\nthe version I built in September 2023. Learn more\nabout [how and why I built an open-source Slack AI](https://bryceyork.com/free-open-source-slack-ai/).\n\nOnce up and running (instructions for the whole process are provided below), all your Slack users will be able to\ngenerate to both public and private:\n\n1. **Thread summaries** - Generate a detailed summary of any Slack thread (powered by GPT-4.1 by default)\n2. **Channel overviews** - Generate an outline of the channel's purpose based on the extended message history (powered\n   by an ensemble of NLP models and a little GPT-4.1 to explain the analysis in natural language)\n3. **Channel summaries since** - Generate a detailed summary of a channel's messages since a given point in time (powered by\n   GPT-4.1 by default). Now with support for custom prompts! e.g. `/tldr_since anonymize the summary`. Note: this doesn't include threads yet.\n4. **Full channel summaries** (experimental) - Generate a detailed summary of a channel's extended history (powered by\n   GPT-4.1 by default). Now with support for custom prompts! e.g. `/tldr_extended anonymize the summary`. Note: this can get very long!\n\n_Note: these features were all working well even on GPT-3.5-Turbo (and GPT-4 for channel overviews)_\n\n[//]: # \"todo: demo video/gif of the 2 main features\"\n\n\u003c!-- omit in toc --\u003e\n\n## Table of Contents\n\n- [Getting Started](#getting-started)\n  - [Prerequisites](#prerequisites)\n  - [Installation](#installation)\n  - [Usage](#usage)\n  - [Customization](#customization)\n- [Testing](#testing)\n- [Future Enhancements](#future-enhancements)\n- [Contributing](#contributing)\n\n## Getting Started\n\nFollow these instructions to get a copy of the project up and running on your local machine for development and testing\npurposes.\n\n### Prerequisites\n\nEnsure you have the following preconfigured or installed on your local development machine:\n\n- Python 3.9.x - 3.11.x\n- OpenAI API key\n- Slack App \u0026 associated API tokens\n- [Poetry package manager](https://python-poetry.org/docs/#installation)\n- [ngrok](https://ngrok.com/) (recommended)\n\n### Installation\n\n1. Clone the repository to your local machine.\n2. Navigate to the project directory.\n3. Install the required Python packages using Poetry:\n\n```bash\npoetry install\n```\n\n4. Install the dictionary model\n\n```bash\npoetry run python -m spacy download en_core_web_md\n```\n\n5. Create a `.env` file in the root directory of the project, and fill it with your API keys and tokens. Use\n   the `example.env` file as a template.\n\n```bash\ncp example.env .env \u0026\u0026 open .env\n```\n\n\u003c!-- omit in toc --\u003e\n\n#### Slack app configuration\n\nMake a copy of `manifest.json` and change the request URL to your ngrok or server URL.\n\nCreate a new Slack app [here](https://api.slack.com/apps?new_app=1) and configure it using your `manifest.yaml`\nfile.\n\nYou shouldn't need to make any other changes but you can change the name, description, and other\ncopy related settings.\n\nIf you wish to adjust the name of the slash commands, you'll need to modify `slack_server.py`.\n\nOnce configured, retrieve the \"Bot User OAuth Token\" from the \"Install App\" page and add it to your `.env`\nfile as `SLACK_BOT_TOKEN`.\n\nThen, on the Basic Information page under the App-Level Tokens heading create a token with the scop `connections:write`\nand add it to your `.env` file as `SLACK_APP_TOKEN`.\n\n### Usage\n\nTo run the application, run the FastAPI server:\n\n```bash\npoetry run uvicorn ossai.slack_server:app --reload\n```\n\n[//]: # \"todo: improve the ngrok instructions\"\n\nYou'll then need to expose the server to the internet using ngrok.\n\nRun ngrok with the following command: `ngrok http 8000`\n\nThen add the ngrok URL to your Slack app's settings.\n\n[//]: # \"todo: running ngrok and configuration of the Slack App\"\n\n### Customization\n\nThe main customization options are:\n\n- Channel Summary: customize the ChatGPT prompt in `topic_analysis.py`\n- Thread Summary: customize the ChatGPT prompt in `summarizer.py`\n\n## Testing\n\nThis project uses `pytest` and `pytest-cov` to run tests and measure test coverage.\n\nFollow these steps to run the tests with coverage:\n\n1. Navigate to the project root directory.\n2. Run the following command to execute the tests with coverage:\n\n   ```bash\n   pytest --cov=ossai tests/\n   ```\n\n   This command will run all the tests in the `tests/` directory and generate a coverage report for the `ossai`\n   module.\n\n3. After running the tests, you will see a report in your terminal that shows the percentage of code covered by tests\n   and highlights any lines that are not covered.\n\nPlease note that if you're using a virtual environment, make sure it's activated before running these commands.\n\n## Future Enhancements\n\n- [x] Move to LangChain \u0026 LangSmith for extensibility, tracing, \u0026 control\n- [x] leverage LangSmith's feedback capabilities to capture \u0026 learn from user feedback\n- [x] Add a `/tldr_since` command to summarize a channel's messages since a given date\n- [x] Add slack app setup details and sample app manifest to README\n- [ ] Incorporate threaded conversations in channel-level summaries\n- [ ] Implement evals suite to complement unit tests\n- [ ] Add support for alternative and open-source LLMs\n- [ ] Explore workflow for collecting data \u0026 fine-tuning models for cost reduction\n- [ ] Add support for anonymized message summaries\n- [ ] Leverage prompt tools like Chain of Destiny\n- [ ] Add support for pulling supporting context from external sources like company knowledge bases\n- [ ] Explore caching and other performance optimizations\n- [ ] Explore sentiment analysis\n\n## Contributing\n\nI more than welcome contributions! Please read `CONTRIBUTING.md` for details on how to submit feedback, bugs, feature\nrequests,\nenhancements, or your own pull requests.\n\n## License\n\nThis project is licensed under the GPL-3.0 License - see the `LICENSE.md` file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeetbryce%2Fopen-source-slack-ai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeetbryce%2Fopen-source-slack-ai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeetbryce%2Fopen-source-slack-ai/lists"}