Examples and Results
Run one cell, compare its real output, then read what the graph did. The commands below are Pixi tasks from the source checkout; the output blocks are captured verbatim (INFO log lines stripped). Because Retriever is functionally deterministic, these results reproduce run to run.
What you’ll get: a concrete path from a one-Flow function up to visual perception, a rendered graph, and a recorded run you can replay.
Cell 1: The smallest Flow
Section titled “Cell 1: The smallest Flow”Command
Output
What this teaches: a Flow is ordinary Python. IO types are declared with @io, the class is Flow[Input, Output], and your logic lives in step(). _signals lets a Flow tell “field absent” from “field present” — the basis for composing partial inputs.
Cell 2: Step a graph in-process
Section titled “Cell 2: Step a graph in-process”Command
Output
What this teaches: before launching any backend you can advance the whole graph one step at a time with pipe.step(dt=…). This is where you set a breakpoint inside step(), inspect local state, and reproduce a small failing case.
Cell 3: Step perception without a camera
Section titled “Cell 3: Step perception without a camera”Command
Output
What this teaches: the perception graph steps on deterministic mock frames, so the first debugging loop is independent of camera permissions, GUI windows, and backend scheduling.
Cell 4: Run the perception pipeline
Section titled “Cell 4: Run the perception pipeline”Command: deterministic first smoke
Output
Command: live webcam and Rerun/stdout
What this teaches: the visual demo is the same three-Flow graph — camera, detector, display — as the stepper. The mock target gives a stable expected result for docs, tests, and remote machines; the live target runs the identical graph on a real webcam with Rerun when available.
Cell 5: Render the graph before debugging timing
Section titled “Cell 5: Render the graph before debugging timing”Command
Output
What this teaches: open artifacts/tutorial_perception.html to see Flow nodes, ports, clocks, and per-edge sync policies. Inspect the graph before blaming backend scheduling.
Cell 6: Record a run, then replay it
Section titled “Cell 6: Record a run, then replay it”Command: record 10 mock steps
Output
Command: replay the recording
Output
What this teaches: a run becomes a portable artifact (.rrd and .mcap). Replay reproduces the exact trace — watch the red-object confidence decay from 0.95 to 0.66 and then drop out at frame 7 — so you can debug downstream logic without the original sensor timing. This is functional determinism made concrete: the same recorded input yields the same output.
