servers section (see Manifest Schema). Server code is never included in the facet archive — servers are linked, not embedded.
Two Execution Modes
| Property | Source-mode | Ref-mode |
|---|---|---|
| Where it lives | Facets registry | External OCI registry |
| Versioning | Semver in the facets registry | OCI tags and digests (no semver, no floor constraint) |
| Facet manifest ref | server-name: "1.0.0" | server-name: { image: "registry/image:tag" } |
| Resolution | Registry resolves latest at or above floor | CLI resolves tag to digest at install time |
| Integrity | Content hash + API surface hash | OCI digest + API surface hash |
| Published artifact | Source code archive in facets registry | OCI image in external registry |
| Upgrade mechanism | facet upgrade resolves newer above floor | facet upgrade re-resolves tag, checks for new digest |
Source-Mode Servers
Source-mode servers are artifacts published to the facets registry. They have semver versions, content hashes, and API surface hashes.Server Manifest
Each source-mode server has a manifest:| Field | Required | Type | Description |
|---|---|---|---|
name | Yes | string | Server name. MUST be unique in the registry’s server namespace. |
version | Yes | string | Semver version string. |
description | No | string | Human-readable description. |
author | No | string | Author name or identifier. |
runtime | Yes | string | Managed runtime identifier. Day-one supported: "bun". |
entry | Yes | string | Entry point file path, relative to the artifact root. |
type field — if it is published to the facets registry as a server artifact, it is source-mode by definition.
Publish Flow
- The server author runs a publish command from the server source directory.
- The CLI reads and validates the server manifest.
- The CLI packages the source code into an archive (tar) containing the manifest and all source files.
- The CLI uploads the archive to the registry.
- The registry MUST compute the content hash (see Integrity Model).
- The registry MUST compute the API surface hash — by starting the server temporarily using the declared runtime and entry point, querying its MCP tool declarations, and hashing them.
- The registry stores the artifact, content hash, and API surface hash.
Ref-Mode Servers
Ref-mode servers are NOT in the facets registry. They are OCI container images hosted in external OCI registries (GHCR, Docker Hub, ECR, etc.).No Registry Artifact
Ref-mode servers have no manifest in the facets registry. They are declared directly in a facet’sservers section:
: for tags, @ for digests. The CLI resolves tags to digests at install time and pins the digest in the lockfile (see Integrity Model).
There is no facets-registry artifact for ref-mode servers. There is no semver version in the facets registry. There is no floor constraint. The facet author specifies the image reference, and the CLI pins it.
Execution Contract
The CLI guarantees the following when running an MCP server:Source-Mode Execution
- The CLI downloads the server artifact from the facets registry.
- The CLI starts the server using the declared managed runtime (
bunon day one) with the declared entry point. - The server communicates via MCP over stdio.
- The CLI manages the server process lifecycle — start, stop, restart.
Ref-Mode Execution
- The CLI pulls the container image by the pinned digest (from the lockfile).
- The CLI starts the container using a container runtime (Docker/Podman).
- The server communicates via MCP over stdio (container stdin/stdout) or HTTP (mapped port).
- The CLI manages the container lifecycle.
CLI Guarantees
The CLI MUST guarantee:- The server is started with the correct runtime or image.
- The server process or container is stopped when the AI assistant session ends.
- No arbitrary command or argument execution — the CLI controls exactly what executes.
- The server’s MCP tools are exposed to the AI assistant through the platform’s MCP integration.
- Network access for the server (server-specific concern).
- File system access beyond what the runtime or container provides.
- Inter-server communication (servers are terminal — they MUST NOT depend on other servers).
Runtime Enumeration
Each supported source-mode runtime is an explicit security surface commitment. Adding a new runtime requires:- Audit of the runtime’s security model
- Implementation of the runtime adapter in the CLI
- Ongoing maintenance of the runtime integration
bun (TypeScript/JavaScript). Additional runtimes require future specification additions.