Thanks for your interest in contributing to Enso! We welcome contributions of all sizes.
- Fork the repo and clone your fork
- Install dependencies:
npm install(root) +cd server && npm install - Start dev server:
npm run dev:all - Make your changes on a feature branch
- Submit a PR
- Bug fixes — Found something broken? Fix it and send a PR
- New app types — Build a new app in
server/apps/following themedia_gallerypattern - UI improvements — Components live in
src/components/ - Documentation — Help us explain Enso better
- Translations — Add languages in
src/lib/i18n/
Each app in server/apps/ follows this structure:
my_app/
├── app.json # Tool specification (parameters, sample data)
├── template.jsx # React component for rendering
└── executors/ # Tool execution logic
└── my_tool.ts
Use server/apps/media_gallery/ as the reference implementation.
- TypeScript with strict mode
- React functional components with hooks
- Tailwind CSS for styling
- Zustand for state management
- Keep PRs focused — one feature or fix per PR
- Include a description of what changed and why
- Ensure
npm run buildpasses - Add tests for new functionality where applicable
Use GitHub Issues with:
- Bug reports: Include steps to reproduce, expected vs actual behavior
- Feature requests: Describe the use case and proposed solution
By contributing, you agree that your contributions will be licensed under the MIT License.