Hello Two Picos

Host two Picos on Manifold, wire one Wrangler Channel, watch one Pico emit an event that the other Pico consumes and reacts to.

See the Open Engineering Language Server (OELS) onboarding guide for the local install and editor setup.

TipOELS in your editor

While you work through this content, keep the Open Engineering Language Server (OELS) active in VS Code (or any LSP-capable editor). See the OELS onboarding guide linked at the top of this page (also linked from the academy Resources page) for the one-time install and configuration steps.

What OELS validates. OELS only recognizes OE-shaped YAML/JSON: files with a mapping root that declare an apiVersion beginning with open-engineering.io/, a non-empty kind, and a DNS-1123 metadata.name. Ordinary academy metadata.yaml, Quarto/QMD pages and front matter, Kubernetes/Crossplane/runtime manifests, JSON payload samples, and shell scripts are intentionally non-OE — OELS ignores them silently and you should not add synthetic apiVersion/kind headers to force recognition.

Where you see diagnostics. OELS surfaces UnknownProperty, MissingRequiredProperty, IncorrectType, InvalidEnumValue, MalformedIdentifier, UnknownDefinition, and reference-shape hints in the editor Problems panel as you type. These are independent of quarto render: OELS diagnostics do not block rendering, and Quarto errors do not appear in the Problems panel.

The executable check still comes from this exercise. OELS speeds up editing, but the exercise’s own parser, verifier, or verify.sh (for example the pico parse … command shown below) remains the authoritative success check. Run it as usual.

Overview

Hello Two Picos is the first multi-Pico runtime lab of the Open Engineering Academy. You will deploy a small Manifold RuntimeEnvironment onto a local minikube cluster, host two named Pico Elements inside it (a producer and a consumer), declare one Wrangler-style Channel that wires them together, and observe the consumer react to one event emitted by the producer.

This lab is deliberately architecture-first: two Picos, one Channel, one wiring relationship, one emitted event, one observed reaction. It is the smallest honest “system” milestone beyond the single-Pico Hello Pico on Manifold lab — where that lab shows a hosted Pico responding to an external event, this lab shows two hosted Picos interacting through a Wrangler-declared Channel.

The lab is reusable across courses: it lives at the repository root under labs/hello-two-picos/ and is referenced from the Manifold course.

ImportantScope

This lab covers two Picos hosted on one Manifold RuntimeEnvironment, wired through one Wrangler Channel, with one producer→consumer wiring relationship, one emitted event, and one observed reaction. Broader multi-Pico topologies, fleet orchestration, Home Assistant, a Python CLI as the main teaching surface, and non-Kubernetes runtimes are explicitly out of scope. The Kubernetes substrate is kept fixed at local minikube throughout.

Structure

What you will produce

A single artifact directory named hello-two-picos — matching the produces entry in the lab metadata.yaml. The directory contains:

  • the exact Kubernetes manifests applied to the cluster (Namespace, consumer Pico Pod, greeting Service, topology ConfigMap, producer Pico Pod),
  • the Wrangler-style topology fragment that names the single Channel, the two Picos, and the producer→consumer wiring, and
  • the captured runtime Observation — observation.txt, the single log line printed by the consumer Pico in reaction to the event emitted by the producer Pico.

Downloads and screenshots

Starter files live under downloads/: the Kubernetes manifests, the Wrangler topology.yaml fragment, and verify.sh — the automatable verification script the walkthrough runs in the final step. Screenshots referenced from the walkthrough live under screenshots/. Both directories are kept even when empty so authors have a consistent place to add assets.

Metadata

Machine-readable descriptor: metadata.yaml. Fields follow the schema documented in the source repository under templates/README.qmd, including the Phase 7 fields runtime_substrate, runs_on, interaction_topology, and control_surfaces.

Constructive realization

This lab is the Realization of a small two-Pico interaction Definition consistent with the Phase 7 vocabulary taught by the Manifold course. The role mapping is:

  • Definition (course-adjacent): two Pico Elements run on a Manifold RuntimeEnvironment; one Pico publishes an event onto a Wrangler-declared Channel that the other Pico is subscribed to; the subscribed Pico produces one Observation in response.
  • Realization (this lab): a Kubernetes-hosted Manifold Namespace hosts two Pods (hello-producer-pico and hello-consumer-pico); a Service provides the greeting Channel; a ConfigMap carries the Wrangler topology (including the explicit producer→consumer wiring relationship); a verify.sh command asserts the single-event / single-reaction contract holds.
  • Element: hello-two-picos — the captured manifests, topology, and observation.

Referenced from