SimPilot provides a multi-phase engineering pipeline that connects geometry creation, meshing, simulation, and post-processing into a single artifact chain. Each phase produces an artifact that the next phase consumes, enabling fully automated geometry-to-results workflows from a single natural-language request.
Pipeline overview
The pipeline consists of four phases. Geometry can be created either interactively via FreeCAD or programmatically via CadQuery. The agent orchestrates these phases based on the user's intent:
FreeCAD (interactive) ─┐
├→ Mesh Phase → Simulation Phase → Post-Processing Phase
CadQuery (scripted) ───┘ (Mesh) (Sim) (Visualize)
The AI agent routes requests to the appropriate entry point based on the user's intent. Not every request starts at the Geometry phase — the pipeline supports entering at any stage.
Routing examples
| Request | Pipeline path |
|---|
| "Simulate flow around a cylinder" | Geometry → Mesh → Simulation |
| "Open FreeCAD and design the wing geometry" | FreeCAD → Mesh → Simulation |
| "Mesh this geometry and run" | Mesh → Simulation |
| "Show me the pressure from my last sim" | Post-processing only |
| "Generate a NACA 0012 airfoil" | Geometry only |
| "Run a lid-driven cavity" | Simulation only (blockMesh, no geometry needed) |
Pipeline phases
Geometry phase
Generates or edits geometry using CadQuery. The phase:
- Searches the built-in knowledge base for relevant patterns and examples
- Generates a CadQuery Python script via LLM
- Executes the script on the compute node to produce a geometry file (STEP or STL)
- Runs staged recovery with knowledge base and web search escalation
- Extracts bounding box, dimensions, and face/edge/vertex counts
Input: Natural-language geometry description, optional parametric values, optional previous geometry for editing.
Output: Geometry artifact containing geometry path, bounding box, dimensions, characteristic length, and script path.
Mesh phase
Generates or edits a computational mesh using Gmsh, snappyHexMesh, or cfMesh. The phase:
- Discovers a geometry artifact from the chat context (or accepts one explicitly)
- Searches the built-in knowledge base for mesh patterns
- Selects the best mesh strategy (auto-inferred from geometry and solver, or user-specified)
- Delegates to the internal mesh setup step with real-time progress updates
- Extracts mesh quality metrics and boundary patch names
Mesh type aliases: blockMesh, snappyHexMesh, gmsh, cfMesh. When omitted, the strategy is inferred — imported geometry with OpenFOAM defaults to snappyHexMesh; no geometry defaults to Gmsh.
Input: Natural-language mesh description, optional geometry artifact or geometry path, optional mesh type and parameters.
Output: Mesh artifact containing mesh path, format, quality metrics, boundary patches, and the upstream geometry artifact.
The mesh setup step is not exposed directly in the chat-level tool schema. It is invoked internally by the pipeline, which handles knowledge retrieval, artifact tracking, and progress reporting.
Simulation phase
The simulation orchestrator, documented in detail on the
Simulation Workflow page. When used as part of the pipeline, it can receive a mesh artifact from the mesh phase to skip mesh generation.
Post-processing phase
Visualizes and extracts data from simulation results using PyVista and matplotlib. The phase:
- Discovers simulation results from the chat context (or accepts a simulation artifact or explicit job ID)
- Searches the built-in knowledge base for visualization patterns
- Extracts quantities (drag, lift, residuals, etc.) using solver-specific extractors
- Classifies visualization type (2D plots, 3D renders, or both) based on the user's request
- Generates Python visualization scripts via LLM, with a deterministic fallback for 3D
- Runs staged recovery with knowledge base and web search escalation
- Reads generated images for inline chat display and generates a report document
Input: Natural-language description of what to visualize, optional simulation artifact or simulation job ID, fields to plot, quantities to extract.
Output: Post-processing artifact containing visualizations (PNG/SVG/PDF), extracted quantities, report document ID, and the upstream simulation artifact.
Artifact chaining
Each phase produces an artifact that flows to the next phase. A post-processing result traces back through the simulation, mesh, and geometry that produced it. This provides full traceability from visualization back to geometry.
When a downstream phase does not receive an explicit artifact, it auto-discovers the most recent artifact from previous phases in the same chat. This allows multi-turn workflows where the user requests geometry in one message and meshing in the next without manually passing artifacts.
Error-fix loops
Each workflow phase includes its own recovery path with progressive escalation:
- Geometry phase: Uses staged recovery with targeted knowledge lookup first and web search only when local references are insufficient.
- Mesh phase: Applies its own recovery flow for Gmsh mode.
- Simulation phase: Uses evaluator-optimizer recovery: evaluate the failed command, gather targeted context, apply a narrow fix, compare retry outcomes, and escalate to
agent("error-diagnostician") or web search only when failures persist.
- Post-processing phase: Uses staged recovery per visualization type with targeted docs/knowledge lookup first, optional web search escalation, and a deterministic fallback for 3D if generated scripts keep failing.
Real-time progress updates
All workflow phases stream progress events to the chat UI via Server-Sent Events. Each progress update includes a title, message, and status, allowing users to follow the workflow execution in real time.