compose-ui
v0.1.9Compose project supervision in the Console — a page over compose::* with live container state, lifecycle actions, worker packages, and per-container log tails.
Install
iii trigger compose::add worker=compose-uiRun in your project with the iii engine running. Exact versions are immutable and digest-pinned.
skill doc
compose-ui
The compose-ui worker puts the compose daemon in the Console. Its page (Compose,
page compose) opens on a topology map of the engine, the namespace, and the
containers laid out by start_after, and shows every container the daemon supervises with its live
state, PID, and last error; starts, stops, and restarts containers or the whole
project in dependency order; adds, updates, and removes declared worker
packages; and tails each container's log. Every lifecycle action is the
daemon's own compose::* function, so what the page does and what
iii trigger compose::… does are the same operation.
The worker itself owns two things the daemon does not expose on the bus: a
compose-ui::changed trigger type that fires when the daemon writes its
durable project state or the compose file changes on disk, and
compose-ui::logs, a read-only tail of one container's log.
When to Use
- A person asks why a container is
failedor stuck instarting:compose::statusgives the state andlast_error;compose-ui::logsgives the last lines the process wrote before it died. - A person wants to see the fleet, restart something, or add a worker without
leaving the chat: open the Compose page with
composein the command palette orhost.panels.open({ pageId: 'compose', context: { container } })from another worker's UI. - A worker needs to react to supervisor changes (a crash cascade, a new
container, a compose file edit) without polling: bind
compose-ui::changedwith an empty config and re-readcompose::status.
Boundaries
- Lifecycle belongs to the daemon. Call
compose::up,compose::down,compose::restart,compose::add,compose::remove, andcompose::updatedirectly; this worker adds no proxies for them. compose-ui::projectreports environment variable names only, never values.compose-ui::logsreads at most 500 lines and 256 KiB from the end of one file and never lists or reads anything else in the state directory.- The worker must run in the compose project's namespace (compose supplies it;
a standalone process needs
III_NAMESPACE).
Functions
| Function | Purpose |
|---|---|
compose-ui::logs |
{ container, lines?, file? } → last lines of with size, truncated, missing. |
compose-ui::project |
{ file? } → the compose file as declared (namespace, engine endpoint, timeouts, each container's source, version, start_after, environment keys, run script) plus each running container's PID and listening TCP ports. |
Trigger types
| Type | Config | Payload |
|---|---|---|
compose-ui::changed |
{} |
{ kind: 'state' | 'file', file, namespace, state_dir, path, captured_at } |