# Licences Craft Anything is MIT OR Apache-2.0. This page says what we may depend on, how it is checked, and how the third-party licence bundle for a release is made. ## Policy - **Linked or bundled code must be permissive.** Rust crates, fonts, icons and any other material compiled into or shipped with the app use one of the licences allowed in [`deny.toml`](../deny.toml): MIT, Apache-2.0 (also WITH LLVM-exception), BSD-2/3-Clause, ISC, Zlib, 0BSD, Unicode-3.0, BSL-1.0, CDLA-Permissive-2.0, OFL-1.1 and the Ubuntu Font Licence (fonts only). - **MPL-2.0 only by name.** It is file-level copyleft, so it is allowed per crate, never broadly: today only `option-ext` (via `dirs`), used unmodified. Dual-licensed crates such as `self_cell` and `r-efi` pass through their permissive option. - **We never link or bundle copyleft code** (GPL, LGPL, AGPL, SSPL, EUPL, CC-BY-SA and the like). - **Programs we only run may have any licence.** External programs started as separate processes (Ghidra, rizin, tshark, Frida, JADX, Apktool, rtl_433, adb, a browser, an agent CLI…) are not linked or shipped by us. The person installs them, or we download the upstream release on request; we never copy their code into ours. - **Avoid patent-encumbered codecs.** Don't add encoders for H.264/AVC, HEVC/H.265 or AAC. Prefer AV1, VP9, Opus, FLAC, PNG and WebP; to decode those formats, use the operating system's codecs. ### Known traps | Thing | Problem | |---|---| | `dssim` (image similarity) | AGPL-3.0. Don't use it; pick a permissive metric or write our own. | | Hunyuan3D models | Licence excludes the EU, UK and South Korea. Don't make it a default or bundle it. | | FLUX.1 [dev] weights | Non-commercial licence. Only through a hosted API whose terms allow our use. | Model weights and hosted APIs have their own terms; read them before adding one as a default. ## Checking ```sh cargo install cargo-deny --locked # once cargo xtask licenses # = cargo deny check licenses cargo deny check # also advisories, bans (no wildcard versions) and sources ``` A new licence or crate exception needs a line in `deny.toml` with a reason, and a line here if it changes the policy. ## Release bundle Releases ship a third-party licence file generated by [cargo-about](https://github.com/EmbarkStudios/cargo-about) from [`about.toml`](../about.toml) and the template [`about.hbs`](../about.hbs): ```sh cargo install cargo-about --locked # once cargo about generate about.hbs -o THIRD-PARTY-LICENSES.html ``` Keep `accepted` in `about.toml` in step with `deny.toml`. Fonts and icons from `assets/` and egui's built-in fonts are listed in [`NOTICE`](../NOTICE) and [`ATTRIBUTION.md`](../ATTRIBUTION.md), which ship alongside it.