Components and Architecture¶
This page explains what ABI is made of, how a request moves through the system, and which boundary owns each kind of behavior.
Architecture at a glance¶
Researcher or AI agent
|
v
CLI / JSON / MCP / HTTP / provider tool descriptors
|
v
ABIAgentInterface
|
v
Core lifecycle:
discovery: list-types -> query (optional)
preparation: plan -> check -> dry-run -> inspect
execution: request authorization -> run
validation: inspect -> validate-result -> report
|
v
Analysis plugin + declarative DAG + tool registry
|
v
Local / Conda / Docker / Nextflow / Snakemake / HPC / cloud worker
|
v
Execution plan + provenance + standard tables + reports + figures
Every transport calls the same core interface. A CLI request and an MCP request therefore use the same planning, permissions, diagnostics, execution gate, and result contract.
Component map¶
Component |
Responsibility |
Main location |
|---|---|---|
Entry points and transports |
Adapt human or machine requests into ABI operations |
|
Agent interface |
Stable, transport-neutral API and JSON envelopes |
|
Workflow core |
Schemas, planning, permissions, diagnostics, contracts, provenance, tables, and reports |
|
Analysis plugins |
Own biological choices, workflow configuration, parsing, and interpretation |
|
Declarative workflow definitions |
Define DAG nodes, tools, schemas, tables, and report metadata |
|
Tool and resource layer |
Resolve executables, Conda environments, databases, indexes, and models |
|
Runtime adapters |
Execute locally or translate work to Nextflow, Snakemake, and HPC backends |
|
Result and figure layer |
Validate artifacts, normalize TSV tables, build reports, and render figures |
|
How a request is processed¶
Discover.
abi list-typesandabi queryread installed plugin metadata without building or running a workflow.Resolve. ABI combines the plugin, configuration, sample sheet, runtime options, and resource overrides.
Plan. The declarative DAG becomes an
ExecutionPlancontaining ordered steps, commands, inputs, outputs, dependencies, and contracts. The plan is also compiled into a validated, backend-neutralCompiledPlan; both are persisted asexecution_plan.jsonandcompiled_plan.json, and plan-invariant violations fail planning with a structuredinvalid_configerror.Check. ABI validates input paths, executables, resources, and runtime assumptions without executing analysis tools.
Dry-run. ABI writes the plan, provenance skeleton, standard tables, and report preview.
Authorize. Execution requires an explicit
--confirm-executionor equivalent transport field.Execute. The runtime invokes registered tools and enforces step output contracts.
Publish results. ABI records checksums, provenance, tables, summaries, reports, and optional SciPlot figures.
Core design boundaries¶
Thick core¶
Reusable mechanisms belong in the core: lifecycle operations, permission levels, schemas, diagnostics, provenance, contract enforcement, tables, and report assembly.
Thin transports¶
CLI, MCP, provider descriptors, dispatch, and HTTP jobs translate requests. They should not contain workflow or biology logic.
Clean plugins¶
A plugin owns analysis-specific decisions: tools, parameters, DAG branches, input rules, output parsing, biological assertions, and report interpretation.
Agents call contracts, not source code¶
Agents discover typed operations and receive structured responses. They do not need to import ABI internals or generate a new shell pipeline for each run.
Contracts and data flow¶
Boundary |
Input |
Output |
|---|---|---|
User to ABI |
Analysis type, YAML config, TSV sample sheet, runtime options |
Validated request or structured diagnostic |
Planner to executor |
|
Ordered, authorized work |
Tool to plugin |
Files, directories, JSON, TSV, or logs |
Parsed workflow-specific values |
Plugin to ABI result |
Published outputs and standard table rows |
Stable result directory and report inputs |
ABI to user or agent |
Human text or JSON envelope |
Plan, diagnostics, artifacts, report, or recovery hint |
The declarative DAG is the source of truth for dependencies and step output contracts. environments.yaml is the source of truth for tool-to-environment assignments.
Deployment patterns¶
Pattern |
Best for |
Entry point |
|---|---|---|
Local CLI |
Exploration, development, and single-host runs |
|
Docker |
Isolated plugin runtimes and repeatable deployment |
|
Nextflow or HPC |
Scheduler-backed and resumable compute |
|
Snakemake |
Marker-file-based, conda-aware resumable compute |
|
MCP |
Interactive agent platforms using stdio tools |
|
HTTP Job Service |
Queued, asynchronous, or remotely managed work |
|
Headless dispatch |
Subprocess workers and transport adapters |
|
Where to make a change¶
Change |
Owning boundary |
|---|---|
Add a workflow step or biological assertion |
Plugin DAG and plugin tests |
Add a reusable validation or provenance mechanism |
Core module and core tests |
Add a CLI, MCP, or HTTP representation |
Transport adapter calling |
Add or move a tool environment |
|
Change standard result layout |
Result core, plugin mappings, compatibility tests, and docs |
Add a plot type |
|
Continue with Using ABI for the operating lifecycle or Development Standards before changing the codebase.