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.