b520bd1825
The builder's workspace is a same-path bind, so sibling builds see the clone
jschoubben2026-09-16 16:02:26 +02:00
065ddd6d69
gitea provides the package registry; the builder gets its npm credential
jschoubben2026-09-16 10:27:26 +02:00
abcba14edd
Review: four manifests said something stale or nothing at all
jschoubben2026-09-15 22:03:33 +02:00
1cb33732f2
Move amqp-ping's source, so the mesh has something to notice
jschoubben2026-09-15 21:03:43 +02:00
71bbc7dab0
Name the two modules after their software: nftables and distribution
jschoubben2026-09-15 20:51:00 +02:00
bf1f67a485
listens names the port the software uses; serves is the mesh's to fill
jschoubben2026-09-15 12:59:00 +02:00
9a41add136
showcase: a module that exercises everything a module can be
jschoubben2026-09-15 12:58:30 +02:00
c4e3ebee86
Move amqp-ping's source, so the mesh has something to notice
jschoubben2026-09-15 01:42:57 +02:00
d2dce34716
The catalogue asks on start, and registers a replay as history
jschoubben2026-09-15 01:26:58 +02:00
4aa54fbbe0
Move amqp-ping's source, so the mesh has something to notice
jschoubben2026-09-14 23:42:52 +02:00
e0c92195d4
The builder names the registry by loopback until there is a certificate
jschoubben2026-09-14 22:38:05 +02:00
af1e3afa49
amqp-ping declares a broker secret it never mounts
jschoubben2026-09-14 21:20:48 +02:00
c61c7f74f9
Convert lavinmq: it is not only a broker, so it has to be built
jschoubben2026-09-14 21:05:10 +02:00
030509558c
Name the registry where every machine can reach it, not where the builder stands
jschoubben2026-09-14 21:00:48 +02:00
680b91546c
Migrate audit-logger: it builds itself now
jschoubben2026-09-14 12:58:30 +02:00
071afc1e2c
Merge pull request 'Modules compile in the toolchain and ship on the runtime' (#22) from feat/build-and-run-are-two-images into main
jschoubben2026-09-14 02:02:42 +02:00
cf116a4932
Modules compile in the toolchain and ship on the runtime
jschoubben2026-09-14 01:57:06 +02:00
5ea88b149b
The three modules name their base rather than pinning a copy of it
jschoubben2026-09-13 23:53:22 +02:00
720e3706b2
Merge pull request 'The catalogue holds the module graph, and the modules that make it build themselves' (#21) from feat/the-catalogue-module into main
jschoubben2026-09-13 11:17:10 +02:00
729582cc55
Remove what was only there to move a commit
jschoubben2026-09-13 11:15:33 +02:00
21ad008879
Stale means the artifact moved, not the commit
jschoubben2026-09-13 02:48:21 +02:00
87243bc524
Every module stands on a base the mesh built
jschoubben2026-09-13 02:45:37 +02:00
1d0d9a3894
Name the module in its own runtime, and move the artifact with it
jschoubben2026-09-13 01:58:48 +02:00
358c7d5a2d
Move postgres's commit, to watch the mesh roll it out by itself
jschoubben2026-09-13 01:57:00 +02:00
d5300120d6
Move amqp-ping's commit, to see what the catalogue announces
jschoubben2026-09-13 01:49:48 +02:00
c80d9d0f7c
The graph holds what a module declares, not only what it was built on
jschoubben2026-09-13 01:44:56 +02:00
2d2ca80e3b
Index the edge after the column that carries it exists
jschoubben2026-09-13 01:41:23 +02:00
f15c814145
A build edge names an artifact, because that is what the builder can see
jschoubben2026-09-13 01:37:51 +02:00
9387f8b040
A module that listens is served, not run
jschoubben2026-09-13 01:30:39 +02:00
c774d5dbe0
Install the postgres client the way the runtime base can
jschoubben2026-09-13 01:28:15 +02:00
6ebf51d312
postgres's runtime carries the client it provisions through
jschoubben2026-09-13 01:26:23 +02:00
594295f009
The catalogue restarts when its database credentials change
jschoubben2026-09-13 01:22:38 +02:00
f7d57e9556
The catalogue brings its own postgres driver
jschoubben2026-09-13 01:16:23 +02:00
e742b6a569
The catalogue builds its own runtime, and postgres serves its tools
jschoubben2026-09-13 01:13:43 +02:00
d6c9c8d666
postgres builds its own runtime, like any other module
jschoubben2026-09-13 01:10:45 +02:00
2a6fed6f4f
The builder is told the mesh's name for the machine it runs on
jschoubben2026-09-13 01:07:37 +02:00
81a80c675c
The builder declares what it announces
jschoubben2026-09-13 00:57:41 +02:00
39631d6f87
amqp-ping says what it is made of, and can be built from its own directory
jschoubben2026-09-13 00:52:57 +02:00
a73cb8a2f8
The catalogue, as a module that owns the module graph
jschoubben2026-09-12 23:16:05 +02:00
a4d10341e7
Declare what hello-web is made of, to prove a build from a path
jschoubben2026-09-12 16:57:18 +02:00
5f76e34994
Add the builder as a module, so the mesh can be given one
jschoubben2026-09-12 16:45:59 +02:00
5aacd2538b
mesh-control: the enrolment endpoint is the substrate's, not the overlay's
jschoubben2026-09-11 11:48:51 +02:00
2c322cb2fb
mesh-control: the control plane could not read its own connections
jschoubben2026-09-11 11:38:28 +02:00
290be37a93
step-ca: mount the directory, not each secret file
jschoubben2026-09-11 08:49:55 +02:00
0d2c2dd989
minio: pin the manifest these machines can actually run
jschoubben2026-09-11 02:51:34 +02:00
9ff320ecca
Pin the operator's own images by digest, as every other image already is
jschoubben2026-09-11 01:06:14 +02:00
4a1c5ac817
The artifact store requires nothing, because at genesis there is nothing
jschoubben2026-09-11 00:06:23 +02:00
71f8012c5b
The control plane as an ordinary module
jschoubben2026-09-10 23:43:07 +02:00
16b4dc9ab9
step-ca: certify the machine the mesh reaches it at
jschoubben2026-09-10 21:12:48 +02:00
d9fbc72565
step-ca: give the CA's own secret material to the uid the CA runs as
jschoubben2026-09-10 20:57:58 +02:00
43ca9c9c73
Give every module that would overflow its login a short slug
jschoubben2026-09-10 20:57:45 +02:00
08be6683b6
route labels: nextcloud is 'drive' (real hostname), novox.be is the apex '@'
jschoubben2026-09-10 00:27:25 +02:00
6a84e97e53
Merge pull request 'module fixes from the whole-mesh dry-run: fail2ban capability + tool-runtime credential wiring' (#20) from feat/module-cred-fixes into main
jschoubben2026-09-08 18:45:24 +02:00
5973d41966
umami: read the admin password from its mounted secret file
jschoubben2026-09-08 18:43:48 +02:00
75fb16bbfb
fail2ban: require the firewall capability, not the non-existent intrusion-preventionjschoubben2026-09-08 18:27:34 +02:00
e0456746c3
Merge pull request 'local model: an ollama provider + a local-model consumer (ADR 0055)' (#19) from feat/local-model into main
jschoubben2026-09-07 05:26:02 +02:00
29fe7c5bd0
local model: an ollama provider + a local-model consumer (ADR 0055)
jschoubben2026-09-07 05:25:21 +02:00
b33f9b14c7
Merge pull request 'openai-consumer: the static-key model-access consumer (ADR 0050)' (#18) from feat/openai-access into main
jschoubben2026-09-07 04:25:56 +02:00
4cc1b976f5
Merge pull request 'model-usage: the vendor-neutral usage store (ADR 0054)' (#17) from feat/usage-store into main
jschoubben2026-09-07 04:08:21 +02:00
e8c3ea8979
model-usage: the vendor-neutral usage store (ADR 0054)
jschoubben2026-09-07 04:07:26 +02:00
bfbdf90496
Merge pull request 'anthropic model-access: manager + consumer modules' (#16) from feat/anthropic-module into main
jschoubben2026-09-07 02:48:51 +02:00
19666ff054
anthropic-manager: seal over audited tweetnacl-sealedbox-js, not a hand-transcribed NaCl
jschoubben2026-09-07 02:17:37 +02:00
4c98bee043
anthropic-manager: seal the refresh token to the node key, do no crypto to open
jschoubben2026-09-07 01:55:19 +02:00
cd46d53464
Merge pull request 'lavinmq: a user-facing AMQP provider (vhost-per-login)' (#15) from feat/convert-lavinmq into main
jschoubben2026-09-06 23:21:27 +02:00
090a839d42
Merge pull request 'route-proxy: the native ingress module (drop traefik)' (#14) from feat/route-proxy-module into main
jschoubben2026-09-06 15:17:21 +02:00
89254ef2c8
hello-web: add slug so its identity fits the 20-char backend bound (ADR 0049)
jschoubben2026-09-06 15:16:56 +02:00
9dbbfbb5b4
Merge pull request 'fix: postgres consumers connect to the mesh-named db (the login), not a hardcoded name' (#13) from fix/consumer-db-name into main
jschoubben2026-09-06 13:47:34 +02:00
d301e05794
fix: postgres consumers connect to the db the mesh named (the login), not a hardcoded app name
jschoubben2026-09-06 13:47:16 +02:00
dc12df18b4
Merge pull request 'fix: DB/cache/store providers must serve their port (migration blocker)' (#12) from fix/db-provider-serves-port into main
jschoubben2026-09-06 03:31:50 +02:00
1f0c3ac69e
fix: db/cache/store providers must serve their port; drop baserow's empty redis contribution
jschoubben2026-09-06 02:38:22 +02:00
dba4554002
Merge pull request 'Convert confluence + jira on the tools-only template' (#11) from feat/convert-atlassian into main
jschoubben2026-09-06 01:54:51 +02:00
db8b60f4e4
Convert confluence and jira into nox catalog modules
jschoubben2026-09-06 01:49:22 +02:00
2c3f241010
Merge pull request 'Convert gitlab — the tools-only external-SaaS exemplar (23 tools, lab-proven)' (#10) from feat/convert-gitlab into main
jschoubben2026-09-06 01:40:31 +02:00
7eb156a82a
Convert gitlab into a tools-only mesh catalog module
jschoubben2026-09-06 01:33:43 +02:00
09b140fe86
Merge pull request 'Convert baserow, letta, invoicing (DB/S3 consumers)' (#9) from feat/land-db-consumers into main
jschoubben2026-09-06 01:14:30 +02:00
8b82e47889
invoicing: point app/api at the real registry host
jschoubben2026-09-06 01:14:08 +02:00
515b1e79c7
Convert baserow, letta, invoicing to mesh catalog DB consumers
jschoubben2026-09-05 23:27:04 +02:00
3b5f214f3d
Merge pull request 'mosquitto: run-once dynsec bootstrap + fix the exit-0-on-failure provisioner' (#8) from feat/mosquitto-bootstrap into main
jschoubben2026-09-06 01:06:08 +02:00
e58cbc1c46
mosquitto: don't read a rejected dynsec command as success
jschoubben2026-09-06 00:57:45 +02:00
ec1e7189a3
mosquitto: seed dynsec with a run-once bootstrap before the broker
jschoubben2026-09-06 00:33:28 +02:00
eb5cf65be3
Merge pull request 'Servarr events entrypoints don't crash the runtime when unconfigured' (#7) from fix/arr-events-guard into main
jschoubben2026-09-05 23:14:43 +02:00
419dd68145
Servarr events: don't crash the runtime when unconfigured
jschoubben2026-09-05 23:13:56 +02:00
50eb1e6f02
Merge pull request 'Media modules access the shared library, they do not own it (ADR 0051)' (#6) from feat/media-access-not-ownership into main
jschoubben2026-09-05 22:48:16 +02:00
69c8a5edf8
media stack: the shared library is accessed, not owned
jschoubben2026-09-05 22:14:33 +02:00