
Your AI Coworker that lives in Slack.
Coworker is an open source framework for practical, helpful AI assistants. It lives in Slack, will have access to your docs (as you allow) and can take actions in your various tools.
Context Aware - Unlike other AI chatbots, it should have knowledge of your context. The conversation your having, the background goals at your company etc.
Extensible - It should be extremely easy for a developer to add a new capability to the coworker that's relevant for their company.
Human in the loop - We want to give Coworker really powerful capabilities. To do that in a way that maintains trust, it should be transparent to a user what the AI is doing and always get approval for its actions.
To get this working, you need to setup a new Slack App, get API keys for any tools you want to use e.g. Linear, Notion etc, and get Humanloop/OpenAI keys for the AI.
app_mentions:read, channels:history, chat:write, im:historySLACK_BOT_TOKEN which starts with xoxb-.SLACK_APP_TOKEN which starts with xapp-.HUMANLOOP_API_TOKEN from https://app.humanloop.com/account/api-keysOPENAI_API_TOKEN from https://platform.openai.com/account/api-keysTo add a new action, create a python function in /tools with type annotations and a good dosctring (this is important as it's what the AI uses to know when to call it). Then import it and add it to ENABLED_TOOLS variable in main.py.
By default the app will be in all channels. You can change this by editing the ENABLED_CHANNELS variable in main.py
.env.example to .env and fill in the valuespoetry installpoetry run python main.pyYou can run this locally indefintely, but if you want to deploy, we recommend using Railway.app.
Just fork this repo, and create a new deployment in Railway linked to that repo.
You will need to set up your Environment variables only.
You set this up yourself, with your own Humanloop account and your own OpenAI (or other LLM provider) keys. The data is private to you and as this will be using the OpenAI API, this is actually a more privacy preserving approach than using ChatGPT directly as you data will not be used in future training runs of OpenAI's models.