Skip to content

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:

ConceptSourceDefault
Authority rootURL ?authorityRoot=, host attribute data-authority-root, or FLOWPAD_DEFAULTS.AUTHORITY_ROOTFLOWPAD-AUTHORITY
FlowPad rootURL ?root=, host attribute, or FLOWPAD_DEFAULTS.FLOWPAD_ROOTFLOWPAD-ROOT
Catalog targetURL ?catalog=, or FLOWPAD_DEFAULTS.CATALOG_TARGETFLOWPAD-AUTHORITY/system.catalog
Backbone broker URLURL ?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 calls setTargetMount).
  • 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-link

Topology indicators

ExecutionStatus reads three host attributes via resolveHostedRuntimeTargetInfo:

AttributeMeaning
data-runtime-rootThe root the page is currently running on
data-authority-rootThe configured authority root (may differ from runtime)
data-platform-rootA platform root the page reaches through (federation)
data-target-source / data-target-kindWhere the catalog target came from
data-requested-root / data-target-unavailable-reasonIf 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 paramWhat it sets
?authorityRoot=NAMEAuthority root
?root=NAMEFlowPad runtime root
?backbone=URLNATS broker URL (federated mode)
?catalog=ROOT/mountCatalog 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.json declares fsPolicy: 'none' — the page never touches the filesystem.

See also

Source: projects/matrix-3/packages/flowpad/src/config/defaults.ts and projects/matrix-3/packages/flowpad/src/components/ExecutionStatus.ts.