Contributing Guide
Thank you for your interest in contributing to Memo. This guide covers how to participate effectively.
Ways to Contribute
Bug Reports
Open an issue on GitHub Issues. Include:
- Memo version (
memo --version)
- Operating system and architecture
- Steps to reproduce
- Expected vs actual behavior
- Logs from the terminal where Memo is running
Feature Requests
Use GitHub Discussions for feature ideas. Describe:
- The problem the feature solves
- How you'd expect it to work
- Whether it affects existing workflows
Code Contributions
- Fork the repository
- Create a feature branch:
git checkout -b feat/my-feature
- Make your changes following the development standards below
- Run the full test suite (see Testing Protocol)
- Submit a pull request against the
main branch
Development Standards
Privacy First
Memo is a local-first application. All contributions must respect this:
- No telemetry or analytics code
- No network calls except those explicitly requested by the user (API providers, cloud sync, web search)
- User data must never leave the machine without explicit user action and encryption
Performance
- Backend: avoid blocking the HTTP handler goroutines. Use background workers for long operations.
- Frontend: avoid per-message
AnimationController instances. Minimize widget rebuilds.
- Memory: use streaming where possible, avoid loading entire datasets into RAM.
Documentation
Every user-facing feature needs:
- A section in the release notes (
versionNoteEN.md and versionNoteTR.md)
- Updates to configuration reference if new config keys are added
- Doc page if the feature is non-trivial
Testing
- Backend tests use
go test -race — every test must pass under the race detector
- Concurrency paths must have dedicated test coverage
- Frontend tests use Flutter's
flutter_test package
- No PR is accepted without passing CI
Key Areas for Contribution
| Area |
What's Needed |
| Agent UI |
Rich visualization of tool execution, progress indicators |
| Tests |
Backend test coverage, integration tests, concurrency tests |
| Multi-step planning |
Improve the chief model's planning and task decomposition |
| File edit tool |
Smarter diff-based editing, conflict resolution |
| Git tools |
Native git integration beyond shell commands |
Philosophy
Memo is built on these principles, in order of priority:
- Correctness — features work correctly in all states, including failure states
- Privacy — the user controls all data; nothing is sent anywhere without consent
- Performance — fast enough to feel instant, even with large memory stores
- Simplicity — straightforward code, standard library where possible, no over-engineering
Pull Request Checklist