Install
The retriever command lives in the retriever-core package. There are two ways to get it:
- Package install —
pip install retriever-core. This is all you need for the runtime API and theretrieverCLI. - Source checkout — clone the repo for the bundled demos, graph renderers, Rerun visualization, and tests.
On the source path you do not run pip install yourself: Retriever uses Pixi as its package and environment manager, and the checkout installs retriever-core (editable) into a Pixi environment for you. The retriever command wraps Pixi, so you rarely call pixi directly.
What you’ll get from the source path: a Python 3.11 environment with retriever-core installed editable, plus a working first demo you can run in under a minute — no camera, no GUI, no robot hardware.
1. Package install
Section titled “1. Package install”The public package target is retriever-core; the import package and executable command are both retriever:
After package install, create a tiny reproducible starter workspace:
retriever init creates a minimal Pixi workspace and a main.py that imports the runtime. Use this path for new projects that do not need the repository demos.
2. Source checkout for demos
Section titled “2. Source checkout for demos”./scripts/retriever install installs the source checkout environment. It can bootstrap Pixi first, then runs the checkout install.
3. Run the first demo
Section titled “3. Run the first demo”This is the deterministic first smoke: synthetic camera frames, stdout output, no camera permission, no GUI, no backend to configure. Stripped of INFO log lines, it prints:
A camera Flow emitted a frame, a color detector sampled it, and a display Flow printed the detections. The graph ran to a fixed duration and stopped. If you see this, the runtime works.
The runtime API
Section titled “The runtime API”The distribution name is retriever-core; the import package is retriever:
A Flow is a stateful stream function. You declare typed IO with @io, subclass Flow, and override step():
You compose Flows into a Pipeline, giving each edge an explicit sync= policy, then debug in-process before deploying async:
The same timestamped input trace yields the same output trace regardless of backend scheduling. That functional determinism is what makes local stepping, record, and replay well-defined.
Runtime-only package (target track)
Section titled “Runtime-only package (target track)”Users who only need the API — not the repository demos, graph renderer, or tutorial assets — install the runtime package directly:
The source checkout remains the path for repository demos, docs-tutorial-* graph renderers, Rerun examples, and tests.
First-command reference
Section titled “First-command reference”| Situation | Command |
|---|---|
| Reliable first smoke, no camera, no GUI | ./scripts/retriever run webcam-mock |
| Live webcam with automatic Rerun/stdout fallback | ./scripts/retriever run webcam |
| Understand the smallest Flow first | ./scripts/retriever run basic-flow |
| Render an interactive HTML graph | ./scripts/retriever run graph |
Record a run, then ./scripts/retriever run replay it |
./scripts/retriever run record then ./scripts/retriever run replay |
demo-webcam-detection needs a real webcam and uses --visualize auto (Rerun when available, stdout otherwise). If you have no camera or a permission prompt blocks it, stay on -mock.
Retriever command surface
Section titled “Retriever command surface”retriever is the package executable. In a fresh source checkout, use the bundled
launcher before the editable package is installed:
Use retriever tasks or ./scripts/retriever tasks to see curated run targets.
Raw repository task names still work through retriever run <task> when you need
an exact source-checkout entrypoint. Curated names are the public path; raw task
names are an escape hatch for repository contributors.
Hub commands do not require a source checkout. They operate on Hub refs and use the same loader as hub.use(...):
Use retriever --dry-run hub inspect <ref> when you want to validate the ref shape without fetching anything. Use --refresh when you intentionally want to bypass an existing cache entry.
If something fails
Section titled “If something fails”| Symptom | Try first | Why |
|---|---|---|
| Camera permission or hardware fails | ./scripts/retriever run webcam-mock |
Proves the runtime graph with no local devices. |
| Rerun viewer does not open | ./scripts/retriever run perception-stepper |
Separates viewer setup from runtime correctness. |
| A graph behaves unexpectedly | ./scripts/retriever run graph |
Inspect nodes, ports, clocks, and sync policies first. |
| A result is hard to reproduce | ./scripts/retriever run record then ./scripts/retriever run replay |
Turns timing-sensitive input into a stable artifact. |
Next steps
Section titled “Next steps”- Visual Quickstart — see the first run, then switch to live webcam and Rerun.
- Examples and Results — compare real command output before reading source.
- Debug and Visualize — render the graph, step locally, record, and replay.
