Skip to content

Surfaces & coordinates

The JouleOS shell presents a workspace of surfaces rather than windows and files. A Surface is a live object in the single-level store with SurfaceContent, an intent history, and a capability set. You ask for things through one intent bar; results spawn as surfaces you can arrange.

Layout modes (native + PWA): free, columns, focus, stack, grid. Each surface carries its own energy attribution — you can see, per surface, what it has cost.

workspace
├─ surface "Welcome to JouleOS"
├─ surface "Fabric Energy Breakdown" ← live joule pie
└─ surface "Action chain" ← deterministic step trace

A coordinate is a place the runtime can lower onto, described by the control vector. The three shipping coordinates:

CoordinateRendererPersistenceNotes
nativewinit + wgpu~/.jouleos/ arenaenergy bridge on :9911
browserWebGPU → Canvas2DIndexedDB-backed arenathe PWA
bare-metalramfb framebufferdirectx86_64-unknown-none, no_std

The shell crate is no_std + alloc so the same surface logic runs on all three — the renderer is swapped behind the ShellRenderer trait, not the application code.