A topology and health canvas for event-driven systems.
Four discovery plugins — yaml, kubernetes, kafka,
connect — fold into one graph under a configured precedence, three of them also
reporting health on their own cadence. You declare the edges nothing can observe; Nodqora
observes the rest and joins the two.
It runs on your own infrastructure, reads only, and is Apache-2.0.
Docker with Compose v2, and nothing else — no JDK and no clone.
curl -LO https://github.com/nodqora/nodqora/releases/latest/download/compose.yaml
mkdir -p config topology
docker compose up -d
Then open http://localhost:8080, which will tell you that no environments are
configured. That is a working install: the image ships zero environments on purpose, because a
baked-in one could be overridden by your config but never removed. Declare one in
./config/application.yaml and restart:
nodqora:
environments:
homelab:
display-name: Homelab
plugins:
kubernetes:
namespaces: [n8n, monitoring, actual]
The full route — upgrades and the backup they require, pointing at a PostgreSQL you already run, what the image bundles, troubleshooting — is in docs/install.md.
Health carries five values, and only three of them are ordered.
HEALTHY < DEGRADED < UNHEALTHY is a severity order.
UNKNOWN is an abstention and DISABLED is judgement suspended; neither
sits anywhere on that scale, and neither is averaged into a parent.
Alongside health, every plugin reports an outcome. Health says what we found; outcome says how well we looked. A failed poll leaves the last reading standing and says so, rather than turning a node green or red on evidence nobody gathered.
The same rule holds at the edges of the map. A node no plugin claimed is grey and labelled as such, not absent. An environment whose plugins are all misconfigured renders the declared topology with banners saying nothing observed it — which is the honesty layer working, not a broken install.
Three GETs, unversioned, unenveloped, read-only.
GET /api/meta
GET /api/environments/{envKey}/graph
GET /api/environments/{envKey}/state
Nodqora observes; it does not serve traffic. Nothing in your estate stops when Nodqora stops, and nothing it writes reaches your clusters, brokers or connectors.
v0.1.1 is the first published release. All five implementation slices are merged: the four plugins, the fold, health end-to-end and the honesty layer. The reference pipeline renders at 10 nodes and 9 edges in production, 7 and 6 in staging, and the build asserts those numbers against the document that specifies them.
It is a first release and it is young. No test in the suite reaches a real cluster, broker or Connect worker — every plugin's outbound seam is exercised against a recording — so "the client cannot start" is a class of defect only running against real infrastructure will find. Defects of exactly that kind have been found and fixed by running it against a live pipeline.
There is one edition: Community, Apache-2.0. Nothing is for sale, and nothing on this site can be bought.
Nodqora is built open core, so a paid edition is intended eventually. It does not exist, and the line between the two is not being advertised while there is nothing on the other side of it. Two commitments hold regardless: no capability shipped in Community ever becomes paid, and the Community edition stays Apache-2.0 and self-hostable.
Where that line is drawn, and why each capability falls where it does, is recorded in the repository — docs/editions.md — along with the roadmap status that says how much of it is built.
Apache-2.0. Source, decisions and issue tracker: github.com/nodqora/nodqora. Every design decision is an ADR in the repository, and the domain model they describe is in CONTEXT.md.
Contributions take a DCO sign-off and there is no CLA.
For the Apache-2.0 edition, open an issue. That is the whole channel: support is public, so there is no support email and no private channel, and every answer is where the next person will find it. Nothing is promised about how fast — in practice every issue gets read.
That is the only support channel there is. There is no paid edition, so there is no paid support to buy alongside it.