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 .deb package.
  • 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.sh
Note

The best place to start reading code is the core repository, then the pilot module calendar.

What you will need #

ToolVersion
Rust≥ 1.82 (edition 2021)
Node.js≥ 24
PostgreSQL16

Head to the architecture to understand the pieces, or jump straight to the quickstart.