Skip to content

Releases: SEAMWARE/coraine

Release list

coraine 0.4.0

Choose a tag to compare

@github-actions github-actions released this 28 Aug 12:47
f81859a

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 corDB

Then, 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:1

For 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.0 is this release; every merge to main also
    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 @context handling.
  • Notifications over HTTP, HTTPS, MQTT and MQTTS. MQTT QoS and protocol
    version are selectable per subscription through endpoint.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 statemongoc (MongoDB) and corDB (in-memory).
  • Temporal historytimescale (TimescaleDB), ramdb (in-memory) and none.
  • API surfacesadmin, for the endpoints that are not NGSI-LD: ops and
    administration, and 56 Prometheus metrics on /metrics and
    /admin/metrics covering 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.