Thank you for contributing to E2B! Every contribution matters and we genuinely appreciate the time and effort you put in.
Please open a GitHub issue before submitting a pull request — especially for new features or non-trivial changes. This lets our team confirm the direction, discuss scope, and avoid situations where you put in significant work on something we can't merge.
Bug fixes are always welcome and can skip this step if the problem is clear.
We try to respond to issues within a few business days. If you don't hear back, feel free to ping the issue.
- Bug fixes — always appreciated, no issue required for obvious bugs
- Self-hosting improvements — better docs, deployment UX
- Documentation fixes — typos, outdated instructions, missing steps
- Test coverage — especially integration tests for edge cases
- Performance improvements — with benchmarks to back them up
To save your time, here's what we typically won't merge:
- Features that add significant maintenance burden without clear user demand
- Major refactors of core infrastructure components (Firecracker, networking, NBD) without prior discussion — these have high blast radius
- Changes that bypass existing safety mechanisms without a strong justification
- Large PRs without tests
- Stylistic changes (formatting, naming) that don't touch logic
- AI-generated code where the author can't explain what it does
- Open an issue first (unless it's a bug fix or docs change)
- Wait for a team member to confirm the direction
- Fork the repo and create a branch from
main - Write tests for your changes
- Make sure
make testandmake lintpass locally - Open a PR with a clear description of the problem and your solution
- Link the related issue in the PR description
Keep PRs focused — one concern per PR. Smaller PRs get reviewed faster.
See DEV.md and CLAUDE.md for setup instructions.
Be kind. We're all here to build something useful.