Entry pointslocal processes
cli.pyui/channels/watchdog.pyreview_page.py
Read flows and project packs, send commands through the Temporal client, read events and workspaces.
call
L4 flow enginereplaceable
engines/temporal/
The only place that imports temporalio. FlowWorkflow calls RunState.plan() over and over; activities only forward. ScheduledLaunch starts scheduled runs.
call
L3 core libraryengine-independent
runner/→storage/→core/
  • core: schema, scheduling, expressions, prompts, manifests, events; by convention no IO
  • storage: the volume's directories and files, the event log
  • runner: step → profile + harness → openshell calls; host actions
  • Domain modules beside them (project, knowledge, evals, takeaways, trail, runs, localrepo, flowfile) depend only on core and are outside the layer contract
openshell CLI · docker CLI
L2 OpenShellisolation and credentials
gatewaysupervisor
  • gateway: credentials, policies, sandbox lifecycle
  • supervisor: trusted container outside the sandbox; enforces policy, injects credentials
L1 Dockercompute and storage
two containers per sandboxhelper containersvolume myorch-artifacts
Sandbox containers, helper containers that read and write the volume, the workspaces of all runs.
uv run lint-imports checks two rules: engines → runner → storage → core may only depend downward; core, storage and runner may not import temporalio.