Releases: SEAMWARE/coraine
Release list
coraine 0.4.0
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 with a 100% success rate.*
What makes it worth a look:
- Small. A stripped broker under 1 MiB, one process, no runtime and no JVM.
- Fast. Written in C, and scaling near-linearly with cores.
- Plugin-driven. Storage backend, temporal history and extra API surfaces are
shared libraries loaded at startup. The core speaks NGSI-LD; the plugins decide
where data lives and how the broker talks to the world.
Getting started
An in-memory store, no external services — the broker answers NGSI-LD on 1026:
docker run --rm -p 1026:1026 \
quay.io/seamware/coraine:0.4.0 --database corDBThen, from another terminal:
curl -X POST localhost:1026/ngsi-ld/v1/entities \
-H 'Content-Type: application/json' \
-d '{ "id": "urn:ngsi-ld:Sensor:1", "type": "Sensor",
"temperature": { "type": "Property", "value": 21.4 } }'
curl localhost:1026/ngsi-ld/v1/entities/urn:ngsi-ld:Sensor:1For a persistent store, point it at MongoDB with --database mongoc instead. The
README walks through the rest.
Where to look next
- Documentation — installation
and administration, the API walkthrough, the plugin architecture, building from
source, and the roadmap. - Container images —
every published tag.0.4.0is this release; every merge tomainalso
publishes an immutable<version>-<date>-<commit>. - Issues — questions, bugs and
feature requests all belong here; that is where the maintainers are. - README — footprint and
throughput numbers, the plugin catalogue, and how the test suites are run.
What is in 0.4.0
The first tagged release. Everything below already existed and had never carried a
version anyone could ask for by name — that is what this release is for, and why
the entry describes a surface rather than a diff.
The broker
- NGSI-LD, in full. ETSI GS CIM 009 v1.9.1 — entities, subscriptions,
registrations, batch operations, the temporal API, distributed operations across
context sources, and JSON-LD@contexthandling. - Notifications over HTTP, HTTPS, MQTT and MQTTS. MQTT QoS and protocol
version are selectable per subscription throughendpoint.notifierInfo
(§ 7.2), and the MQTT broker may require TLS, a username and a password. - Written in C, built with CMake. One process, no runtime, no JVM.
Plugins, loaded at startup as shared libraries
- Current state —
mongoc(MongoDB) andcorDB(in-memory). - Temporal history —
timescale(TimescaleDB),ramdb(in-memory) andnone. - API surfaces —
admin, for the endpoints that are not NGSI-LD: ops and
administration, and 56 Prometheus metrics on/metricsand
/admin/metricscovering entity, batch, subscription, registration, context
source and distributed-operation activity.
Which ones a build contains is a compile-time choice, and which ones it loads is a
run-time one.
Where coraine goes from here is on the
roadmap.
* The conformance runs use a corrected fork of the ETSI test 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. The fixes are filed
upstream with ETSI.
Licensed under the Apache License 2.0.