First of all, thank you for your interest in contributing to AgentStack! Even the smallest contributions help a ton.
Our vision is to build the defacto CLI for quickly spinning up an AI Agent project. We want to be the create-react-app of agents. Our inspiration also includes the oh-so-convenient Angular CLI.
AgentStack contributors all receive a free sticker pack including an exclusive holographic sticker only available to contributors to the project :)
Once your PR is merge, fill out this form and I'll send your sticker pack out ASAP! <3
Grab an issue from the issues tab! Plenty are labelled "Good First Issue". Fork the repo and create a PR when ready!
The best place to engage in conversation about your contribution is in the Issue chat or on our Discord.
- Clone the repo
git clone https://github.com/AgentOps-AI/AgentStack.git
cd AgentStack
- Install agentstack as an edtiable project and set it up for development and testing
pip install -e .[dev,test]
This will install the CLI locally and in editable mode so you can useagentstack <command>
to test your latest changes
If you're reading this section, you probably have a product that AI agents can use as a tool. We're glad you're here!
Adding tools is easy once you understand the project structure. A few things need to be done for a tool to be considered completely supported:
- Modify
agentstack/tools/tools.json
- Add your tool and relevant information to this file as appropriate.
- Create a config for your tool
- As an example, look at
mem0.json
- AgentStack uses this to know what code to insert where. Follow the structure to add your tool.
- As an example, look at
- Create your implementation for each framework
- In
agentstack/templates/<framework>/tools
, you'll see other implementations of tools. - Build your tool implementation for that framework. This file will be inserted in the user's project.
- The tools that are exported from this file should be listed in the tool's config json.
- In
- Manually test your tool integration by running
agentstack tools add <your_tool>
and ensure it behaves as expected.
Be sure that you are opening a PR using a branch other than main
on your fork. This enables us
to pull your branch and make modifications to the PR with your permission that may be helpful.
AgentStack uses Ruff formatter for consistent code formatting. To format your code, run:
pip install ruff
ruff format .
AgentStack uses MyPy for type checking. To check types, run:
mypy agentstack
Ruff and MyPy can be run as pre-commit hooks. To enable these hooks, run:
pre-commit install
CLI tests are a bit hacky, so we are not tracking coverage. That said, some testing is required for any new functionality added by a PR.
Tests MUST pass to have your PR merged. We will not allow main to be in a failing state, so if your tests are failing, this is your problem to fix.
Install the testing requirements
pip install 'agentstack[test]'
Then run tests in all supported python versions with
tox
If you're reading this, we're very thankful you wanted to contribute! I understand it can be a little overwhelming to get up to speed on a project like this and we are here to help!
While we can't promise to write code for you, if you're stuck or need advice/help, open a draft PR and explain what you were trying to build and where you're stuck! Chances are, one of us have the context needed to help you get unstuck :)
We have an active Discord server with contributors and AgentStack users! There is a channel just for contributors on there. Feel free to drop a message explaining what you're trying to build and why you're stuck. Someone from our team should reply soon!
The team behind AgentStack believe that the barrier to entry for building agents is far too high right now! We believe that this technology can be streamlined and made more accessible. If you're here, you likely feel the same! Any contribution is appreciated.
If you're looking for work, we are always open to hiring passionate engineers of all skill levels! While closing issues cannot guarantee an offer, we've found that engineers who contribute to our open source repo are some of the best we could ever hope to find via recruiters! Be active in the community and let us know you're interested in joining the team!