Skip to content

Latest commit

 

History

History
107 lines (85 loc) · 5.95 KB

File metadata and controls

107 lines (85 loc) · 5.95 KB

Licensing

Agentbox is AGPL-3.0. Every first-party source file and every bundled component that carries a copyleft licence is AGPL-3.0 or a permissive licence compatible with it.

Component matrix

Component Licence Linkage Source pointer
agentbox (this repo) AGPL-3.0 LICENSE
solid-pod-rs (DreamLab-AI) AGPL-3.0-only Binary under supervisord — HTTP boundary only github.com/DreamLab-AI/solid-pod-rs
linkedobjects/browser AGPL-3.0 Static assets served by management-api github.com/linkedobjects/browser
nostr-rs-relay (Scsibug) MIT Binary from nixpkgs — HTTP boundary only github.com/scsibug/nostr-rs-relay
nagual-qe (proffesor-for-testing) MIT Binary launched by supervisord github.com/proffesor-for-testing/nagual-qe
nostr-tools npm MIT Library linked into management-api npm
@noble/curves npm MIT Library linked into management-api npm
openai/privacy-filter weights Apache-2.0 Model weights loaded by opf-router Hugging Face
codex binary (OpenAI) Apache-2.0 Binary invoked as a subprocess github.com/openai/codex

All permissive (MIT, Apache-2.0) components are compatible with AGPL-3.0.

The services/ subtree is permissive (ADR-2030)

The Rust crates under services/ are first-party but licensed MIT OR Apache-2.0 by their own manifests, and each package directory carries the LICENSE-MIT and LICENSE-APACHE texts plus a README.md stating the dual grant (services/LICENSING-NOTICE.md has the per-directory table), so they can be published to crates.io and reused outside the AGPL service. The one exception is a crate that links an AGPL library: nostr-pod-bridge links solid-pod-rs-nostr, declares AGPL-3.0-only, ships the full AGPL text as LICENSE, and says in its README that it is not dual-licensed. The aggregate hosted service remains AGPL-3.0; the permissive grant applies to each crate on its own.

scripts/ci/check-crate-licensing.sh enforces this on every push and pull request (a step in .github/workflows/invariants.yml): a services/ package directory whose manifest declares a grant with no adjacent text, no README, or a licence expression this gate does not recognise fails CI. Adding a crate with a new licence expression is therefore a deliberate change to the gate.

AGPL-3.0 obligations for operators

Running agentbox as a hosted service — offering it to users over a network — triggers §13: you must make the full corresponding source available to those users, including any modifications you have made.

Self-hosted and internal use carry no additional obligations beyond the standard copyleft terms (preserve notices, make source available if you distribute binaries).

Source-Code headers

The management-api emits a Source-Code HTTP header on every response from /lo/* (the linkedobjects/browser viewer mount path) pointing at the upstream repository. This satisfies the AGPL §13 network-service disclosure requirement for that component.

AGPL-3.0 compliance rules for contributors

  1. Do not link solid-pod-rs as a Rust library. Only the solid-pod-rs-server binary is packaged. Communication happens over HTTP://127.0.0.1:8484; no shared address space.
  2. Preserve LICENSE files in derivation outputs. lib/solid-pod-rs.nix, lib/linkedobjects-browser.nix, and lib/nagual-qe.nix all copy upstream LICENSE files into $out/share/doc/<component>/LICENSE in postInstall.
  3. New components must be licence-reviewed before merging. Add them to the matrix above. AGPL-3.0, MIT, Apache-2.0, and MPL-2.0 are all pre-approved. GPL-2.0-only is incompatible with AGPL-3.0 — raise an issue.
  4. No proprietary model weights in the image. Weights must be permissively licensed (Apache-2.0, MIT, or equivalent) to remain compatible.

Supply-chain attestation

flake.lock pins every Nix input by hash. lib/solid-pod-rs.nix and lib/nagual-qe.nix pin a git rev plus srcHash and cargoHash. The Nix sandbox guarantees that a build either produces the pinned hash or fails loudly — there is no silent substitution of dependency content.

For SBOM purposes, nix build .#runtime --print-out-paths gives the deterministic closure of every derivation in the image.

Further reading

Package evidence qualification — 2026-09-05

The 2026-09-04 inventory found eight manifests with the declared seven-permissive/one-AGPL split and no adjacent licence texts or README files. That gap is now closed on disk: every package directory carries the texts its manifest declares, each manifest declares description, repository and readme, and cargo package --list shows those files inside the package payload for all eight crates. scripts/ci/check-crate-licensing.sh keeps it closed.

What that does not establish: no registry lookup, archive creation or publication has run; no dependency graph has been reviewed for distribution licence compatibility; the prose-sanitiser and diagram-ir extraction account still needs separate source/package receipts. Files on disk are a packaging precondition, not a release. Metadata evidence does not certify a published archive, dependency compatibility or operator compliance. Complete release ownership, packaged contents and dependency review before claiming the package contract closed.