Skip to content

ADR-001: Licensing Strategy

Accepted (2025-03-01)

paiOS is a commercial open-source project that needs to:

  1. Protect the core runtime from being forked without contributing back
  2. Allow proprietary extensions for any developer or commercial partner
  3. Ensure long-term sustainability: flexibility for future business models
  4. Maintain simplicity: avoid “Qt licensing pain”

The runtime communicates with extensions via gRPC over Unix Domain Sockets (IPC), similar to how Linux kernel syscalls create a boundary between the GPL kernel and user-space applications.

We adopt a “Default AGPL, with Permissive Exceptions” model:

  • Default: All files are licensed under AGPL-3.0 (per root LICENSE file).
  • Exception: Subdirectories with their own LICENSE file override the default.
pai-os/
├── LICENSE (AGPL-3.0 = default for everything)
├── NOTICE (Copyright & Trademarks)
│ ✅ FREE TO USE (Apache-2.0)
├── api/ ← All API definitions
│ └── grpc/
├── apps/ ← Your extensions go here
│ 🔒 MUST SHARE CHANGES (AGPL-3.0)
├── engine/ ← Runtime code
├── os/
├── scripts/
└── docs/

We require a CLA (replacing DCO) to grant aurintex the right to:

  • Ensure long-term sustainability: flexibility for future business models
  • Maintain the project indefinitely with proper resources
  • Protect the project’s right to defend its trademarks

The gRPC/UDS communication between runtime and extensions creates a clear process separation:

flowchart TB
  subgraph ext["✅ Your Extension"]
      ext_node["Any license you want!<br/>Proprietary, MIT, Apache, closed..."]
  end

  subgraph runtime["🔒 paiOS Runtime"]
      runtime_node["AGPL-3.0"]
  end

  ext_node -->|"gRPC over UDS<br/>(License Boundary)"| runtime_node
Diagram (Expanded View)

This follows the same pattern as:

  • Linux Kernel (GPL) + User-space apps (any license)
  • Docker Engine (Apache-2.0) + Plugins (any license)

Rule: Shared memory may only be used for raw byte buffers (images, audio PCM). Control signals and handles must go through gRPC.

  • ✅ Clear separation: Runtime protected, extensions open
  • ✅ B2B customers can write proprietary extensions
  • ✅ Apache-2.0 provides patent protection for extension developers
  • ✅ CLA enables future business model flexibility
  • ✅ Simple: Only 2 licenses to understand
  • ⚠️ AGPL may deter some enterprise adopters (but this is intentional)
  • ⚠️ CLA adds friction for contributors (mitigated by CLAassistant)