Objectives & prerequisites

What Hello Two Picos teaches and what you need before starting.

Learning objectives

NoteLearning objectives
  • Deploy a small Manifold RuntimeEnvironment onto a local Kubernetes cluster and host two Pico Elements inside it: a producer and a consumer.
  • Declare a single Wrangler-style Channel and an explicit producer→consumer wiring relationship, using the topology YAML fragment shipped with this lab.
  • Watch the producer Pico emit exactly one event onto that Channel and the consumer Pico consume it and react with one Observation.
  • Capture the single Observation the consumer Pico prints as the lab’s runtime evidence, and store it alongside the applied manifests as hello-two-picos/observation.txt.
  • Explain why this counts as a declarative runtime relationship between two Picos, not an ad hoc script demo.

Prerequisites

NotePrerequisites
  • Completion of the Hello Pico on Manifold lab — the single-Pico runtime story this lab builds on directly.
  • Familiarity with the Manifold course vocabulary (RuntimeSubstrate, RuntimeEnvironment, Channel, EventType, Observation, InteractionTopology).
  • A local Kubernetes cluster; see the Kubernetes setup foundation for the canonical minikube install, PATH checks, and first cluster bring-up. helm is 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.1 was used to author this lab (any v1.34+ should work).

  • Bash utilities: grep, cat, mkdir, cp — invoked by the walkthrough and by verify.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 two-picos-lab
    rm -rf build/hello-two-picos work/hello-two-picos

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 for both Picos: busybox:1.36 (chosen for its small footprint and the nc utility the lab uses to send and receive one event over the Channel).
NoteWhy busybox for each Pico

Both Picos in this lab are deliberately implemented as small busybox-based Pods. Each plays the role of a Pico engine hosted by the Manifold RuntimeEnvironment: the producer publishes exactly one event onto the Channel and exits; the consumer subscribes to the Channel, waits for one event, produces one Observation on its own log, and exits. Neither is 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-ins for real Pico engine images without changing the surrounding topology or the producer→consumer wiring.

One-time setup (optional)

The walkthrough uses a dedicated minikube profile named two-picos-lab so it does not interfere with other clusters (for example the manifold-lab profile from the Hello Pico on Manifold lab or the crossplane-lab profile from the Hello Pico on Kubernetes lab). If you prefer to reuse an existing minikube cluster, drop --profile two-picos-lab from every command. If you use a different Kubernetes distribution (kind, k3d, docker-desktop), all kubectl steps below still apply.