Wasteology platform · the “Hands”

How ops orchestrates everything

One Python (Typer/Rich) CLI unifies ~19 project repos and every native CLI / cloud tool behind a single, scriptable surface. Humans, Claude agents, and the autonomous Tirion agent all drive the same commands — and everything emits --json so machines consume it deterministically.

🧠 Brain · tirion ✋ Hands · ops (this) 👁 Eyes · wdp-palantiri 🖥 Interface · orchestrator shared bus: PostgreSQL wg_digests

The orchestration stack — hover a command group to see what it touches

Consumers → drive the same commands
👤 Human · terminal 🤖 Claude agent · slash / Bash 🧠 Tirion · OpsClient → ops … --json
ops — Typer/Rich CLI · entry cli.main:app · 25 command groups
Logic returns @dataclass objects (56) with to_dict() (42); rendering is separate — every command has a --json path.
resolves repos via registry · shells the native tool inside each repo (cwd + .env)
How it reaches many repos
ProjectRegistry ← manifests/builtin/*.toml per-project status adapters (14) prefect_project.run_in_repo(cwd + repo .env)
Native CLIs / SDKs it wraps
External systems

Command groups — click a card to expand

+ utility groups: demo · game · tech-stack

Repos it orchestrates — 14 owned + 5 support, each with a status adapter

Add a project = drop a .toml in manifests/builtin/ — no code change needed.

External systems

Try it — a simulated ops session (canned output, not live)

ops — zsh