Contributing
How to contribute to Gryt
Prerequisites
- Node.js 22.13 or newer, and yarn. Not npm:
packages/clientandpackages/servership ayarn.lock, andnpm installresolves a different tree and writes a competing lockfile. - Go 1.24 or newer for the SFU, 1.25 for the CLI
- Docker, if you want to run anything in a container
Setup
git clone --recurse-submodules https://github.com/YOUR_USERNAME/gryt.git
cd grytInstall dependencies and start everything with the dev script:
ops/start_dev.shThe script installs dependencies for all packages and starts the client, server, and SFU in development mode.
Workflow
- Create a feature request or a bug report
- Fork the repo and create a branch
- Make changes and add tests
- Run lint and tests
- Submit a pull request
Code style
TypeScript
- Use strict mode
- Follow ESLint and Prettier configs
- Add JSDoc comments for public APIs
/**
* Manages microphone input and audio processing.
* @param shouldAccess - Whether to request microphone access
*/
const useMicrophone = (shouldAccess: boolean): MicrophoneState => {
// ...
};Go
- Follow
gofmtformatting - Add godoc comments for exported functions
- Handle errors explicitly
Testing
# Server
cd packages/server && yarn test
# SFU
cd packages/sfu && go test ./...
# CLI
cd packages/cli && go test ./...The client has no general test suite yet. What it has is yarn typecheck and
yarn lint, and one targeted check, yarn test:updater-bridge. Run the first
two before opening a pull request.
Blog and site content
The marketing site and blog live in packages/site. Blog posts are MDX files in content/blog/ — see the Site docs for the full writing guide.
Quick steps to add a blog post:
- Create
packages/site/content/blog/my-post.mdxwith frontmatter (title,author,date) - Place images in
packages/site/public/and reference them as - Run
npm run devinpackages/siteto preview
AI-assisted contributions
You may use AI assistance anywhere in Gryt — but you have to say so. Tick the AI-assisted box in the pull request template if any part of your patch was AI-generated.
Some areas are audited more critically than others. The SFU, authentication and identity code, the client's key handling, the image worker and the data layer are read line by line before anything merges, whoever wrote them. Expect a slower review there, and questions about anything that changes behaviour. See the AI policy for the full list of paths and the reasoning.
Pull request checklist
- Tests pass where they exist (
yarn testin the server,go test ./...in the SFU and CLI) - Types check and the linter is clean (
yarn typecheck,yarn lint,go fmt ./...) - Documentation is updated if needed
- No breaking changes (or clearly marked)
- AI-assisted code is disclosed (see the AI policy)
License
Contributions are licensed under the AGPL-3.0. By submitting a pull request, you agree that your contributions will be licensed under the same terms.