stacklok / stacklok/mecatl

Package and verify the microVM runtime supply chain

Open
#528 0 comments 0 reactions 1 assignee View on GitHub

@JAORMX is already working on this.

Since Aug 14, 2026.

enhancement
Dominant language
Go
Stars
152
Forks
16
Avg merge
14h 48m
Merged PRs (30d)
536

Description

Parent: #526

Outcome

Mecatl consumes verified go-microvm runtime and firmware artifacts without adding go-microvm/libkrun to the standard engine/root dependency graph.

Scope

  • Create environment/microvm/ as a nested Go module containing mecatl-microvmd, the guest agent, platform wiring, and a thin client surface usable by root composition.
  • Reuse go-microvm v0.0.39's existing Linux amd64/arm64 and Darwin arm64 release/OCI artifacts pinned to libkrun v1.19.4 and libkrunfw v5.5.0.
  • Add signing and provenance/attestation to the upstream go-microvm runtime and firmware artifacts rather than rebuilding them independently in mecatl.
  • Resolve every runtime, firmware, and execution-image reference to an immutable digest.
  • Verify operator-approved signer identities and required attestation predicates before cache admission or VM creation.
  • Keep cache writes atomic and safe under concurrent VM starts.
  • Record verified runtime/firmware/image digests and policy revision in environment metadata.
  • Produce SBOM/notices and reuse go-microvm's existing separate firmware packaging.

Acceptance

  • Default mecatl builds and the engine module do not compile or link go-microvm/libkrun.
  • Wrong digest, unsigned artifact, wrong signer, missing/wrong attestation, corrupted cache, or stale verification policy fails closed before VM creation.
  • Successful verification is reproducible offline from the recorded digest/evidence after cache warmup.
  • Concurrent pulls cannot expose partially verified artifacts.
  • Linux and macOS artifact extraction never trusts archive traversal or symlink escapes.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.