Build Extensions
Create proprietary extensions using our Apache-2.0 licensed API. No licensing fees, no source code sharing required.
This guide explains paiOS licensing in practical terms – what you can and cannot do.
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/Yes! Extensions communicate with the paiOS runtime via gRPC over Unix Domain Sockets (IPC). This creates a clear process boundary, meaning:
flowchart TB
subgraph ext["✅ Your Extension"]
ext_label["Any license you want!<br/>Proprietary, MIT, Apache, closed..."]
end
ext -->|"gRPC over UDS<br/>(License Boundary)"| runtime
subgraph runtime["🔒 paiOS Runtime"]
runtime_label["AGPL-3.0"]
end
style ext fill:#1a4d1a,stroke:#4ade80,color:#fff
style ext_label fill:#1a4d1a,stroke:#4ade80,color:#fff
This follows the same pattern as:
The gRPC API definitions (api/grpc/) are licensed under Apache-2.0, which provides:
// You can use this API in any projectservice PaiService { rpc Infer(InferRequest) returns (InferResponse);}If you modify the paiOS runtime itself (the engine/ code), the AGPL-3.0 requires you to:
If you need high-performance data transfer (e.g., camera frames, audio):
| ✅ Allowed | ❌ Not Allowed |
|---|---|
| Sharing raw byte buffers (JPEG, PCM audio) | Sharing complex paiOS data structures |
| gRPC handles pointing to shared buffers | Direct memory access to runtime internals |
Build Extensions
Create proprietary extensions using our Apache-2.0 licensed API. No licensing fees, no source code sharing required.
Commercial Licensing
Need a commercial license for runtime modifications or white-labeling? Contact us.
If you want to contribute to paiOS:
For the full technical rationale behind our licensing decisions: