Appearance
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/):
| Surface | Element | What it does |
|---|---|---|
| Top-level navigation | director-app (DirectorApp.ts) | Switch between Explorer, Workstreams, Ops Feed, Search; track recent targets, pinned targets, saved views, recent commands. |
| Command bar | director-command-bar | Run director.* commands by typed input; dispatches director:command-bar.* events. |
| Actor tree | director-tree (DirectorTree.ts) | Renders IDirectorTreeNode[] from DirectorApp's catalog projection; expand/collapse, lazy load children, click selects. |
| Detail panel | director-detail (DirectorDetail.ts) | Seven always-mounted tabs: Overview, Interface, State, Cognitive, Memory, Children, Sessions, plus the Chat surface host. |
| Ops feed | director-ops-feed (DirectorOpsFeed.ts) | Tracing/logging records from system.observability.tracing / system.observability.logging. |
| Workstreams shell | director-workstreams-shell (DirectorWorkstreamsShell.ts) | Reads workstream actors via $introspect and shared workstream ops; lists status, plan progress, error counts. |
| Search shell | director-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) andhivecast(hivecast install/start/stop). - Cloud pairing —
hivecast 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/tracksagainst 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 insrc/components/.