Follows the portal: the noun is "instance" everywhere the app says it — UI strings, CLI output, error details, docs and comments. The wire keys (`instance_id`, `instance_token`) and the hub route this calls move with it. An existing cloud.json is adopted rather than refused: without the key alias the dataclass fails to parse, which the caller swallows and reads as "never enrolled" instead of "reconnect". `instance_key` on a node type becomes `target_key`. It means the outside thing a node points at, which is a different sense of the word, and keeping both would put two meanings of "instance" in one codebase. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015YrQnKV3bnQd4K342y8tKj
122 lines
4.9 KiB
Markdown
122 lines
4.9 KiB
Markdown
# The dashboard app
|
|
|
|
The web interface is a single-page app served at `app.${DOMAIN}` — or, for an
|
|
instance reached through a portal, at `${DOMAIN}/i/{instance-id}`.
|
|
Either way it is the same application, and it is a client of the same REST API
|
|
you can script against.
|
|
|
|
Sign in with the account the instance was created with. On a fresh
|
|
instance that account was printed once, on the first start.
|
|
|
|
## The shell
|
|
|
|
A floating sidebar on the left, the selected screen filling the rest. On a
|
|
phone the sidebar collapses to a sheet.
|
|
|
|
| Entry | What lives there |
|
|
|---|---|
|
|
| **Home** | the brain graph, health, and everything that recently happened |
|
|
| **Flows** | the list of flows, and the canvas for each |
|
|
| **Dashboards** | the widget canvases, and the panels that display them |
|
|
| **Secrets** | credentials your nodes reference without holding |
|
|
| **Modules** | the Python packages your node code may import |
|
|
| **Alerts** | where failures get sent |
|
|
| **Admin** | users (superusers only) |
|
|
| **Search** | anything in this instance, by name |
|
|
| **Settings** | your account, appearance, and remote access |
|
|
|
|
### Search
|
|
|
|
**Search** at the foot of the sidebar, or ⌘K / Ctrl-K from anywhere, opens a
|
|
panel that finds things by name as you type: flows and the nodes inside them,
|
|
dashboards and the widgets on them, panels, secrets, modules, workers and alert
|
|
channels. Picking a node opens its flow with that node in focus; picking a
|
|
widget opens its dashboard.
|
|
|
|
It searches this instance. Reached through a portal, other instances
|
|
are behind **All instances** at the top of the sidebar.
|
|
|
|
## Home
|
|
|
|
The one screen you leave open. Four things share it.
|
|
|
|
### The brain graph
|
|
|
|
Every flow drawn as a neuron, wired to the flows it exchanges messages with.
|
|
This is the brand mark made live, and it is also the fastest read on the
|
|
instance: a neuron pulses when its flow is running work, and its ring turns
|
|
terracotta when the flow cannot run as written. A neuron with a problem keeps
|
|
its label showing so you can see which one it is without hovering.
|
|
|
|
Each flow also has a switch beside it in the list, which starts and stops it.
|
|
|
|
### Flows and dashboards
|
|
|
|
Two columns under the graph, exactly as tall as each other, most recently
|
|
worked on first. The flows column is the list with the switches; the dashboards
|
|
column is a mosaic, each tile a schematic of that dashboard's layout — blocks
|
|
where its widgets sit, shaded by what kind of widget each one is. Neither
|
|
column grows past about six rows: past that it scrolls in place rather than
|
|
pushing the health block down the page.
|
|
|
|
The tiles are a footprint, not a live view. They show you which dashboard is
|
|
which at a glance; the readings are on the dashboard itself.
|
|
|
|
### Health
|
|
|
|
Always answers, degraded or not. The tiles cover:
|
|
|
|
- **Flows** — total, running, paused, quarantined, and how many cannot run
|
|
because their graph does not validate
|
|
- **Nodes** — how many failed to load
|
|
- **Runs running** — batch runs in flight right now, and how many are
|
|
waiting. Only on an instance that has run something
|
|
- **Queue** — depth, and how old the oldest pending item is
|
|
- **Loop lag** — whether the engine's event loop is keeping up
|
|
|
|
`status: degraded` comes with a list of named problems, in words. "3 flow(s)
|
|
cannot run: house, pv, hallway" is more useful than a red dot, so that is what
|
|
it says.
|
|
|
|
### Activity
|
|
|
|
Charts of executions and failures over the selected range (1h / 6h / 24h / 7d),
|
|
with the recent runs, recent failures, dead-lettered work and the audit trail
|
|
underneath.
|
|
|
|
The charts are scrubbable: hover a moment and the lists below filter to it,
|
|
click to hold it while you read. That turns "something went wrong around two
|
|
o'clock" into the actual rows.
|
|
|
|
## Flows
|
|
|
|
The list shows each flow's title, node count, whether it has unpublished
|
|
changes, and whether it is enabled, paused or quarantined. The toolbar searches,
|
|
creates, and offers **Publish all changes** when several flows have drafts.
|
|
|
|
Opening one takes you to [the flow editor](flow-editor.md).
|
|
|
|
### Deleting several at once
|
|
|
|
Press and hold a card — or ctrl-click it — to pick it, then tap the rest. While
|
|
anything is picked, **New flow** in the toolbar becomes a trash button, and it
|
|
asks once before deleting the lot. Unpicking the last one puts the list back;
|
|
so does Escape. The Dashboards screen works the same way.
|
|
|
|
## Everything else
|
|
|
|
- [The flow editor](flow-editor.md) — the canvas, the code editor, running and
|
|
testing
|
|
- [Dashboards and panels](dashboards.md) — widgets, bindings, and hanging a
|
|
screen on a wall
|
|
- [Secrets, modules and alerts](operations.md) — the three screens that keep an
|
|
instance running
|
|
- [Accounts and the portal](portal.md) — reaching an instance from outside
|
|
its network
|
|
|
|
## Appearance
|
|
|
|
Light and dark follow your system by default; **Settings → Appearance**
|
|
overrides it. Both themes are first-class — the wall-panel view in particular is
|
|
designed to be legible in dark from across a room.
|