Appearance
Settings and addressing
FlowPad has no traditional "Settings" page. Configuration is environmental — it comes in through URL parameters, attributes on the <matrix-dsl-host> element, and bus-driven theme tokens. This page enumerates every knob.
The four roots
FlowPad operates against four address roots, all read by FlowpadApp and the components beneath it:
| Concept | Source | Default |
|---|---|---|
| Authority root | URL ?authorityRoot=, host attribute data-authority-root, or FLOWPAD_DEFAULTS.AUTHORITY_ROOT | FLOWPAD-AUTHORITY |
| FlowPad root | URL ?root=, host attribute, or FLOWPAD_DEFAULTS.FLOWPAD_ROOT | FLOWPAD-ROOT |
| Catalog target | URL ?catalog=, or FLOWPAD_DEFAULTS.CATALOG_TARGET | FLOWPAD-AUTHORITY/system.catalog |
| Backbone broker URL | URL ?backbone=, or FLOWPAD_DEFAULTS.BACKBONE_URL | '' (empty = use page's WebSocket transport) |
These are spelled out exactly in projects/matrix-3/packages/flowpad/src/config/defaults.ts:
ts
export const FLOWPAD_DEFAULTS = {
AUTHORITY_ROOT: 'FLOWPAD-AUTHORITY',
CATALOG_MOUNT: 'system.catalog',
CATALOG_TARGET: 'FLOWPAD-AUTHORITY/system.catalog',
FLOWPAD_ROOT: 'FLOWPAD-ROOT',
BACKBONE_URL: '',
} as const;The resolution priority comment in the same file: URL params → HTML attributes on <matrix-dsl-host> → these product defaults.
Target mount
The pipeline editor's $TARGET token resolves to FlowpadApp._targetMount. It defaults to the catalog target above and changes when:
- A user clicks an actor in the actor tree (sidebar emits
nodeSelected; shell callssetTargetMount). - The app is invoked with
setTargetMount { mount }. - The DSL example uses
$CATALOG_TARGET— substituted by the runtime to whatever?catalog=evaluated to.
Code:
ts
// FlowpadApp.ts:206
private _targetMount: string = FLOWPAD_DEFAULTS.CATALOG_TARGET;
// FlowpadApp.ts:252-254
onSetTargetMount(params: { mount: string }) {
this._targetMount = params.mount;
}Theme tokens (set over the bus)
FlowPad ships a <mx-theme> element at the top of the page (flowpad.template.ts:23). Themes are not stored in user settings; they are applied by sending $tokens ops at runtime. Several DSL examples flip themes inline — see dsl/examples.ts:
js
flow()
.fromValue({ tokens: {
'color-surface': '#0f172a',
'color-primary': '#3b82f6',
'color-text': '#f1f5f9'
} })
.viaRemote('flowpad-page', '$tokens')'Theme: Dark Mode', 'Theme: Light Mode', 'Theme: Surfaces', 'Theme: Cyberpunk', 'Theme: Accents', and 'Style: Glow Border' are all canned token sets.
Tokens propagate through Shadow DOM via CSS custom properties — see Vision 27 §12 referenced in dsl/examples.ts. The full list of token names is implicit in the components' default values; common ones include:
color-surface, color-surface-alt, color-surface-hover, color-surface-inset,
color-primary, color-primary-hover, color-primary-text,
color-text, color-text-secondary, color-text-muted,
color-border, color-border-light,
color-success, color-error, color-warning,
color-focus-ring, color-linkTopology indicators
ExecutionStatus reads three host attributes via resolveHostedRuntimeTargetInfo:
| Attribute | Meaning |
|---|---|
data-runtime-root | The root the page is currently running on |
data-authority-root | The configured authority root (may differ from runtime) |
data-platform-root | A platform root the page reaches through (federation) |
data-target-source / data-target-kind | Where the catalog target came from |
data-requested-root / data-target-unavailable-reason | If the requested root is unavailable, why |
These show up as the topology tag in the status bar (runtime FOO · authority FOO · target catalog).
URL parameter summary
| URL param | What it sets |
|---|---|
?authorityRoot=NAME | Authority root |
?root=NAME | FlowPad runtime root |
?backbone=URL | NATS broker URL (federated mode) |
?catalog=ROOT/mount | Catalog target for $CATALOG_TARGET |
These are read by the page bootstrap before FlowpadApp mounts, then exposed on the host element so each pane can pick them up consistently.
What is NOT configurable
These are deliberate fixed product surfaces:
- Editor language list. Always Flow DSL + LISP/Scheme. JSON commands and serialization formats are auto-detected, not user-selectable.
- Number of bootstrap nodes. Hard-coded 5 (
FlowpadApp.ts:233). - Result viewer set. DataViewer, TableViewer, TreeViewer, ErrorViewer are wired in; no plugin slot.
- Permissions.
matrix.jsondeclaresfsPolicy: 'none'— the page never touches the filesystem.
See also
Source:
projects/matrix-3/packages/flowpad/src/config/defaults.tsandprojects/matrix-3/packages/flowpad/src/components/ExecutionStatus.ts.