If you want to build a custom AI on top of a language model, the Cat can help you:
- 🌍 Language model agnostic (works with OpenAI, Cohere, HuggingFace models, custom)
- 🐘 Long term memory
- 🔧 Can use external tools (APIs, custom python code, other models)
- 📄 Can ingest documents (.pdf, .txt, .md)
- 🚀 Extendible via plugins
- 🐋 100% dockerized
- 👩👧👦 Active Discord community
This project is growing fast, refactorings and code changes happens very often, join the Issues to help!
You just need docker and docker-compose installed on your system.
Clone the repo:
git clone https://github.com/pieroit/cheshire-cat.gitEnter the created folder:
cd cheshire-catCreate your .env file by copying and renaming .env_example:
On linux/mac
cp .env.example .envOn Windows
copy .env.example .envAfter that you can run:
docker-compose upThe first time (only) it will take several minutes, as the images occupy a few GBs.
- Chat with the Cheshire Cat on localhost:3000.
- You can also interact via REST API and try out the endpoints on localhost:1865/docs
As a first thing, the Cat will ask you to configure your favourite language model. It can be done directly via the interface in the Settings page.
Enjoy the Cat!
When you're done, remember to CTRL+c in the terminal and
docker-compose down
From time to time it is a good idea to update the Cat:
docker-compose down
git pull origin main
docker-compose build --no-cache
docker-compose up
- Version 1
- Version 2
- QA / Test
- End2End tests
- Unit tests
- Local LLM / embedder
- CustomLLMConfig / CustomEmbedderConfig adapters
- LLM / embedder example docker container
- Minimal user management
- User specific conversation and memory
- Working memory
- Temporary storage of arbitrary data in cat instance
- Hook surface (20 hooks)
- more hooks where customization is needed
- Plugin management
- Activate / deactivate plugins
- External plugin directory and customization
- QA / Test
Whilst for the current progress of development, take a look at the projects marked as open.
For suggestions, open an issue and we can reason about it. If you want to contribute with code, fork the repo and create a pull request. Before submitting any new pull request, make sure it either fixes an existing issue or is something we have discussed in our Roadmap.
You can start by:
- Making tutorials and docs
- Sharing on social media
If you have any ideas on how to improve the project or if you'd like to suggest new developments, please join our community on Discord
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request (if it contains lots of code, please discuss it beforehand opening a issue)
Don't forget to give the project a star ⭐! Thanks again!🙏
This project follows the PEP8 naming convention for all backend code. Please ensure that your contributions adhere to this standard.
Logo image generated with MidJourney, prompted by Edgars Romanovskis
"Would you tell me, please, which way I ought to go from here?"
"That depends a good deal on where you want to get to," said the Cat.
"I don't much care where--" said Alice.
"Then it doesn't matter which way you go," said the Cat.
(Alice's Adventures in Wonderland - Lewis Carroll)

