Open Source · Apache 2.0

One model for entity state, workflows, events, and transactions.

Cyoda is an open-source EDBMS that runs entity lifecycle management, state-machine workflows, event-driven processing, and transactional consistency as one integrated runtime. Build scalable backend services without stitching together separate systems. Auditable history by default.

# macOS / Linux via Homebrew
brew install cyoda/cyoda-go/cyoda

# Initialise SQLite-backed local storage
cyoda init

# Windows: signed binaries (zip) on the GitHub releases page

SQLite-backed local storage by default  ·  Mock auth locally

Compatible with:
  • Java
  • Python
REST API Apache 2.0 Open Source

What Cyoda is

Cyoda is an entity database management system (EDBMS) built around stateful business entities rather than passive database records. An entity's lifecycle, permitted transitions, event responses, and history are part of the model itself, making application behaviour explicit, enforceable, and queryable.

Standard backend stacks require separate systems for each: a workflow engine, an event bus, a state table, an audit log, and application code to stitch them together. Every seam is a source of inconsistency, hidden state, and debugging difficulty. Cyoda replaces that stack. Entity state, valid transitions, event triggers, and business rules are declared once, enforced consistently, and recorded automatically.

The explicit structure matters beyond compliance. When workflow logic, entity state, and event flow are visible and queryable in one model, both engineers and AI tools can reason about system behavior precisely. The system stays comprehensible as it grows, not in spite of growth, but because the model enforces clarity.

Cyoda architecture: your application connects via REST to Cyoda, which runs Entity Lifecycle, Workflow FSM, Event-Driven Processing, and Audit Log and History as one integrated model. Cyoda connects to in-memory or durable storage. Your Application Code REST Cyoda Entity Lifecycle Workflow FSM Event-Driven Processing Audit Log & History Storage In-memory or durable storage

What you get

Stateful entities

Define typed entity types with fields, valid states, lifecycle guards, and transition rules. The model is explicit, version-controlled, and enforced at runtime.

Entity workflows

Each entity workflow runs as a finite state machine. Invalid lifecycle transitions are rejected at the API boundary. Transition logic is declared, not buried in application code.

Event-driven processing

Events trigger entity lifecycle transitions. The event model is first-class, explicit, and traceable — not routed through a separate bus or implicit callbacks.

Transactional consistency

State transitions are atomic. An entity's state and its history are always consistent. No partial updates. No reconciliation logic required.

Temporal history

Every state change is recorded. Query the exact state of any entity at any point in time. Point-in-time access is built in, not retrofitted.

Immutable audit trail

A non-modifiable record of every transition: entity, state change, actor, timestamp. Compliance and debugging share the same source of truth.

REST and gRPC APIs

REST API for entities, search, and workflow operations — any language with an HTTP client works. gRPC connects external compute processors. Java and Python client templates get you started.

AI-ready model

Explicit entity state and defined transitions give AI tools a structured, queryable model. More precise reasoning, less inference from scattered code.

Install and get started

The shortest useful path: install the binary, start the local server, import the lifecycle workflow for an entity model, create an entity instance, move it through a valid transition, and read the state back. The graph shows the orders entity workflow used in the commands below: the draft and submitted states and the manual submit transition.

→ Full install guide on docs.cyoda.net

Entity workflow

orders

Lifecycle for the orders example entity used below

Display
orders-entity-lifecycle.sh
# Import the entity workflow for the orders model.
curl -X POST http://localhost:8080/api/model/orders/1/workflow/import \
  -H 'Content-Type: application/json' \
  -d @orders-entity-workflow.json

ENTITY_ID=$(curl -s -X POST http://localhost:8080/api/entity/JSON/orders/1 \
  -H 'Content-Type: application/json' \
  -d '{ "orderId": "ORD-1", "amount": 42.00, "currency": "EUR" }' \
  | jq -r '.[0].entityIds[0]')

curl -X PUT http://localhost:8080/api/entity/JSON/$ENTITY_ID/submit
curl http://localhost:8080/api/entity/$ENTITY_ID

Use Cyoda with your AI coding agent

Install Cyoda’s agent skills so your coding agent understands Cyoda entities, workflows, criteria, processors, testing and local development conventions.

Claude Code can install the Cyoda plugin from the Cyoda skills marketplace.

Run inside Claude Code
/plugin marketplace add Cyoda-platform/cyoda-skills
/plugin install cyoda@cyoda
/reload-plugins
Start with
/cyoda:app
Useful Cyoda commands
/cyoda:setup
/cyoda:auth
/cyoda:design
/cyoda:build
/cyoda:compute
/cyoda:test
/cyoda:debug
/cyoda:migrate
/cyoda:docs
/cyoda:status
Developer Console · v0.3.0

Generate with AI. Refine the workflow visually.

Cyoda Developer Console is a desktop application for inspecting and correcting generated workflow JSON during the build phase. Work with local workflow files without a running Cyoda environment.

v0.3.0 · Latest · macOS and Linux

Start local. Iterate with AI. Scale without re-engineering.

Cyoda keeps the same model and API surface as you grow. Start in-memory for fast local development, AI-assisted engineering, and rapid iteration, then move to durable single-node, clustered, and enterprise-scale deployments when you need them.

Cyoda growth path across in-memory, SQLite, PostgreSQL, and Cassandra (commercial) runtime modes

Two ways to use Cyoda

Run it yourself
Free · Apache 2.0

Install the open-source binary and run Cyoda on your own machine or infrastructure. Local development, self-hosting, and experimentation. No account required.

Enterprise Cyoda
Scalable deployment

Larger-scale infrastructure with enterprise support, SLA, and dedicated engagement for organisations with advanced operational requirements.

Common questions

What is Cyoda?

Cyoda is an open-source entity database management system (EDBMS) and workflow runtime. You define your entity types — the fields they carry, the states they can be in, and the valid transitions between states. Cyoda enforces those rules at the API boundary, records every state change immutably, and lets you query the history of any entity at any point in time. It runs as a single binary with no distributed cluster required.

What is an EDBMS?

An entity database management system (EDBMS) is a runtime that manages the full lifecycle of typed, stateful business objects — entities. Where a standard database stores rows, an EDBMS tracks state transitions, enforces lifecycle rules, and maintains a temporal audit trail. Cyoda adds a workflow engine to this model: transition rules are explicit, invalid transitions are rejected at the API boundary, and the complete state history is queryable.

Why use stateful entities?

Most backend systems need to track the state of business objects over time — orders, users, requests, approvals, jobs. Without a structured model, state logic ends up scattered across application code and database columns with no enforcement and no history. Cyoda gives each entity a defined lifecycle with enforced rules. Your application code drives transitions; Cyoda ensures they are valid and records them.

What kinds of systems fit Cyoda?

Systems where entities change state over time and where the history of those changes matters: workflow automation, order management, approval pipelines, event-driven backends, audit-sensitive applications, and anywhere you would otherwise build a hand-rolled state machine with an audit log.

What does it mean to have workflow, state, events, and transactions in one model?

Most backend systems require separate tools for each: a workflow engine, a state machine library, an event bus, and a transaction manager, connected by integration code. Each connection point is a source of inconsistency, hidden state, and operational complexity. Cyoda runs these capabilities as one runtime. Entity state, lifecycle transitions, event-driven processing, and transactional consistency all operate within the same model — with no integration layer between them.

How does Cyoda improve AI-assisted development?

AI tools generate better code when the system model is explicit and structured. Because Cyoda defines entity types, valid states, and transition rules as queryable schema rather than implicit application logic, AI tools can reason about system behavior from the model rather than inferring it from scattered code. The result is more accurate code generation, more precise debugging assistance, and a lower risk of incorrect state handling in generated output.

What is the difference between in-memory and PostgreSQL mode?

SQLite-backed local storage is the default for a fresh local install. In-memory mode stores entity state in process memory and resets when the process stops, which is useful for fast functional tests. PostgreSQL stores entity state durably for service deployments that need an external database.

What is the difference between Run it yourself and Enterprise Cyoda?

Run it yourself is the open-source path: install the Apache 2.0 binary and run Cyoda on your own infrastructure at no cost, with no account required. Enterprise Cyoda adds SLA-backed support and dedicated engagement for teams running at production scale. Both use the identical core API and entity model, so code written against one runs unchanged against the other.

What languages are supported?

Any language with an HTTP client can use the REST API for entities, search, and workflow operations. External compute processors connect over gRPC. Java and Python client example/template projects are available to get started quickly.

Where is the GitHub repo?

The source code is at github.com/Cyoda/cyoda-go. Issues, releases, and contributions are managed there.

Where is the documentation?

Full documentation is at docs.cyoda.net. The install-and-first-entity guide covers installation, local startup, importing an entity workflow, creating an entity, invoking a lifecycle transition, and reading state back.

Start building locally

brew install cyoda/cyoda-go/cyoda
cyoda init
cyoda