Projects and digest deploys

V1.5 adds a control plane on top of the Hub. Images still live in the registry. Runtime identity is the digest. A tag is only an alias.

Signed-in sidebar. Administrators see the full Platform group. Developers see Team only in that group (invite + API tokens). Deploy from the CLI still works for developers.

  • Projects — organization / project / environment / service / deployment
  • Artifact graph — one digest, SBOM, scan, signature, every environment that runs it
  • Audit
  • Team — org roles and modpr_pat_… tokens
  • Usage

Local loop

  1. Push a long-running image (nginx, not CMD echo).
  2. Open Projects (administrators) or run modpr deploy. Your personal org matches your username. Default project is default with staging and production.
  3. Create a service with YOUR_USER/your-image:v1. MoDPR resolves the tag to a digest, evaluates policy, and starts labeled replicas on this Docker host.
  4. Open the artifact graph from the digest. Promote staging → production by digest. Rollback re-deploys the old digest.

CLI

modpr login YOUR_USER
modpr org ls
modpr deploy YOUR_USER default staging web YOUR_USER/web:v1
modpr paas ps YOUR_USER default staging
modpr graph sha256:…

Production policy denies the latest tag, requires a digest, SBOM, and a platform signature. Staging is looser. Local SBOM/scan/sign are platform-generated (not Trivy/Syft/Cosign). Kubernetes manifests are stored, not applied on the laptop. BYOC is a record-only stub.

Full operator notes: repository file docs/PAAS.md.