ESDM CLI
The ESDM CLI checks, explores, and documents event-sourced domain models written in ESDM – Aggregates, Events, Commands, Process Managers, Read Models, and Context Mappings as YAML files, reviewed in pull requests like any other code.
Open source under the MIT license, with binaries for macOS, Linux, and Windows.
- License
- MIT License
- Runs on
- Linux, macOS, Windows
The model drifts the moment it leaves the room.
Teams share the vocabulary of Domain-Driven Design and Event Sourcing, but not their artifacts – slide decks, whiteboard photos, and wiki diagrams that nobody trusts six months later. ESDM gives the model a first-class home – files next to the code, checked by a linter, in a format every tool can read.
- Drift becomes visible. A pull request that renames an Aggregate has to update the model, or the linter fails the check.
- Gaps show up early. An Aggregate without Events, a Command nobody issues, a Read Model fed by no projection – the linter flags them.
- Built for tools, and for AI. A fixed schema and a named vocabulary, plain enough for LLMs to read and write.
apiVersion: schema.esdm.io/core/v1
kind: command
name: acquire
scope:
domain: library
boundedContext: cataloging
aggregate: book
data:
type: object
properties:
title: { type: string }
author: { type: string }
isbn: { type: string }
required: [title, author, isbn]
publishes:
- acquired
A Command in ESDM – what it acts on, the data it carries, and the Event it publishes. esdm lint checks it against the schema and the modeling rules.
One model, many uses.
Every capability links to the part of the documentation that explains it.
A model you can trust
- LintingStructural and modeling errors, with their locations and the rule that flagged them.Learn more
- Checks in CIA fast check that fails a pull request when the model and the code drift apart.Learn more
- Editor supportAutocomplete and validation against the schemas while you type.Learn more
- Schema updatesKeep the schemas in your project in step with the binary.Learn more
The model at a glance
- ViewsA hierarchical summary, from the Domain down to the Events and Commands.Learn more
- GlossariesThe ubiquitous language of every Bounded Context, as Markdown.Learn more
- DocumentationOne Markdown page per element, with its relationships linked.Learn more
Beyond the core
- Domain StorytellingCapture discovery stories as documents of their own, validated by the same toolchain.Learn more
- Given-When-ThenConcrete behavioral scenarios alongside the model, in a format domain experts know.Learn more
An open format
- Modeling with AILet a coding agent draft a model, or extract one from existing code.Learn more
- Building toolsValidators, generators, and IDE plugins build against the same fixed schema.Learn more
Planning something bigger?
Whether you need a quote, support, or a second opinion on your architecture – we are happy to help.