Architecture and ownership
These explanations build a maintainer’s mental model of the current OpenHCS-owned architecture: where declarations live, how compilation lowers them, and which runtime boundary consumes each result. Generic behaviour provided by a first-party dependency is explained by that package; OpenHCS pages discuss only the integration boundary and cross-package invariants.
For exact supported imports and call signatures, use Public API orientation.
Start with Architecture quick start. It routes desktop, Python, CellProfiler, and MCP users into the same declaration-to-runtime model. Continue with System overview for the expanded system path.
Architecture front door
Declaration and compilation
Runtime
Interop and application boundaries
- CellProfiler interoperability
- Extracted-package ownership
- Streaming boundary and viewer integration
- External integrations
- Microscope handler integration
- Code/UI Interconversion System
- Serialization boundaries
- Plate Manager services
- Plate Manager batch workflow
- ZMQ Server Browser System
- MCP distribution architecture
Specialized subsystems
Documentation status
Older pages that describe a fixed five-phase compiler, string-keyed step plans, generated CellProfiler semantic sidecars, OpenHCS-owned generic configuration or UI internals, or the deprecated TUI are intentionally absent from this navigation. Their durable content has been moved to the owning package or replaced by a transition page. The hidden entries below preserve those inbound URLs without presenting historical migration material as current authority.
Architecture invariants
Public pipeline declarations are
PipelineConfigpluslist[FunctionStep].ObjectState resolves declaration configuration once before compiler stages consume it.
CompilationSessionand typedCompiledStepPlanfields are compiler authorities; string-keyed semantic dictionaries are not.Callable, module, artifact, source, measurement, and strategy declarations own their respective semantics.
Generic consumers query nominal registries or shared strategy mixins and do not import concrete backends to discover names or behavior.
variable_components,group_by, andProcessingContractare independent declarations with different meanings.Runtime workers consume a
CompiledExecutionBundleand validated typed runtime values; they do not reconstruct semantic contracts from sidecars.