Thanks for your interest in contributing! Codex is a single-user personal knowledge base, and we welcome improvements that maintain this focus.
- Fork the repository and clone your fork
- Install dependencies:
make install - Set up pre-commit hooks:
pre-commit install(ensures linting and checks run automatically) - Start development:
make dev - Run tests:
make test
See .github/copilot-instructions.md for detailed architecture and development patterns.
Before starting work, create an issue describing the bug or feature. This allows discussion before you invest time in a PR.
- Create a branch from
main(any name works) - Follow existing patterns in the codebase
- Write tests for new features (see
server/tests/andclient/src/components/*.test.tsx) - Ensure
make testpasses before submitting
Use Conventional Commits format:
feat: add search highlighting
fix: resolve folder tree collapse bug
docs: update README with MCP instructions
test: add attachment upload tests
This format enables automatic changelog generation.
- Link your PR to the issue (mention
Fixes #123in description) - Ensure CI checks pass (linting, tests, builds)
- Keep PRs focused - one feature or fix per PR
Codex is designed as a single-user application. We're not interested in multi-user collaboration features due to the complexity of concurrent editing and git merge conflicts.
Acceptable: Features that support multiple isolated users (separate data directories, workspaces) Not Acceptable: Collaborative editing, real-time sync, conflict resolution for concurrent edits
If you're unsure whether a feature aligns with this philosophy, ask in an issue first!
- No
anytypes - Useunknownwith type guards - Path security - Use
validatePath()for user-provided paths (seeserver/src/mcp/tools/attachments.ts) - Input validation - Zod schemas for API/MCP inputs
- Tests required - Maintain coverage for critical paths
Open an issue for clarification or discussion before starting work.
By contributing, you agree your contributions will be licensed under the MIT License.