Objectives & prerequisites
Learning objectives
- Deploy a small Manifold RuntimeEnvironment onto a local Kubernetes cluster.
- Host a Pico engine Pod inside that RuntimeEnvironment as the in-process host for one Pico Element.
- Declare a single Wrangler Channel and subscription that wires one event into the hosted Pico, using the topology YAML fragment shipped with this lab.
- Send exactly one event onto that Channel with a small Control Surface command (a
kubectl execinvokingwgetinside the cluster). - Capture the single log line the Pico prints in response as the lab’s runtime Observation, and store it alongside the applied manifests as
hello-world-pico-on-manifold/observation.txt.
Prerequisites
- Completion of the Hello Pico lab — the greeting value in this lab reuses the same
Hello, Pico!string. - Familiarity with the Manifold course vocabulary (RuntimeSubstrate, RuntimeEnvironment, Channel, EventType, Observation).
- A local Kubernetes cluster; see the Kubernetes setup foundation for the canonical minikube install, PATH checks, and first cluster bring-up.
helmis not required for this lab.
Environment
The canonical local Kubernetes setup — supported OS, install commands for docker, minikube, and kubectl, PATH checks, and a first cluster bring-up — lives in the Kubernetes course setup foundation. Complete that page first so docker, minikube, and kubectl resolve on your PATH.
Lab-specific additions on top of that canonical setup:
Reference minikube pin:
v1.38.1was used to author this lab (anyv1.34+should work).Bash utilities:
grep,cat,mkdir,cp— invoked by the walkthrough and byverify.sh.Estimated time: 45–60 minutes (of which the cluster start accounts for roughly 2–5 minutes).
Cleanup step (also repeated at the end of the walkthrough):
minikube delete --profile manifold-lab rm -rf build/hello-world-pico-on-manifold work/hello-pico-on-manifold
Pinned versions (reference)
The walkthrough was authored and verified against these versions. Newer versions are expected to work; older Kubernetes versions may lack API resources used by the shipped manifests.
- Kubernetes API version in minikube: v1.31.0
- Container image used as the Pico engine stand-in:
busybox:1.36(chosen for its small footprint and thenc/wgetutilities the lab uses to send and receive one event over the Channel).
The Pico engine in this lab is deliberately implemented as a small busybox-based Pod running a single-shot listener. It plays the role of a Pico engine hosted by a Manifold RuntimeEnvironment: it consumes one event from a Channel and produces one Observation back onto its own log. It is not a full Pico engine implementation; Phase 7 of the constructive-realization contract explicitly says no new runtime implementation is introduced here. Later curriculum waves may swap the stand-in for a real Pico engine image without changing the surrounding topology.
One-time setup (optional)
The walkthrough uses a dedicated minikube profile named manifold-lab so it does not interfere with other clusters (for example the crossplane-lab profile from the Hello Pico on Kubernetes lab). If you prefer to reuse an existing minikube cluster, drop --profile manifold-lab from every command. If you use a different Kubernetes distribution (kind, k3d, docker-desktop), all kubectl steps below still apply.