Simulation Projects
Simulation projects connect multiple model projects into a federated simulation. Instead of building agents and behaviors, you import existing models and wire their inputs and outputs together.
Creating a Simulation
- On the dashboard, click New Project
- Select Simulation as the project type
- Name your simulation
The Simulation Editor
The simulation editor has a different layout than the model editor:
- Models panel — Lists imported model references
- Config panel — Max steps and data logging settings
- Simulation graph — The canvas where you connect models
Importing Models
Click Import Model to add a model project to your simulation. Only model projects (not other simulations) can be imported — this prevents circular references. When imported, a snapshot of the model's interface contract is stored.
Simulation Nodes
The simulation graph uses special nodes alongside all the core nodes (math, branch, compare, etc.):
| Node | Purpose |
|---|---|
| Model Reference | Represents an imported model. Has exec ports (trigger a step) and dynamic data ports from the model's interface contract. |
| Step Controller | Runs a loop for N steps. Provides step number and loop control flow. |
| Data Logger | Logs values during the simulation for later analysis. |
Coupling Models
The power of federation is coupling — connecting one model's outputs to another's inputs. You can use any core node for coupling logic:
StepController (100 steps)
→ ModelA.step()
→ read ModelA output (avg_price)
→ Multiply × 0.9
→ Branch (if > threshold)
→ write to ModelB input (price_signal)
→ ModelB.step()This lets you build complex inter-model relationships using visual logic rather than writing Python orchestration code.
Configuration
- Max Steps — How many simulation steps to run (default: 100)
- Data Logging — Whether to log values during execution
Generated Output
Generating code from a simulation project produces a runner.py that orchestrates all the imported models. Each model's code is generated independently, and the runner handles initialization, stepping, and data coupling.