Architecture¶
AutoMOOSE implements a six-agent pipeline with a plugin registry, a model-agnostic LLM backend, a pluggable execution backend (local or HPC), and an MCP interface layer.
Agent Pipeline¶
User Query
│
▼
f₁ Architect ──────────► Plugin Registry
│ │
▼ ▼
f₂ Input Writer ◄────── generate_input(**params)
├── Meshing sub-agent
├── Variables sub-agent
├── Kernels sub-agent
├── Materials sub-agent
├── Postprocessors sub-agent
└── Executioner sub-agent
│
▼
f₃ Runner ──────────────► Execution Backend (local | HPC)
│ │
│ ▼
│ MOOSE Executable
▼
f₄ Reviewer ◄──────────── (on failure: diagnose + retry → f₂)
│
▼
f₅ Visualization ◄─────── parse_results(csv_data)
│
▼
f₆ Skeptic ─────────────► physics-grounded falsification (verdict)
The pipeline is formally \(\mathcal{S} = f_6 \circ f_5 \circ f_4 \circ f_3 \circ f_2 \circ f_1(\mathcal{U})\) and partitions into three layers: cognitive (f₁, f₂), execution (f₃, f₄), and epistemic (f₅, f₆) — reframing the workflow from software stages into the epistemic roles generate, execute, and verify.
Agents¶
f₁ Architect¶
Decomposes the user’s natural-language problem description into structured simulation parameters, selecting physics, boundary conditions, and solver settings, and routes the specification to the plugin registry.
f₂ Input Writer¶
Generates a valid MOOSE .i input file via six coordinated sub-agents, each
responsible for one MOOSE input block:
Meshing — mesh type, element size, dimensions
Variables — field variable declarations
Kernels — PDE kernel specifications
Materials — material property definitions
Postprocessors — output quantity definitions
Executioner — solver type, time-stepping, convergence criteria
f₃ Runner¶
Executes the simulation on the configured execution backend — a local
subprocess or a remote HPC/SLURM job (see Execution Backends) — streams the
solver log, and writes a self-contained, timestamped run directory under
runs/ with a full provenance manifest.
f₄ Reviewer¶
On a non-zero exit, diagnoses the failure class and proposes corrected parameters, returning them to f₂ via the retry arc. An operational check: did the simulation run?
f₅ Visualization¶
Reads postprocessor CSV via parse_results(), extracts quantitative
observables (kinetics, Arrhenius fits), and generates figures and a
natural-language interpretation.
f₆ Skeptic¶
Adversarially tests each completed, successful run against physics-grounded falsification invariants — a physical check, distinct from the Reviewer: should we believe the result? For grain growth it tests monotonicity, asymptotic behavior, parabolic Burke–Turnbull scaling, numerical integrity, and cross-run Arrhenius consistency; for conserved Cahn–Hilliard dynamics it tests the exact laws of mass conservation and free-energy dissipation, plus coarsening. Each invariant returns a verdict and, on failure, a diagnosis.
Model-Agnostic Backend¶
Every agent is driven by a configurable language-model backend. A provider-agnostic client reads the provider, model, and endpoint from configuration and dispatches to either a hosted API or a self-hosted open-weights model behind an OpenAI-compatible endpoint. Switching backends is a configuration change, not a code change, so the framework does not depend on any single model or provider remaining available.
Execution Backend¶
The Runner targets a pluggable execution backend selected by configuration:
local — runs MOOSE as a subprocess on the current machine.
hpc — stages files to NERSC Perlmutter, submits a SLURM job, polls it, and fetches results back.
See Execution Backends for setup and usage of both backends.
Plugin Registry¶
The plugin registry decouples physics implementations from the agent pipeline.
Each plugin exposes generate_input(**params) -> str and
parse_results(csv_data) -> dict. Currently registered plugins:
Plugin |
Status |
Notes |
|---|---|---|
Grain Growth (Allen–Cahn) |
validated |
Non-conserved; two formulations, 2D/3D, seven presets |
Spinodal (Cahn–Hilliard) |
validated |
Conserved; CALPHAD Fe–Cr free-energy mode |
Ferroelectric (LGD) |
stub |
Future implementation |
Solidification (dendritic) |
stub |
Future implementation |
MCP Interface¶
AutoMOOSE exposes its capabilities via a Model Context Protocol (MCP) server (Starlette/uvicorn, port 8001) over stdio and SSE transports. See MCP Interface for full tool documentation.