Skip to content

🧰 The platform (for whoever operates it)

Underneath the sections there's a platform layer that keeps everything running and audited. It's managed from the command line with nocloudme.

Scheduled tasks (jobs)

Everything that runs on its own — refreshing quotes, recalculating the home screen, backups, ingests — lives in a job registry (config/jobs.yaml) with its schedule, host, timeout and what it produces.

nocloud jobs            # list jobs and their state
nocloud jobs run <id>   # trigger one by hand

No hidden tasks in an unreadable crontab: the inventory is a single, versioned list.

Events and auditing

Every relevant action emits an event (with severity, author, message and data) into an audit stream with a fixed schema.

nocloudme audit summary   # summary of the event stream
nocloudme events          # latest platform events

Validated configuration

The instance's configuration is described by a schema (config/schema.yaml): the manager validates known keys and masks secrets in any output.

nocloud doctor          # installation diagnostics

doctor runs well over a dozen checks — git and Python availability, the job registry, the configuration schema, the database and its seeded sections, module manifests, the backup contract, the audit event stream and the upgrade lifecycle — and reports each one individually.

The upgrade lifecycle

Upgrading isn't "copy and pray": it's a lifecycle with distinct phases and a point of no return.

preflight → backup → migrate → build → deploy → verify

If a phase fails, the prior snapshot lets you roll back.

The daemon and the "typing pause"

A small daemon on the workstation orchestrates jobs and heavy work, and also serves on-demand requests — like a Store connector's "refresh now" button — over a local API. It follows one courtesy rule: it freezes intensive tasks while you're typing and resumes them once you stop, so it never competes with you for the machine while you're using it.