<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://andromeda.skvarc.com/blog/</id>
    <title>Andromeda Blog</title>
    <updated>2026-11-09T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://andromeda.skvarc.com/blog/"/>
    <subtitle>Andromeda Blog</subtitle>
    <icon>https://andromeda.skvarc.com/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[Day one for Andromeda, all of NGSI-LD v1.9.1 in one Rust broker]]></title>
        <id>https://andromeda.skvarc.com/blog/andromeda-is-released/</id>
        <link href="https://andromeda.skvarc.com/blog/andromeda-is-released/"/>
        <updated>2026-11-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Andromeda v1.0, a strict NGSI-LD context broker in Rust that validates semantics and writes history atomically, is out. Here is what it brings.]]></summary>
        <content type="html"><![CDATA[<p>I have been looking forward to writing this for a long time. Andromeda v1.0 is out today, and you can download it, run it and build on it right now.
Andromeda is an open-source context broker for <a class="" href="https://andromeda.skvarc.com/docs/standards/">NGSI-LD</a>, written in Rust. If you have never met a context broker, think of it as the memory of a smart city, a farm or a factory. Sensors, services and people tell it what they know, and everyone else can ask it questions or ask to hear when something changes. NGSI-LD is the European standard for how that conversation goes, and Andromeda implements all of it, the whole v1.9.1 API (ETSI GS CIM 009), every resource and every method.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-you-get">What you get<a href="https://andromeda.skvarc.com/blog/andromeda-is-released/#what-you-get" class="hash-link" aria-label="Direct link to What you get" title="Direct link to What you get" translate="no">​</a></h2>
<p>The whole of v1.9.1 is there, from batch operations and geoqueries to distributed operations through context source registrations, Snapshots and EntityMaps. Notifications go out over HTTP and MQTT, with durable delivery and retries.</p>
<p>Temporal history is written atomically, in the same transaction as each change, and lives in the same PostgreSQL database, so the current state and its history always agree, and there is no separate history service to run. Numbers stay exact decimals, and timestamps keep their microseconds.</p>
<p>Each tenant gets a PostgreSQL database of its own. Andromeda speaks HTTP/1.1, HTTP/2 and HTTP/3, serves Prometheus metrics and health probes on a separate management port, maintains and repacks its own tables online, and works behind PgBouncer when you have many tenants.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-it-needs">What it needs<a href="https://andromeda.skvarc.com/blog/andromeda-is-released/#what-it-needs" class="hash-link" aria-label="Direct link to What it needs" title="Direct link to What it needs" translate="no">​</a></h2>
<p>Andromeda is one program talking to one PostgreSQL database, with PostGIS for places and TimescaleDB for history, and that is all you have to keep running. Two container images ship with the release, the broker itself and a PostgreSQL server with both extensions already installed. The <a class="" href="https://andromeda.skvarc.com/docs/getting-started/installation/docker/">Docker page</a> lists their tags.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="strict-and-it-tells-you-why">Strict, and it tells you why<a href="https://andromeda.skvarc.com/blog/andromeda-is-released/#strict-and-it-tells-you-why" class="hash-link" aria-label="Direct link to Strict, and it tells you why" title="Direct link to Strict, and it tells you why" translate="no">​</a></h2>
<p>Andromeda checks every request against the semantics of NGSI-LD, not only its syntax. When something does not fit, it says no, and the answer names the field and the rule it broke.</p>
<p>If your client grew up with a more forgiving broker, you may see a few <code>400</code> answers at first. Each one points at what to change, and it is far nicer to find that on day one, while you are still looking, than months later in production. The <a class="" href="https://andromeda.skvarc.com/docs/behaviour/strictness/overview/">strictness</a> pages go through each case.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="decisions-written-down">Decisions written down<a href="https://andromeda.skvarc.com/blog/andromeda-is-released/#decisions-written-down" class="hash-link" aria-label="Direct link to Decisions written down" title="Direct link to Decisions written down" translate="no">​</a></h2>
<p>A broker makes many small decisions, and most of them only matter on the day something looks wrong. I have tried to write every one of them down in the <a class="" href="https://andromeda.skvarc.com/">documentation</a>, so on that day you can look it up instead of guessing or reading the source.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="open-for-everyone">Open for everyone<a href="https://andromeda.skvarc.com/blog/andromeda-is-released/#open-for-everyone" class="hash-link" aria-label="Direct link to Open for everyone" title="Direct link to Open for everyone" translate="no">​</a></h2>
<p>Andromeda is built in Slovenia and released under the <a href="https://eupl.eu/" target="_blank" rel="noopener noreferrer" class="">European Union Public Licence v. 1.2</a> (EUPL-1.2). Use it, read it, change it, and if you improve it, I would love to see how.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="speed">Speed<a href="https://andromeda.skvarc.com/blog/andromeda-is-released/#speed" class="hash-link" aria-label="Direct link to Speed" title="Direct link to Speed" translate="no">​</a></h2>
<p>I built Andromeda to be fast, and I believe it is. Requests are decoded straight into typed values, the database schema is shaped around the way NGSI-LD reads and writes, and every query runs against indexes built for it. In testing so far it performs very well.</p>
<p>Published figures will come with a benchmark suite that anyone can run and check, covering many workloads at many sizes. Until then, the best test is your own data at the volume you expect. If something is slow, tell me with the request and the size of the data. A slow case is treated as a bug, and the <a class="" href="https://andromeda.skvarc.com/docs/benchmarks/">benchmarks</a> page explains how to measure one.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="try-it">Try it<a href="https://andromeda.skvarc.com/blog/andromeda-is-released/#try-it" class="hash-link" aria-label="Direct link to Try it" title="Direct link to Try it" translate="no">​</a></h2>
<p>The quickest way in is <a class="" href="https://andromeda.skvarc.com/docs/getting-started/installation/docker/">Docker</a>, where one Compose file brings up the broker and its database. If you prefer to build it yourself, <a class="" href="https://andromeda.skvarc.com/docs/getting-started/installation/source/">build from source</a> walks you through it. Either way, the <a class="" href="https://andromeda.skvarc.com/docs/getting-started/quickstart/">quickstart</a> then takes you from your first entity to your first notification.</p>
<p>When you are ready to run it for real, the <a class="" href="https://andromeda.skvarc.com/docs/deployment/setup/deployment-planner/">deployment planner</a> asks a few questions about your deployment and writes <code>andromeda.toml</code>, a Compose file, the proxy and PostgreSQL settings, and the steps to run them. It checks a configuration you already have, too, without anything leaving your browser.</p>
<p>Would you rather get to know the ideas first? Start with the <a class="" href="https://andromeda.skvarc.com/">introduction</a>, then wander into the <a class="" href="https://andromeda.skvarc.com/docs/guides/">guides</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="thank-you">Thank you<a href="https://andromeda.skvarc.com/blog/andromeda-is-released/#thank-you" class="hash-link" aria-label="Direct link to Thank you" title="Direct link to Thank you" translate="no">​</a></h2>
<p>To everyone who read an early draft, filed an issue, or asked a question that made me explain something better, thank you. Projects like this grow in small conversations as much as in code.</p>
<p>If Andromeda helps you, or if it gets in your way, I would like to hear about it. Open an issue, start a discussion, or just say hello. Today is day one, and there is a lot I want to build with you.</p>]]></content>
        <author>
            <name>Matej Škvarč</name>
        </author>
        <category label="Release" term="Release"/>
        <category label="NGSI-LD" term="NGSI-LD"/>
    </entry>
</feed>