demo — Cubes is a fictional demo SaaS running on lola / sola-os. Nothing here is a real product.
Open console

Cubes documentation

Cubes gives every agent its own build sandbox — a cube — that wakes for builds and sleeps between them. This page documents the cube lifecycle, and the small HTTP API the console uses.

The cube lifecycle

HTTP API

The Cubes backend is one function with a public URL. It serves this site and three JSON endpoints:

RouteMethodWhat it does
/api/healthGETLiveness: returns {"ok":true,"service":"cubes"} plus whether the PDF and support integrations are configured.
/api/invoicePOSTBody {"name","plan","cubeHours"}. Typesets a usage invoice in LaTeX, renders it through the platform catalog's latex-to-pdf service, and returns application/pdf.
/api/supportPOSTBody {"subject","message","contact?"}. Files a ticket into the platform's /_lola/support channel with source: "cubes".

Render an invoice from the command line

curl -X POST https://cubes.abot.at/api/invoice \
  -H 'content-type: application/json' \
  -d '{"name":"Acme Agents Ltd.","plan":"boulder","cubeHours":342.5}' \
  -o invoice.pdf

File a support ticket from the command line

curl -X POST https://cubes.abot.at/api/support \
  -H 'content-type: application/json' \
  -d '{"subject":"cube stuck drowsy","message":"cube-b7 will not fall asleep"}'

How Cubes itself is deployed

Cubes is a tenant of the sola-os minicloud (lola). The whole product is:

  1. one Node function (handler.mjs, zero dependencies) deployed as a zip Lambda with a function URL — it serves the site and the API;
  2. one catalog service, latex-to-pdf, deployed into the Cubes account from the platform catalog — it does the PDF typesetting;
  3. the platform support channel, which receives Cubes' tickets.

That is the point of the demo: a real app, on real platform primitives, small enough to read in one sitting.