Introduction
Kubuno is a self-hosted, modular cloud platform: a small core (the "operating system") and a constellation of independent modules. This documentation is for developers who want to build their own module.
The mental model #
A Kubuno module is a separate process (Rust or Python) that registers with the core at startup. The core then proxies its routes, dispatches events and manages its lifecycle. A module never links against the core directly: it talks over HTTP and through well-defined extension points.
- Independence — every module is its own git repository and its own
.debpackage. - Dynamic discovery — never assume another module is installed.
- Consistency — the frontend is loaded at runtime into a single shared React host.
Anatomy of a module #
mon-module/
├── Cargo.toml
├── module.toml # le manifeste : id, port, routes, sidebar, events
├── src/
│ ├── main.rs # bootstrap : config, pool DB, serveur Axum, enregistrement
│ ├── handlers/ # handlers HTTP (les routes déclarées au manifeste)
│ ├── models/ # structs sqlx::FromRow (schéma du module)
│ ├── services/ # logique métier
│ └── events.rs # publication d'événements
├── migrations/ # SQL versionné, schéma dédié au module
├── frontend/
│ └── src/entry.ts # register() : routes, sidebar, toolbar, slots
└── build_deb.shWhat you will need #
| Tool | Version |
|---|---|
| Rust | ≥ 1.82 (edition 2021) |
| Node.js | ≥ 24 |
| PostgreSQL | 16 |
Head to the architecture to understand the pieces, or jump straight to the quickstart.