Documentation
Documentation for mako, the open-source German energy-market platform in Rust: guides, operator manuals, EDIFACT reference and regulatory mapping.
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 BDEW format release | Release & compliance |
Find it by market role
makod registers the engine modules of the roles its [deployment] rollen
declares, and a role-built processd cannot answer as a role it was not built
for. Which principal may read which role's processes (§ 6a Abs. 1 EnWG) is the
deployment's Cedar policy. makod, marktd, edmd, processd and agentd
run in every role; the rest are role-specific.
| Role | Also runs | Starts at |
|---|---|---|
| NB — Netzbetreiber | processd (incl. the Sperrauftrag queue) · netzbilanzd · einsd | 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 domain layer never sees EDIFACT and the format layer never knows what a Lieferantenwechsel is, so a BDEW format release is an import of new profiles rather than a change to process logic.
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.
2 pagesArchitecture
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.
10 pagesServices
Operator guides for the 14 production daemons — ports, config, APIs, deployment.
14 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