Repository navigation
Releases
Releases · joinedcontext/Antares-NGSI-LD-Context-Broker
Antares v0.2.0
docker run --rm -p 9090:9090 ghcr.io/joinedcontext/antares-broker:0.2.0
Upgrade note: migration 0023 cannot be rolled back. It moves short history into an UNLOGGED partition, and a v0.1.x broker cannot write history after it ran. Take a pg_dump before you upgrade a Postgres or TimescaleDB store; that backup is the way back. crates/antares-sql/migrations.rollback.toml lists what a rollback means for each migration.
NGSI-LD API
- Paging limits: 100 Entities a page by default, 1000 at most (403 TooManyResults past it). Temporal queries return 100 instances an Attribute by default, 1000 at most (206 with Content-Range past it).
ANTARES_DEFAULT_LIMIT,ANTARES_MAX_LIMIT,ANTARES_TEMPORAL_DEFAULT_INSTANCESandANTARES_TEMPORAL_INSTANCE_LIMITchange them. - Versions and provenance of measurements, history retention per type and per Entity, expiry of Attribute instances (clause 4.22).
- Policy narrowing by type, id pattern, attributes and temporal window, applied in the store.
- The shared crates ship as packages
ngsild-model,ngsild-jsonld,ngsild-qlandngsild-matcher(paths unchanged). - ETSI NGSI-LD test suite: 1833/1833 pass on the memory, file, Postgres and TimescaleDB stores.
Database (migrations 0008–0028)
- New tables
views,attr_versions,entity_types,iri_ids,history_cutover,entity_values,entity_attrs; new columns for dataset attributes, attribute expiry, location cells, name keys, versions and provenance. - History: one btree instead of two, integer history keys, short history in an UNLOGGED partition.
- Indexes the broker role can use under forced row-level security: type pages, typed geo cells, id prefixes, name,
q=andattrs=values. - Drops
i_entities_jsonb, which no query under RLS could use. - Sessions run with
jit = offandmax_parallel_workers_per_gather = 0.
Security and dependencies
- tokio 1.54.1, hyper 1.12.0, OpenTelemetry 0.33, redb 4.4.0, uuid 1.28.0, serde_json 1.0.154, proptest 1.12.0, flate2 1.1.10.
- fuzz: rustls-webpki 0.103.16 and webpki-root-certs 1.0.10 (RUSTSEC-2026-0382, RUSTSEC-2026-0383).
- rumqttc 0.25.1 vendored with rustls-webpki 0.103.
- The broker image declares the distroless nonroot user (65532); the HFP demo ingester runs as
nobody. - Base images:
rust:1-slimanddistroless/cc-debian13pinned to new digests.
Playground
- Responsive layout for phones, WCAG 2.1 A/AA clean under axe-core.
- Federated callbacks go through the loopback; at most three toasts on screen.
- React 19.3.1, Vite 8.3.5, Vitest 5, jsdom 30, swagger-ui-dist 5.34.
WebAssembly
- The Node shim (
www/node-shim.mjs) forwardsANTARES_TEMPORAL_INSTANCE_LIMITto the wasm broker, likeANTARES_SWEEP_SECSandANTARES_PUBLIC_URL; before, the wasm broker always used the default ceiling.
CI
- Every push to
devruns the pipeline and publishesghcr.io/joinedcontext/antares-broker:devwhen green. - The weekly ThreadSanitizer job runs on
nightly-2026-10-15: from nightly-2026-10-16 (LLVM 23.1.4) every TSan test binary segfaults at startup on arm64. cargo denydrops five advisory ignores the vendored rumqttc no longer needs; the check passes without warnings.
Known issue
- In a multi-pod NATS deployment, a notifier pod stopped mid-delivery can make one notification count twice in
timesSent, and possibly deliver twice (#64). A single broker is not affected.
Antares v0.1.4
docker run --rm -p 9090:9090 ghcr.io/joinedcontext/antares-broker:0.1.4
- deps: rustls 0.23.45 -> 0.23.46 (RUSTSEC-2026-0346..0349)
v0.1.3 was tagged but never released, so its changes ship here:
- docker: runtime on distroless cc-debian13, matching the build stage
- fuzz: rustls 0.23.43 -> 0.23.45 (RUSTSEC-2026-0285)
- fuzz: lockfile follows the workspace's tower-http 0.7, geojson 1, gloo-timers 0.4
- deps: sonic-number 0.1.2 -> 0.1.3
- perf-janitor: schedule off while the Hetzner token is out of service
- docker: distroless/cc-debian12:nonroot to digest 9dac0a7
- deps: gloo-timers 0.3 -> 0.4
- deps: geojson 0.24 -> 1.0
- deps: tower-http 0.6 -> 0.7
- tests: AtomicUsize::try_update over the deprecated fetch_update
- deps: cargo group — async-trait 0.1.92, reqwest 0.13.5, uuid 1.26, hyper 1.11.1, redb 4.3 and 7 more
- docker(wasm): node 22-slim -> 26-slim
- ci: errata-ai/vale-action v2 -> v3
- ci: docker/build-push-action v6 -> v7
- ci: docker/setup-buildx-action v3 -> v4
- ci: actions/setup-node v4 -> v7
- ci: actions/checkout v5 -> v7
- deps(www): source-map-js 1.2.2 (GHSA-68fv-2mgg-jv7q)
- deps(www): vitest 3 -> 5
- deps(www): vite 7 -> 8 with @vitejs/plugin-react 4 -> 6
- deps(www): jsdom 26 -> 30
- deps(www): playground group — react 19.3, @xyflow/react 12.12, swagger-ui-dist 5.33, playwright-core 1.63
- perf-janitor: no HCLOUD_TOKEN, nothing to sweep
- examples: browser step reads demo/pkg, only from a dev bundle
- readme: the suite origin in one sentence
- readme: where the conformance suite comes from
- readme: NGSI-LD conformance count badge in the top row
- readme: unit-test badge in the top row
- readme: per-store ETSI results from the live badges
Antares v0.1.2
- release: v0.1.2
- release: the notes step forces the tag fetch
- readme: the demo line says it twice
- readme: docs and demo on their own lines
- readme: the demo line keeps to the browser
- readme: docs and demo links at the top; the playground drops its author footer
- readme: the quickstart entity is laid out as JSON, and the tenancy bullet keeps to the model
- readme: a docs badge, and tenancy in Why Antares
- docs: the quickstart pulls :latest
- release: image tags carry the bare version, and the image ships with the release
- PR from dev (#25)