First off, thank you for considering contributing to Screenpipe!Documentation Index
Fetch the complete documentation index at: https://mintlify.com/screenpipe/screenpipe/llms.txt
Use this file to discover all available pages before exploring further.
We prefer that you contribute because you use (or will use) the product, rather than solely for bounties. Thank you.
Getting Started
Before you begin:- Try the app - Run the pre-built app to get familiar with Screenpipe
- Understand the architecture - Familiarize yourself with the project structure
- Read the principles - See Principles below
Installation and Build Guide
Follow the installation instructions for your platform to set up a development environment.- macOS
- Windows
- Linux
macOS Setup
1. Install dependencies:How Can I Contribute?
Reporting Bugs
Before creating a bug report:- Search existing issues - The bug might already be reported
- Use a clear title - Make it easy to identify the problem
- Describe the steps - Provide detailed steps to reproduce
- Include examples - Screenshots, error messages, logs
Suggesting Enhancements
Enhancement suggestions are tracked as GitHub issues:- Clear title - Identify the suggestion clearly
- Step-by-step description - Explain the enhancement in detail
- Explain the benefit - Why would this be useful to most users?
Pull Requests
When submitting a pull request:- Fill in the template - Use the PR template provided
- Don’t include issue numbers in title - Reference them in the description
- Include screenshots/GIFs - Visual changes should be demonstrated
- Follow the styleguides - See Styleguides below
- End files with a newline - All files should end with a newline character
Styleguides
Git Commit Messages
- Use present tense - “add feature” not “added feature”
- Use imperative mood - “move cursor to…” not “moves cursor to…”
- Limit first line to 72 characters
- Reference issues liberally - After the first line
- Make commits meaningful - We use git commit history to generate changelogs with AI
Rust Styleguide
All Rust code must adhere to the Rust Style Guide. Key points:- Run
cargo fmtbefore committing - Run
cargo clippyand fix warnings - Follow the standard project layout
File Headers
Every source file (.rs, .ts, .tsx, .js, .jsx, .swift, .py) must include this header:
# for Python, // for Rust/TS/JS/Swift.
Principles
When contributing, follow these core principles:User Fanatic
Focus on building what people want and bring maximum value. Always ask: “Does this help our users?”Concurrency
Prefer channels over mutexes/locks in Rust code.Simplicity
- Avoid premature optimization
- Write code that is easy for humans to read
- Less is more - Optimize for less code, less files, less dependencies, less complexity
Production First
We’re building real products. Code should be production-ready, tested, and maintainable.Focus
Avoid feature creep. Focus on core functionality and build upon it. Focus on the user and their needs.Use Numbers
If you can’t measure it, you can’t improve it. Use metrics, benchmarks, and data.Positive-Sum
Collaborate, share knowledge, help others. We’re building something bigger together.Running Tests
Before submitting a pull request, run all tests:Development Tips
Running Dev + Prod Simultaneously
Avoid conflicts with your production instance:On macOS,
/tmp is cleaned periodically by the system.Debugging
See the CLI Reference for debugging tools and techniques.Issue and Pull Request Labels
We use labels to organize issues and PRs:| Label | Description |
|---|---|
bug | Something isn’t working |
enhancement | New feature or request |
documentation | Improvements to docs |
good first issue | Good for newcomers |
Join the Community
Say 👋 in our public Discord channel. We discuss:- How to bring Screenpipe to production
- Contributions and development
- Personal projects
- Just hang out ☕
Code of Conduct
Be respectful, inclusive, and collaborative. We’re here to build something great together.Thank you for contributing to Screenpipe! 🎉
Next Steps
CLI Reference
Command-line tools and options
JavaScript SDK
Build with the TypeScript SDK
API Reference
Complete API documentation
Discord
Join the community