Skip to content
โ—‡ AirawatOS Developer
๐Ÿšง Under development โ€” this portal is being built track by track. Content will keep growing, and some sections are still placeholders.

Deep Dives

Runtimes & Delivery

How a component's code gets to a deployment safely, and where it actually runs.

Two questions, two answers

For any component, there are two separate questions:

AirawatOS answers them separately, and neither answer requires trusting the component's code.

Delivery: never baked in, always verified

A published component does not ship hidden inside the platform's own image. Instead, its certified code lives in a content-addressed filestore โ€” a store where a file's address is a fingerprint of its contents. When you install a component, the platform:

Because the address is the fingerprint, you can't quietly swap certified code for different code under the same name โ€” the fingerprint would change and the check would fail. Trust rests on the content and the certificate, not on how the file travelled. (This is the delivery half of Zero-Trust.)

The important design choice: install is when the code is materialized, not first-run. That removes a whole class of "it failed the first time someone used it" surprises.

This very developer portal is delivered exactly this way: it's published to the filestore and
materialized on boot โ€” not baked into the platform image. Updating these docs re-publishes the bundle;
it doesn't require rebuilding or redeploying the platform.

Placement: light things in-process, heavy things out-of-process

Some components are light โ€” a bit of arithmetic on some data. Others are heavy โ€” they need large libraries for satellite imagery, geospatial maths, or machine learning. Running them the same way would force every deployment to carry every heavy library. So AirawatOS splits placement:

Runtime profiles: the one placement key

How does the platform know which components are "heavy"? Each component declares a runtime profile in its description, and each runtime declares which profile it satisfies. Profiles are cumulative layers of capability, for example:

A component that declares nothing heavier than standard runs in-process. Anything heavier is routed to a runtime that satisfies its profile. And this is fail-safe: if a component needs a profile that no available runtime provides, the run is designed to fail clearly rather than quietly run with a missing library and produce wrong results.

A worked example. Two engines, two very different needs. A simple "is this reading above the alert threshold?" check needs nothing beyond basic arithmetic โ€” it declares the standard profile and runs in-process, answering instantly. An engine that extracts building outlines from satellite imagery needs heavy geospatial and earth-observation libraries โ€” it declares the earth-observation profile, so the platform dispatches it to a runtime that carries those libraries, out-of-process. Neither engine carries the other's baggage, and the deployment never has to bundle satellite-imagery libraries just to run a threshold check.

The runtime is itself a component

A runtime is not special magic โ€” it is just another certified component (of kind runtime) whose deliverable is a shared, per-profile container image. Drivers and engines are mounted into it read-only; they never carry their own container. This gives a clean split: the filestore holds component code; the container registry holds the heavier runtime images.

The coordination / execution split

Two planes cooperate, and โ€” importantly โ€” neither calls the other directly; the registry sits between them as the seam:

This is why one deployment doesn't collapse into a single ever-growing container holding every library anyone ever needed.

Verbs arrive as data, not as platform code

There's a nice consequence of all this for how a request reaches an engine. The app-host is domain-blind โ€” it doesn't have any sector logic baked in. When a request for a given action ("verb") comes in, the host looks up which engine implements that verb from governed records in the registry, not from a hardcoded list in its own code. Publishing a new engine registers its verbs, and they go live within seconds โ€” no platform edit, no image rebuild. (The request side of this is Interaction.)

Upgrades don't move under your feet

Published versions are immutable and signed. To change something you publish a new, higher version, and each tenant chooses when to adopt it. Nothing changes under an installed component without an explicit step.

Components vs. platform services: the shape of the whole system

A fair question at this point: is AirawatOS built out of components, or out of services? The answer is both โ€” but they sit at different layers, and only one of them grows.

Underneath everything is a small, fixed set of platform services โ€” the operating system itself. These are the long-running processes that provide the ground every component stands on: the kernel (trust root + registry, and the confined model-gateway path), identity (mints the tokens every service checks), the network (certification + directory), the app-host (where app and browser requests land), the file store (content-addressed component code), secrets (the vault), the broker (the one confined door for a component's outside I/O), the event dispatcher (the "automation" service that fans registry-write events out to subscriptions), the scheduler, and the runtime-manager (runs heavy components out-of-process). This list is deliberately short, and it stays short: you do not add a new platform service every time you add a capability. (The same set, drawn as two lanes, is in Zero-Trust.)

On top of that substrate is the component plane โ€” and this is where all growth happens. Every new capability โ€” a driver, an engine, an app, a whole solution โ€” arrives as a component: certified, delivered from the filestore, installed as data, and run under the broker's confinement. Adding one is a publish, not a deployment. No new process, no new port, no platform rebuild.

   the component plane   โ€” grows without bound
   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
   โ”‚  drivers ยท engines ยท apps ยท solutions ยท agents   โ”‚
   โ”‚  certified ยท installed as data ยท broker-confined โ”‚
   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                          runs on
   the platform substrate   โ€” a short, fixed list
   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
   โ”‚  kernel ยท identity ยท network ยท app-host          โ”‚
   โ”‚  file store ยท secrets ยท broker                   โ”‚
   โ”‚  event dispatcher ยท scheduler ยท runtime-manager  โ”‚
   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

So the direction of travel is components on a fixed substrate โ€” the opposite of "a new micro-service for every feature." Capability is something you publish onto the platform, not something you bolt beside it. That's what keeps a deployment from sprawling into an ever-growing pile of processes, and it's why the same handful of platform services can carry an unbounded catalogue of sector capability.

(Watch the word "service" here โ€” it has a second, unrelated meaning as a size of thing you consume, covered in Solutions & Services.)

Where this stands today

Working now: filestore delivery with fingerprint verification for all component shapes; the first out-of-process runtime split (the geospatial tier) live in production, with the orchestrator dispatching heavy engines to a dedicated runtime; governed verb dispatch (the domain-blind host reading verb-to-engine bindings from the registry) live; and the first node-side operator tool that pulls, verifies, and attests the runtime images it holds.

Available now also includes several heavy profiles beyond the base โ€” earth-observation, modeling, media, and vision runtimes each ship as certified components with a pinned image digest.

Being built: finishing the cutover so that nothing is baked into the platform image (some components are still baked today); tightening placement to strictly fail-safe everywhere; the strongest confidential runtime tier; and per-tenant version pinning with admin-approved upgrades.