Demo images / Build & push demo images (push) Failing after 41s
Regenerates both catalogs from the manifests so the 15 pin bumps become real. The catalog overrides on-disk manifests on every node, so until now those bumps were edited but inert. There are two catalogs and regenerating one is not enough: generate-app-catalog.sh writes releases/app-catalog.json (the signed one nodes fetch), while generate-app-catalog.py writes app-catalog/catalog.json and neode-ui/public/catalog.json (the source pair, the second baked into the frontend app store). check-app-catalog-drift.py --release --strict reads the *source* catalog, so regenerating only the release one left it failing and would have aborted the ISO gate at stage 1 — after the signing and tagging were already done. Drift is now 0. The regeneration also rewrote fips/app_ports.rs, which had not been regenerated since the initial open-source import. Diffing the port values rather than the reformat: 36 -> 37, a single addition, **8187 — Alby Hub**. Its port has never been in the FIPS firewall allow-list, and by the same token neither has any app onboarded since that import. Nothing else changed. Catalog signed by the pinned release root and verified with `ceremony verify`; registry trust floor checked before signing, both hosts trusted by the deployed fleet. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Archipelago App Catalog
Dynamic app catalog for the Archipelago marketplace. Nodes fetch this catalog to discover available apps.
How it works
- The Archipelago frontend fetches
catalog.jsonfrom this repo - Apps listed here appear in every node's app store automatically
- When a user installs an app, the backend pulls the Docker image and creates the container
Adding a new app
Add an entry to catalog.json:
{
"id": "my-app",
"title": "My App",
"version": "1.0.0",
"description": "What it does",
"icon": "/assets/img/app-icons/my-app.svg",
"author": "Author",
"category": "data",
"dockerImage": "source.archipelago-foundation.org/lfg2025/my-app:1.0.0",
"repoUrl": "https://github.com/...",
"containerConfig": {
"ports": ["8080:8080"],
"volumes": ["/var/lib/archipelago/my-app:/data"],
"env": ["NODE_ENV=production"]
}
}
For apps with hardcoded backend configs (Bitcoin, LND, etc.), containerConfig is optional.
For new apps, include containerConfig so the backend knows how to create the container.
Categories
money, commerce, data, home, nostr, networking, community, development, l484