Appearance
Local apps
The app launcher is Edge's most-used surface. It lists installed webapps with click-through links to launch them.
Two views
Overview
The default landing (#overview) shows the launcher inline as part of the dashboard. Source: main.ts:389-419.
Each row carries icon, display name, description / package, route, runtime label, and an Open link. An expandable "Route plan" panel below each row shows the full route plan.
Catalog
The catalog (#catalog) shows tile cards for apps declaring shells: ["edge"] (or omitting shells, which means all). Source: main.ts:421-475.
Per-tile: icon, display name, description, route, package, shell tags, Open link.
How URLs are computed
Source: edge-model.ts:176-181 (appUrl).
ts
appUrl(entry, routeKey) =>
routeKey ? productAppPath(entry.appName, routeKey) : entry.url || `/apps/${entry.appName}/`- If a
routeKeyis present (Device is paired), the URL is/<routeKey>/<appName>/— the public Space-path route. - Otherwise, the URL is the entry's declared
urlor the default/apps/<appName>/current-host route.
The choice between linked-Space URL and current-host URL is the route provenance decision. Per P1.22e, this must be visible — Edge surfaces it via the route plan.
Default app set
A standard install ships the following webapps (per STANDARD_APP_ROUTES in edge-model.ts:111-116):
- Director
- Chat
- FlowPad
- Smithers
Plus the implicit Edge itself, the platform web, and inference-settings. Edge filters out appName === 'web' from the launcher (the platform shell does not appear in the local launcher).
The "primary action"
Source: main.ts:357-387 (renderPrimaryActions).
The action panel shows two buttons:
- Open
<first-app>— picks the first app in the launcher (sorted bynavOrderthen by standard-app order). - Connect to HiveCast or Manage devices — depending on link state.
This is the recommended next click on a fresh install: open Director (or whichever app comes first) and start using Matrix.
Route plan diagnostics
Per P1.22d (DONE), each app row's route-plan panel shows:
- URL.
appName.- Route prefix (e.g.,
/apps/director/). - Gateway (always
system.gateway.http). - Scope (
/<routeKey>/linked,localotherwise). - Route kind (e.g.,
gateway-resolved-app). - Runtime id.
- Package.
- Asset source (e.g.,
system.runtimes.<runtime-id>.http).
If asset source is missing, a warning shows: "/api/apps did not report an assetMount or origin for this route."
Filtering by shell
The catalog page filters to entries that declare shells: ["edge"] or have no shell restriction. From main.ts:477-479:
ts
appShells(entry) =>
Array.isArray(entry.shells) && entry.shells.length > 0 ? entry.shells : ['platform', 'edge']A package declaring only shells: ["platform"] is filtered OUT of the Edge catalog. This is how matrix-web (the platform shell) does not show up in Edge.
What an "app" is, technically
An "app" in Edge's launcher is anything declaring webapp metadata in its matrix.json and currently registered as a runtime with webapp data in system.runtimes. The chain:
- Package's
matrix.jsondeclareswebapp.{appName, routePrefix, displayName, shells}. - Package is loaded as a runtime with
--serve. - Runtime registers with
system.runtimescarrying itswebappmetadata. - Gateway aggregates
webappmetadata from all runtimes, exposes as/api/apps. - Edge fetches
/api/apps. - Edge renders.
A package that has matrix.json webapp but no running runtime (or wasn't loaded with --serve) is invisible to the launcher.
Empty launcher
If /api/apps returns successfully but with an empty apps[] array, Edge renders:
No installed web apps reported /api/apps returned successfully, but the app list was empty.
If /api/apps returns 404 or 5xx:
App inventory unavailable
HTTP <status> in <ms>ms. The launcher will not invent shortcuts when /api/apps is missing.
Edge does not invent placeholder rows. Per P1.22b/P1.22e (no silent substitution), the launcher only shows what the gateway reports.
Linked-Space URLs
When the Device is paired, app URLs are linked-Space form:
https://hivecast.ai/alt.stories.ghost-stories.funny/director/
https://hivecast.ai/alt.stories.ghost-stories.funny/chat/These work over the cloud's gateway. The user sees their own apps via the public route, served by the runtime on their own Device through the federated bus.
Target state
- Per-app live health pill — request/reply against the runtime's control mount.
- In-launcher quick action — restart, reload, view logs.
- Custom app order — user-configurable.
See also
- Installed packages — package source.
- Runtime status — runtime card.
- Device pairing status — link state.
- Reference: Local routes.
Source:
projects/matrix-3/packages/matrix-edge/src/main.ts:389-535.edge-model.ts:160-190forinstalledApps.