home
The front door at <d>: an overview of everything the current team has, the activity feed, global
search, and instance administration. Binary: homed. Stage 2.
Overview (every user)
- Dashboard for the selected team: projects with their resources across services (sites, apps,
databases, monitors with state, open error issues, AI usage this month), recent activity, things that
need attention (failing monitors, expiring certificates, quota near limit, failed deploys, updates).
- Project page: one project across services: environments, and per environment the pages alias,
app, database, secret set, monitors, error project, analytics site, with links into each service.
- Activity: the instance feed from
notify, filtered by team, project, service, actor.
- Search (⌘K): fans out to every service's
/api/v1/search, groups results by service.
- Services: tiles linking to every installed service's panel, with its status.
Instance admin (superusers)
- Services: installed services, versions, health; install, update, remove, restart (through
xvii-node on the control plane, ADR 0010).
- Updates: release channel, available versions with changelogs, auto-update window.
- Domain and TLS: base domain, content domain, DNS provider token, TLS mode, ACME e-mail; a DNS
checklist with live verification.
- E-mail delivery: SMTP relay or the local
mail service, used by id and notify.
- Nodes summary (managed in
apps), Backups summary (managed in backups).
- Setup wizard: the first run after
xvii server install walks through the first superuser's passkey,
the first team, DNS checks and which services to enable.
Also served here
/install.sh (CLI installer), /releases/… (the release index the CLI and xvii-node read),
/.well-known/xvii (instance metadata for xvii context add <d>).
Stage 2 implementation
The panel follows pages: numbers on top, full-width tables, little prose.
- Services (
/): every installed service with state and version; superusers also see the newest
release with an update button (with confirmation) and open a service's sheet: overview, settings
(the manifest's declared settings as a form, secrets write-only, plus free KEY=value pairs; saving
restarts the service), logs, restart, stop/start and remove (data, database and settings stay).
Core services (id, home) can't be stopped or removed.
- Projects: the user's projects with a team filter; each opens in id, where it is managed.
- Activity: the latest events from id; the full log links to id.
- Instance (superusers): domain, versions, release store, the CLI, every service's releases, and the
service switcher: the order, names, icons and visibility of installed services plus extra links
(docs sites). Every panel reads the list from the public
GET /api/v1/catalog (CORS open) through
@xvii/catalog.
/install.sh and the public release store under /releases/; POST /api/v1/admin/releases?version=
takes a release tar.gz.
Data
Instance settings, the service catalog and versions, dashboard layout per user. Everything else is read
from the services' APIs.
MCP
POST https://<domain>/mcp is one MCP server (HTTP, JSON answers) with the tools of every installed
service: home lists them from each service's /mcp and forwards calls with the caller's bearer token.
claude mcp add --transport http xvii https://<domain>/mcp --header "Authorization: Bearer $XVII_TOKEN";
xvii mcp does the same over stdio with the CLI's sign-in.
Look
Superusers set the instance's look under Instance → Look: a name (shown instead of the domain under
every panel's name), an accent colour (the theme's primary everywhere), a logo (PNG, JPEG, WebP, GIF
or SVG up to 256 KB, served at /api/v1/brand/logo, sandboxed), a background image (same types up to
2 MB at /api/v1/brand/background, with an optional 0–60 px blur) and panel colours (a fixed list of
theme variables, each #rrggbb). It travels with /api/v1/catalog, which
every panel reads already (@xvii/brand, applied by useCatalog and kept in localStorage); id's
sign-in card shows the logo and name, and notify's e-mails come in it. Journal: brand.updated,
brand.logo, brand.background.
The release store keeps each service's five newest versions (and whichever is installed or wanted);
older ones go after every upload and at start. The CLI's stay.