Release v1.0.0
An editor, a simulator and a natural-language generator for Petri nets and Petri-object models, in one place. Describe a production line or a queueing system in plain language and an agent builds the net; edit it on a canvas, run stochastic simulations, read the charts, export the numbers.
Built for researchers who study systems by simulating them, and for students learning Petri nets and system modelling.
Try it
Nothing to clone, the image comes down on its own:
docker run -d --name petri-net-sim -p 6204:8000 \
-e APP_PUBLIC_URL=http://localhost:6204 \
-v petri-net-sim-data:/data \
ghcr.io/sergiorbk/petri-net-sim-local:v1.0.0Or from a checkout of this repository:
docker compose -f docker-compose.allinone.yml pull
docker compose -f docker-compose.allinone.yml up -dEither way, open http://localhost:6204. One container with the UI, the API and PostgreSQL inside, no signup, nothing to configure. Auth and encryption secrets are generated on first start and kept in the volume, so restarts keep your work. The app is BYOK: add your own LLM key in Settings, and nothing reaches a provider until you do.
What is in it
- Editor. Places, transitions, arcs, weights, priorities and timing on a canvas, with exponential, deterministic, normal and uniform delays.
- Simulator. Stochastic runs in the browser or on a remote engine. Watch the animation, step one firing at a time, or jump straight to the final state.
- Statistics. Tokens per place and buffers per transition plotted against the simulation clock, with a summary table, and export as CSV for Excel or PowerBI and as PNG or SVG for a paper.
- Petri-objects. A model composed of several named nets linked by shared places, so a large system stays a set of small readable ones.
- MCP server and an OpenAI-compatible HTTP API, both authenticated with API keys you issue yourself, each switchable off per account.
- ISO/IEC 15909-2 conformant PNML, validated against the standard's own RELAX NG grammar, and read by PetriObjModelPaint, TINA and CPN Tools.
Image
ghcr.io/sergiorbk/petri-net-sim-local:v1.0.0, linux/amd64.
The name says -local because the image defaults to AUTH_MODE=single_user: no login at all, everyone who reaches the port is the same account. That is right for one person running it for themselves and wrong for anything else, so set AUTH_MODE=multi and APP_ENV=prod before it faces a network, and supply AUTH_JWT_SECRET_KEY and CREDENTIALS_MASTER_KEY explicitly, since a deployed environment refuses to generate them.
Running it on a different port? Point APP_PUBLIC_URL at that port too, or the download links the app generates will point at the wrong one.
Documentation
Running · Configuration · Deployment · Simulation · Connecting other tools · Petri-objects
License
Source-available under the PolyForm Noncommercial License 1.0.0. Free for any noncommercial purpose; commercial use needs a separate license from the author.
@sergiorbk