Project
Contributing
Sign-off, the licence grant and how changes are made.
Thank you for helping. Roastwarden is free software under the GNU Affero General Public License,
version 3 or any later version (LICENSE). Read this before you send a change.
Your contribution and its licence
By submitting a contribution (a commit, a pull request, a patch, a file or text) you agree that:
- It is licensed under AGPL-3.0-or-later, like the rest of Roastwarden, so everyone receives it on the same terms.
- You also grant Johnathon Sprague, the project's maintainer and copyright holder, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable licence to use, copy, modify, distribute and sublicense your contribution, and to license it under other terms, commercial ones included. This keeps a dual licence possible, for example a commercial licence for a roaster maker who cannot ship AGPL code, and pays for the project's upkeep. You keep the copyright in your contribution and may use it however you like.
- You have the right to make it: it is your own work, or you may submit it under these terms (your employer allows it, or its licence is compatible and you say where it came from). It does not knowingly infringe anyone's rights.
Sign off each commit to say you agree (git commit -s adds the line):
Signed-off-by: Your Name <you@example.com>
A change without a sign-off cannot be merged.
Third-party code
Code copied from elsewhere keeps its own licence and copyright notice. It must be compatible with
AGPL-3.0-or-later; say where it came from in the commit. A new Rust dependency must pass
cargo deny check licenses (deny.toml), and a new npm package in the dashboard's bundle the
check in apps/dashboard/notices.js; both run in CI.
How the project works
CLAUDE.mdis the map: layout, commands, conventions.docs/DEVELOPMENT.mdhas the toolchain (a Nix dev shell), the quality gates and the browser checks.docs/ROADMAP.mdis the work queue. Open an issue before a large change, so we can agree on the shape first.- Every feature ships with its agent path the same day: a
roastcommand, the skill, The roast CLI (Agents). CI checks it. - Never send control commands to real hardware from a test; use the virtual roaster
(
ROASTWARDEN_VIRTUAL_ROASTER=1). - Report a security problem privately (Security), not in an issue.