Appearance
Packages
Director groups system actors into three explicit package families and renders a status row for each. The package surface is not a separate top-level pane; it appears as a strip in the Explorer Shell and as ranked entries in Search results. Detection is driven by DirectorServiceTargets.ts and DirectorRuntimeAdapter.loadPackageStatuses.
The three package families
DIRECTOR_PACKAGE_DEFS (src/services/DirectorServiceTargets.ts):
ts
[
{ id: 'agents', root: 'system.agents', label: 'Agents' },
{ id: 'observability', root: 'system.observability', label: 'Observability' },
{ id: 'sqlite', root: 'system.sqlite', label: 'Sqlite' },
]Each family has a canonical root and a list of canonical children. The tree's "package" badge (yellow dot) lights up for nodes whose mount matches one of these via packageRootForMount().
Compat detection
The cognition family ships canonical and legacy mount aliases:
| Canonical | Compat alias |
|---|---|
system.agents.memory | system.memory |
system.agents.embeddings | system.embeddings |
system.observability.logging | system.logging |
system.observability.tracing | system.tracing |
system.observability.health | system.health |
system.observability.metrics | system.metrics |
canonicalActorForMount() answers "what's the canonical mount for this address". isCompatPackageMount() returns true if the value is the compat alias and a canonical exists. The tree adds a compat badge in that case.
packageChildTargets() returns the canonical children for a given package mount excluding the current canonical, so when you're on the package root it shows you the canonical children to navigate to.
Status row contents
IDirectorPackageStatus (src/types.ts) is the per-family status:
ts
{
id: 'agents' | 'observability' | 'sqlite',
mount: string, // resolved actor mount serving the package root
openMount: string, // mount to open when "Open" is clicked
mode: 'package-root' | 'compat' | 'missing',
ok: boolean,
detail: string, // human-readable summary
version?: string,
childCount?: number | null,
countLabel?: string, // "5 sessions", "12 events", etc.
storageReady?: boolean | null,
}DirectorRuntimeAdapter._loadPackageStatus() first probes the canonical root (system.agents, etc.), then falls back to compat probes (_loadCompatObservabilityStatus, _loadCompatAgentsStatus). Mode is set according to which path resolved:
package-root— the canonical root mount responded.compat— only the legacy alias responded.missing— neither path responded; the package is not running.
countLabel is derived from family-specific ops: _derivePackageCountLabel queries agents.list, traces.recent, etc., depending on family.
Why system.bindings exists
Bindings is the legacy/v14 provider-route compatibility table (CLAUDE.md Architecture section). For Docker/NPM parity, the authoritative tables are system.runtimes (physical inventory) and system.registry (logical claims). system.bindings is queried by Director for namespace tree views (bindings.children, bindings.roots, bindings.tree) but operators should treat it as a derived view, not the source of truth.
Operator interpretation
If a package shows mode: 'compat' for any length of time, the deployment is mounting legacy aliases instead of the canonical roots. That is a configuration drift; canonical roots are the go-forward path. The Director UI surfaces this honestly so operators can spot it.
If a package shows mode: 'missing', the related runtime is not registered with system.runtimes, or registration was rejected. Check hivecast runtimes and the runtime's log under <host-home>/logs/runtimes/.
See also
Source:
projects/matrix-3/packages/director/src/services/DirectorServiceTargets.ts(definitions),DirectorRuntimeAdapter.ts:200-208, 1978-2206(status loaders).