Skip to content

What is Director?

Director is a Matrix-native browser webapp. It is the operator's primary lens onto a running Matrix Host: tree view of every actor, detail view of any selected actor, ops feed of recent activity, and a chat tab that prompts any promptable actor through system.agents.

Think: Visual Studio Solution Explorer + property grid + activity log + mini-chat — for actors instead of files.

In substrate vocabulary: Matrix is docker-for-actors / npm-for-actors — a typed pub/sub/RPC fabric where every Feed, Service, and Component is an actor on a federated bus. Director is one vertical built on that fabric — specifically, the operator console for the substrate's "what is currently running" question (the Live discovery surface of the three from THESIS.md Part 3). Director does not replace the substrate; it renders it.

Director is also the dashboard surface inside both Matrix-Edge (the local Device shell) and Matrix-Web (the cloud platform shell). Edge is not a degraded version of a separate dashboard — Edge surfaces the same five registries (Devices, Runtimes, Packages, Mounts, App Routes) that Matrix-Web surfaces, with the auth/identity boundary as the only structural difference (see P1.44).

What Director gives you today

The shipped surface (verified against src/components/):

SurfaceElementWhat it does
Top-level navigationdirector-app (DirectorApp.ts)Switch between Explorer, Workstreams, Ops Feed, Search; track recent targets, pinned targets, saved views, recent commands.
Command bardirector-command-barRun director.* commands by typed input; dispatches director:command-bar.* events.
Actor treedirector-tree (DirectorTree.ts)Renders IDirectorTreeNode[] from DirectorApp's catalog projection; expand/collapse, lazy load children, click selects.
Detail paneldirector-detail (DirectorDetail.ts)Seven always-mounted tabs: Overview, Interface, State, Cognitive, Memory, Children, Sessions, plus the Chat surface host.
Ops feeddirector-ops-feed (DirectorOpsFeed.ts)Tracing/logging records from system.observability.tracing / system.observability.logging.
Workstreams shelldirector-workstreams-shell (DirectorWorkstreamsShell.ts)Reads workstream actors via $introspect and shared workstream ops; lists status, plan progress, error counts.
Search shelldirector-search-shell (DirectorSearchShell.ts)Cross-cuts actor catalog, workstreams, package roots, and ops records.

Every one of those classes extends MatrixActorHtmlElement and follows the Pattern A rule documented in DESIGN.md and the package's .claude/rules/webapp-compliance.md: the page actor (director-app) is the sole data fetcher; child shells project the data and emit director:* CustomEvents upward; downward communication is sendToChild().

What's deliberately left to other tools

  • Runtime lifecycle — start, stop, install, restart: mx-cli (matrix up/down/init/run) and hivecast (hivecast install/start/stop).
  • Cloud pairinghivecast login --device, hivecast connect, hivecast whoami.
  • Free-form conversation with a model — full Chat app at /apps/chat/ (@open-matrix/chat).
  • Container/VM provisioning — Smithers and host.control.
  • Source code editing — Director's "edit source" surface is target state in DESIGN.md §3.4 and is not in code today.

What's target state in DESIGN.md but not yet built

DESIGN.md describes a long horizon. The currently unbuilt items are the easiest to mistake for shipped features. Today (2026-05-05) Director does not ship:

  • A workstream-cockpit replacement of the Explorer (target: §2.2).
  • An operator action surface for prompt-config.set, skills.enable, triggers.upsert, budget.set, charter.set, source-code.update (target: §3.6). Most of these ops have no live implementation on backend actors yet.
  • Cross-host federation views.
  • A formal review/sign-off pane (Smithers integration).

All of those should be read as North Star. The shipped slice is the actor explorer plus the ops feed plus the chat-tab surface plus the workstreams projection.

Who should use Director

  • Developers verifying that an actor mounted, registered the right ops, and is reachable from the browser.
  • Operators answering "what changed" and "what is this actor doing right now".
  • Package authors validating their declared accepts/emits/tracks against runtime introspection.
  • Platform admins poking at system.* actors during incident response — though the canonical incident path is via host-control + journalctl.

See also

Source: projects/matrix-3/packages/director/src/DirectorApp.ts, src/index.ts, DESIGN.md. Component classes in src/components/.