← All projects

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 .syren projects.
  • 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:

FeatureDefaultPurpose
custom-protocolYesEnables Tauri's custom protocol for production builds.
gpuNoEnables GPU support in the Syren ABM Framework dependency.
messaging_gpuNoEnables 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.