Sync platform docs: Phases C+D complete, Phase E planned #5

Merged
kyle merged 7 commits from docs/platform-evolution-sync into master 2026-03-29 06:21:22 +00:00
Showing only changes of commit 1715a53193 - Show all commits

View File

@@ -183,14 +183,19 @@ delegates authentication to it; no service maintains its own user database.
Services validate tokens by calling back to MCIAS (cached 30s by SHA-256 of
the token).
- **Role-based access.** Three roles — `admin` (full access, policy bypass),
`user` (policy-governed), `guest` (service-dependent restrictions). Admin
detection comes solely from the MCIAS `admin` role; services never promote
users locally.
- **Role-based access.** Three roles — `admin` (MCIAS account management,
policy changes, zone mutations — reserved for human operators), `user`
(policy-governed), `guest` (service-dependent restrictions, rejected by MCP
agent). Admin detection comes solely from the MCIAS `admin` role; services
never promote users locally. Routine operations (deploy, push, DNS updates)
do not require admin.
- **Account types.** Human accounts (interactive users) and system accounts
(service-to-service). Both authenticate the same way; system accounts enable
automated workflows.
(service-to-service). Both produce standard JWTs validated the same way.
System accounts carry no roles — their authorization is handled by each
service's policy engine (Metacrypt policies, MCNS name-scoped access, MCR
default policies). System account tokens are long-lived (365-day default)
and do not require passwords for issuance.
- **Login policy.** Priority-based ACL rules that control who can log into
which services. Rules can target roles, account types, service names, and
@@ -278,7 +283,9 @@ serves the container images that MCP deploys across the platform.
- **Authenticated access.** No anonymous access. MCR uses the OCI token
authentication flow: clients hit `/v2/`, receive a 401 with a token
endpoint, authenticate via MCIAS, and use the returned JWT for subsequent
requests.
requests. The token endpoint accepts both username/password (standard
login) and pre-existing MCIAS JWTs as passwords (personal-access-token
pattern), enabling non-interactive push/pull for system accounts and CI.
- **Policy-controlled push/pull.** Fine-grained ACL rules govern who can push
to or pull from which repositories. Integrated with MCIAS roles.
@@ -290,7 +297,7 @@ serves the container images that MCP deploys across the platform.
is scheduled, MCP tells the node's agent which image to pull and where to get
it. MCR sits behind an MC-Proxy instance for TLS routing.
**Status:** Implemented. v1.2.0. All implementation phases complete.
**Status:** Implemented. v1.2.1. All implementation phases complete.
---
@@ -371,9 +378,13 @@ into DNS records.
using internal DNS names automatically resolve to the right place without
config changes.
- **Record management API.** Authenticated via MCIAS. MCP is the primary
consumer for dynamic updates. Operators can also manage records directly
for static entries (node addresses, aliases).
- **Record management API.** Authenticated via MCIAS with name-scoped
authorization. Admin can manage all records and zones. The `mcp-agent`
system account can create and delete any record. Other system accounts
can only manage records matching their own name (e.g., system account
`mcq` can manage `mcq.svc.mcp.metacircular.net` but not other records).
Human users have read-only access to records. Zone mutations (create,
update, delete zones) remain admin-only.
**How it fits in:** MCNS answers "what is the address of X?" MCP answers "where
is service α running?" and pushes the answer to MCNS. This separation means
@@ -381,10 +392,11 @@ services can use stable DNS names in their configs (e.g.,
`mcias.svc.mcp.metacircular.net` in `[mcias] server_url`) that survive
migration without config changes.
**Status:** Implemented. v1.1.0. Custom Go DNS server deployed on rift,
**Status:** Implemented. v1.1.1. Custom Go DNS server deployed on rift,
serving two authoritative zones (`svc.mcp.metacircular.net` and
`mcp.metacircular.net`) plus upstream forwarding. REST + gRPC APIs with
MCIAS auth. Records stored in SQLite.
MCIAS auth and name-scoped system account authorization. Records stored
in SQLite.
---
@@ -435,9 +447,17 @@ each managed node.
- **Master/agent architecture.** MCP Master runs on the operator's machine.
Agents run on every managed node, receiving C2 (command and control) from
Master, reporting node status, and managing local workloads. The C2 channel
is authenticated via MCIAS. The master does not need to be always-on —
agents keep running their workloads independently; the master is needed only
to issue new commands.
is authenticated via MCIAS — any authenticated non-guest user or system
account is accepted (admin role is not required for deploy operations).
The master does not need to be always-on — agents keep running their
workloads independently; the master is needed only to issue new commands.
- **System account automation.** The agent uses an `mcp-agent` system account
for all service-to-service communication: TLS cert provisioning (Metacrypt),
DNS record management (MCNS), and container image pulls (MCR). Each service
authorizes the agent through its own policy engine. Per-service system
accounts (e.g., `mcq`) can be created for scoped self-management — a service
account can only manage its own DNS records, not other services'.
- **Node management.** Track which nodes are in the platform, their health,
available resources, and running workloads.
@@ -458,7 +478,7 @@ services it depends on.
can deploy them. The systemd unit files exist as a fallback and for bootstrap —
the long-term deployment model is MCP-managed containers.
**Status:** Implemented. v0.4.0. Deployed on rift managing all platform
**Status:** Implemented. v0.7.2. Deployed on rift managing all platform
containers. Route declarations with automatic port allocation (`$PORT` /
`$PORT_<NAME>` env vars passed to containers). MC-Proxy route registration
during deploy and stop. Automated TLS cert provisioning for L7 routes via