coraine
A lightweight NGSI-LD Context Broker written in C, fully implementing ETSI GS CIM 009 v1.9.1 and passing the official ETSI NGSI-LD conformance test suite.*
coraine is small — one process, 18 MiB of RAM, answering its first request 13 ms
after exec, with no other service required — and plugin-driven: the storage
backend, the temporal history, the extra API surfaces and (next) the wire
protocol itself are shared libraries chosen at startup. The core
broker speaks NGSI-LD; the plugins decide where data lives, what extra endpoints
exist, and how the broker talks to the world.
* The conformance runs use a corrected fork of the ETSI suite. The changes
are test-side fixes — the suite has bugs of its own and parts of it do not run as
published — never relaxations of what the broker must do. They are filed upstream,
as merge requests for the suite's maintainers to review; until they are merged, the
result is against the corrected suite, not the published one: 1106 of 1106 test
cases, on MongoDB + TimescaleDB and on corDB (2026-10-07).
Where to go
| If you want to | Read |
|---|---|
| install, build and run it | Installation & Administration |
| run several instances behind a load balancer | High Availability |
| move another broker's data into it (Orion-LD today) | Migrating a database to coraine |
| see the API in action | API walkthrough |
| understand how it is put together, or write a plugin | Plugin architecture |
| know what it costs to run, and how fast it is | Performance and footprint |
| build a broker for your own workload - the profile, the allocator, the lock | Extreme performance |
| judge how well it is tested | Test coverage |
| know what is not built yet | Roadmap |
| see every idea, planned or only possible | Ideas |
| connect it to DDS or ROS 2 | DDS and ROS 2 |
| see how it will reach devices without an IoT Agent | Speaking to devices directly |
| read Modbus devices and PLCs, and write to them | The Modbus bridge |
| send notifications over MQTT, or map MQTT topics to attributes | The MQTT bridge |
| secure it - the Data Space Connector's tokens and policies, or your own security layer, inside the broker | Authorization in the broker |
| see the binary format for snapshots, the log and cor:// (design draft) | The cor format and cor:// |
| use the API over a WebSocket and get the notifications on it | WebSocket |
| see where a request runs - inline, as a coroutine, on a worker - and how it waits | Coroutines |
| read how it got here - designs dropped, regressions found, before and after | the History pages, e.g. coroutines, performance |
Support
Questions, bugs and feature requests all belong in
GitHub issues — that is where the
maintainers are. General FIWARE questions also reach people under the
fiware tag on Stack
Overflow.
License
Apache License 2.0 — Copyright 2026 Seamware.