Documentation
Complete documentation for mako — the open-source German energy-market platform in Rust. Guides, service operator manuals, EDIFACT reference, regulatory mapping and the annual BDEW release workflow.
Everything needed to build, run and extend mako — grouped by what you are trying to do.
Start here
| If you want to… | Go to |
|---|---|
| See it work end to end in a few minutes | Getting started |
| Understand how a message becomes a process | Architecture |
| Run a service in production | Services |
| Parse, validate or build EDIFACT yourself | Reference |
| Trace a rule back to its Festlegung or § | Regulatory |
| Take on a new annual BDEW release | Release & compliance |
Find it by market role
A deployment is scoped to the roles it plays — a role build contains no other
arm's code (§ 9 EnWG). makod, marktd, edmd, obsd and agentd are
role-neutral and run everywhere; the rest are role-specific.
| Role | Also runs | Starts at |
|---|---|---|
| NB — Netzbetreiber | processd · netzbilanzd · sperrd · einsd · mabis-syncd | processd — the STP auto-responder |
| LF — Lieferant | processd · vertragd · productd · billingd · invoicd · accountingd · outputd · portald · einsd | billingd — retail billing and EN 16931 |
| MSB — Messstellenbetreiber | processd · vertragd | edmd — metering and SMGW lifecycle |
| ESA — Energieserviceanbieter | — | makod — the §34 MsbG Wertebestellung |
How the layers fit together
graph TB
subgraph transport ["Transport"]
AS4["AS4 / ebMS3<br/>BDEW AS4-Profil"]
API["API-Webdienste<br/>REST"]
end
subgraph format ["Format — generated from BDEW profiles"]
EDI["edi-energy<br/>parse · validate · build"]
end
subgraph domain ["Domain — typed commands and events"]
ENG["mako-engine<br/>workflows · Fristen · outbox"]
MODS["mako-gpke · mako-wim<br/>mako-geli-gas · mako-mabis · …"]
end
subgraph services ["Services"]
SVC["makod · marktd · billingd<br/>accountingd · edmd · …"]
end
AS4 --> EDI
API --> ENG
EDI -->|"typed message"| ENG
ENG --- MODS
ENG --> SVC
SVC -->|"CloudEvents"| SVC
The split is deliberate. The domain layer never sees EDIFACT, and the format layer never knows what a Lieferantenwechsel is — so an annual BDEW release is a codegen run against new profiles rather than a change to process logic.
Sections
- Guide — install, run the demo stack, submit your first message.
- Architecture — the domain model, the workflow engine, ERP integration and the API-Webdienste transition.
- Services — one operator manual per service: endpoints, configuration, emitted events, deployment.
- Reference — EDIFACT parsing, validation, builders, the AS4
profile, process catalogue, and the
makotestPython toolkit. - Regulatory — BNetzA Festlegungen and the full Prüfidentifikator table with the crate and workflow that owns each one.
- Release & compliance — the annual release workflow, schema versioning, and licence inventory.
Common tasks
| Task | Page |
|---|---|
| Parse an interchange and read its typed fields | Parsing |
| Find which workflow owns a Prüfidentifikator | PID reference |
| Look up an answer Frist | Process catalogue |
| Configure AS4 against a counterparty | makod — [as4] |
| Submit a command from an ERP | ERP integration |
| Take on a new BDEW release | Annual release workflow |
| Write a test against the real Fristen | makotest |
Guide
Install mako, parse your first EDIFACT interchange, and run a workflow.
1 pageArchitecture
How the platform fits together: the event-sourced engine, domain model, deadlines, and ERP/API integration.
5 pagesReference
Deep reference for parsing, validation, builders, the platform API, and every process.
9 pagesServices
Operator guides for the 17 production daemons — ports, config, APIs, deployment.
17 pagesRegulatory
BNetzA determinations, the Prüfidentifikator catalog, and the legal basis behind each process.
2 pagesRelease & Compliance
Annual EDI@Energy release lifecycle, schema versioning, and license governance.
4 pages