2026
Syren Studio
A GUI software for designing, tuning, and analysing economic agent based models.
- Rust
- Node JS
- Tauri
Syren Studio
Syren Studio is a Tauri 2 desktop IDE for building, compiling, simulating, calibrating, and analysing Syren agent-based models. The frontend is a React/Vite application, the backend is Rust, and project files are JSON documents with the .syren extension.
The app is built around five primary views:
- Design: edit project structure, model entities, graph canvas wiring, and scheduler constraints.
- Code: edit project-local Python system, resource, and helper scripts; compile native code; preview generated Rust or WGSL for systems.
- Calibrate: import observed CSV or Parquet data, select free parameters, configure an optimizer, run candidates, and export the best result.
- Simulate: build a native runtime, step or run ticks, inspect agents, watch metrics, and edit runtime policies.
- Analyse: inspect simulation and calibration history, save chart views, compare runs, and export CSV or Parquet tables.
Python is a source language in Syren Studio. System and resource scripts are parsed with rustpython-parser, validated against the supported subset, lowered to Studio IR, and emitted as native Rust or WGSL.
Current Capabilities
- Create, open, save, migrate, validate, and edit schema v1
.syrenprojects. - Persist archetypes, components, agent templates, messages, resources, systems, schedules, policies, calibration settings, analysis settings, sub-schedulers, nested model references, and UI graph placement state.
- Generate TypeScript project types from Rust schema definitions with
ts-rs. - Compile managed native crates under
.syren-build/native. - Export standalone Rust projects from saved Studio projects.
- Run simulation ticks from the desktop app and collect snapshots, policy events, metrics, environment values, and agent inspection rows.
- Calibrate with pure-Rust random search, grid search, or coordinate search.
- Export analysis, policy logs, calibration summaries, and agent populations as CSV or Parquet.
- Check and install updates through the Tauri updater plugin.
Feature Flags
The Tauri crate defines these Cargo features:
| Feature | Default | Purpose |
|---|---|---|
custom-protocol | Yes | Enables Tauri's custom protocol for production builds. |
gpu | No | Enables GPU support in the Syren ABM Framework dependency. |
messaging_gpu | No | Enables GPU-backed message channels and implies gpu. |
Example:
npm run tauri -- build --features "gpu,messaging_gpu"Repository Layout
.
|-- src/ React frontend
| |-- components/ Shared UI, graph canvas, editors, chrome
| |-- views/ Welcome, Design, Code, Calibrate, Simulate, Analyse
| |-- stores/ Zustand stores for app, project, simulation, calibration, analysis
| |-- services/ Tauri IPC wrappers and script persistence
| |-- types/ Handwritten and generated TypeScript contracts
| `-- styles/ Theme variables and global CSS
|-- src-tauri/ Rust backend and Tauri app
| |-- src/commands/ IPC command groups
| |-- src/project/ .syren schema, I/O, migration, validation, paths
| |-- src/native/ Python subset compiler, codegen, crate writer, Cargo runner
| |-- src/simulation/ Runtime control, policies, snapshots, history
| |-- src/calibration/ Data import, parameter space, objectives, optimizers
| |-- src/analysis/ Datasets, summaries, comparisons, diagnostics
| `-- src/export/ CSV and Parquet export
|-- docs/ User and contributor documentation
|-- design/ Historical product/design planning notes
|-- Cargo.toml Workspace root
|-- package.json Frontend scripts and dependencies
`-- vite.config.ts Vite and Tauri dev-server configuration
License
This project is proprietary. All rights reserved.