fsm_core 1.1.0

This Release
fsm_core 1.1.0
Date
Status
Stable
Other Releases
Abstract
This package is used for the main PostgreSQL files for the FSM project.
Released By
Niraj
License
Apache 2.0
Resources
Special Files
Tags

Extensions

fsm_core 1.1.0
This package is used for the main PostgreSQL files for the FSM project.

README

fsm_core

A finite state machine engine that runs entirely inside PostgreSQL.

What it does

fsm_core lets you define, run, and persist state machines as first-class database objects. States, transitions, guards, and event history all live in PostgreSQL — no application-side orchestration layer required.

A state machine is defined once as a JSON schema, compiled into the database, and then driven by sending events through SQL functions. The database enforces which transitions are valid, records every event, and keeps each instance at exactly one state at a time.

Where it is helpful

  • Workflow orchestration — model multi-step business processes (approvals, onboarding, order fulfilment) entirely in the database so any client or service can participate without duplicating logic
  • Audit trails — every state change and event is persisted automatically; replay or inspect the full history of any instance with a query
  • Concurrency safety — advisory locks prevent two callers from advancing the same instance simultaneously, without requiring application-level coordination
  • Multiple execution models — drive machines synchronously (direct call), asynchronously via a pgmq-backed worker queue, or through a promise/callback pattern — all from the same schema
  • Supabase compatible — ships with RLS-aware grants and PostgREST-friendly function signatures so it works out of the box as a Supabase backend

Requirements

Dependency Minimum version Notes
PostgreSQL 15
ltree 1.2 bundled with PostgreSQL
pgmq 1.4.4 must be installed separately
pg_jsonschema 0.3.3 installed automatically into the fsm_core schema

Installation

Via PGXN

pgxn install fsm_core

Then in your database:

CREATE EXTENSION ltree;
CREATE EXTENSION pgmq;
CREATE EXTENSION fsm_core;

Manual

Download the PGXN zip (or build it locally with npm run pgxnBuildAndPublish) and apply the SQL files inside in version order using psql or your migration tool of choice.

Reference