Before You Start
Feature Contributions
If the feature you’d like to contribute hasn’t received prior approval from the project maintainers (i.e., isn’t on the roadmap), please submit a request in the Feature Requests & Suggestions category before beginning work. Your request should include:- Specific implementation details
- Areas of the application affected by the change
- Designs (if applicable)
- Any other relevant information for review
Community Support
Join our Discord community to discuss changes, engage with contributors, and seek guidance.Development Setup
Requirements
- Node.js: v20.19.0+ or ^22.12.0 or >= 23.0.0
- Database: MongoDB Community Edition
- Package Manager: npm 11.10.0
Installation
Development Workflow
Before Starting Work
-
Ensure your main branch has the latest commits:
-
Create a new branch with a descriptive slash-based name:
During Development
-
Run linting to find errors:
Or enable husky pre-commit checks.
-
Clear cache before and after changes:
- Clear web app localStorage and cookies
-
Restart ESLint server after reinstalling or updating:
- In VS Code: “ESLint: Restart ESLint Server” in command palette
Before Submitting
Pre-submission Checklist
Pre-submission Checklist
Git Workflow
LibreChat uses a GitFlow workflow:Branch Naming
Use descriptive slash-based names:new/feature/x- New featuresfix/bug-name- Bug fixesdocs/update-guide- Documentationrefactor/component-name- Code refactoring
Commit Messages
Follow the semantic format:feat- New featurefix- Bug fixdocs- Documentation changesrefactor- Code refactoringstyle- Code style/formattingtest- Adding testschore- Maintenance tasks
- Reduce the number of commits by organizing and squashing
- Keep commit history clean and easy to follow
- Unorganized commits may be squashed during merge, reducing your commit count to 1
Pull Request Process
Update Documentation
Update README.md with:
- Interface changes
- New environment variables
- Exposed ports
- Useful file locations
Naming Conventions
Branch Names
Descriptive, slash-basedExample:
new/feature/xLabels
Descriptive, kebab-caseExample:
bug-fixJS/TS Files
camelCase, uppercase first letter for ReactExamples:
helperFunction.ts, ReactComponent.tsxDocs Files
snake_caseExample:
config_files.mdCode Standards
For detailed coding conventions, workspace boundaries, and architecture guidance, refer to:- Code Style Guide
- Testing Guidelines
AGENTS.mdin the repository
Our Standards
We strive to maintain a positive and inclusive environment. All contributors should:- Use welcoming and inclusive language
- Be respectful of differing viewpoints and experiences
- Gracefully accept constructive criticism
- Focus on what is best for the community
- Show empathy towards other community members
Getting Help
If you need assistance:Discord Community
Join our Discord for real-time help and discussions
GitHub Discussions
Browse or start discussions on GitHub
Issues
Report bugs or track existing issues
Documentation
Read the full documentation