Open Source Village

Changelog

Every change to this belfry: the code it runs and what was changed on the server, with who started each change. Settings are named, never their values.

4 November 2026

server Homepage published from site
started by Xavier via the Belfry website agent · 12:03 UTC
website Website published from the server by Xavier via the Belfry website agent.
12:03 UTC
code Merge branch 'belfry-console' into belfry-sh e84996b
started by Xavier Damman · 13:03 UTC
code belfry apply on little disk: rebuild an image only when its sources changed 9a3a61a
started by Xavier Damman, Claude Opus 5.5 · 13:02 UTC
code Blossom accepts web files (HTML, CSS, JS, JSON, fonts, …) for nsites, kept 5 years 3cbe3f6
started by Xavier Damman, Claude Opus 5.5 · 13:02 UTC
server Settings changed: COMMUNITY_NAME, COMPANY_NAME, MAIL_FROM, ADMIN_NETS, CUSTODY_SEED_DIR, HOMEPAGE
started by Xavier via the Belfry website agent · 11:41 UTC
code belfry apply: with little disk, build one image at a time and empty the build cache after each 2e9d822
started by Xavier Damman, Claude Opus 5.5 · 12:40 UTC
code install.sh: new belfries show their own website (HOMEPAGE=nsite), a placeholder until published 8833685
started by Xavier Damman, Claude Opus 5.5 · 12:39 UTC
code belfry.<domain>: overview, status, members by e-mail, website approvals; placeholder homepage b894e6a
started by Xavier Damman, Claude Opus 5.5 · 12:38 UTC
code DEPLOY: the git server is prebuilt too 9415cc7
started by Xavier Damman, Claude Opus 5.5 · 12:29 UTC
code Prebuilt images: the git server (ngit-grasp) too 6e988ab
started by Xavier Damman, Claude Opus 5.5 · 12:29 UTC
code belfry: record changes in the changelog, belfry homepage publish|status 9817181
started by Xavier Damman, Claude Opus 5.5 · 12:17 UTC
code Community pages every belfry serves: /proposals, /monitor, /changelog 97cd8ac
started by Xavier Damman, Claude Opus 5.5 · 12:15 UTC
code Community homepage on the apex: start page, a proxy to the website, or an nsite (NIP-5A) c3302ba
started by Xavier Damman, Claude Opus 5.5 · 12:07 UTC
code NEXT_STEPS §3zu: git server deployed on belfry.tofauti.net, smoke green 4f1e29c
started by friedger, Claude Opus 5.5 · 12:01 UTC
code Prebuilt images on GHCR: the signer, proxy, groups relay and onboarding service a09a85c
started by Xavier Damman, Claude Opus 5.5 · 11:58 UTC
code Git server for agents: ngit-grasp at git.<domain>, members are the active passes af98fe8
started by friedger, Claude Opus 5.5 · 11:51 UTC
code install.sh: say where it stopped, quieter apt and Docker install; disk sizes from a real run c8aafd4
started by Xavier Damman, Claude Opus 5.5 · 11:51 UTC
code install.sh: Caddy on 80/443 by default, nginx only with --nginx c4fdee2
started by Xavier Damman, Claude Opus 5.5 · 11:45 UTC
code One-command install: curl -fsSL https://belfry.sh/install.sh | sudo bash 51a6aa9
started by Xavier Damman, Claude Opus 5.5 · 11:37 UTC

1 November 2026

code Fewer onboarding screens for outside apps: Keycast 0021, Village Notes signs in by itself f0c1642
started by friedger, Claude Opus 5.5 · 14:08 UTC
code Merge github/main: PR #1 (belfry-event allows any kind) e7fd146
started by friedger, Claude Opus 5.5 · 14:07 UTC
code Merge PR #1: Keycast policy belfry-event: allow any kind ea4a407
started by Friedger · 14:07 UTC
code Signed in on the way back to the app: the welcome page signs in and ends at return_url cb934c4
started by friedger, Claude Opus 5.5 · 13:55 UTC
code test_nip46check: ruff format (the padding table one tuple per line) f1fb532
started by friedger, Claude Opus 5.5 · 13:38 UTC
code Pass order API: payment_url straight to Mollie's checkout, return_url back to the app 528de41
started by friedger, Claude Opus 5.5 · 12:55 UTC
code Keycast policy belfry-event: allow any kind 2001790
started by Xavier Damman, Claude Opus 5.5 · 08:59 UTC
code Invite codes from an app: /api/invites without an e-mail, Village Notes "Invite someone" eb3743d
started by friedger, Claude Opus 5.5 · 00:56 UTC
code Sign-out back to the app, no "Stay signed in?" step, branded Keycast pages for outside apps ef04e28
started by friedger, Claude Opus 5.5 · 00:06 UTC

31 October 2026

code feat: add signin with email 48e10ba
started by friedger · 23:48 UTC
code Internal invoices numbered as orders (ORD/) when another organisation invoices the tickets 8c6dca9
started by friedger, Claude Opus 5.5 · 20:04 UTC
code Plan snapshot note: rev 90, tickets invoiced by XL Collective (§3zq) da41674
started by friedger, Claude Opus 5.5 · 10:25 UTC
code Tickets booked at the seller's Odoo: invoice, payment and credit note over JSON-2 925fc47
started by friedger, Claude Opus 5.5 · 10:09 UTC
code Village notes: an example app on a Belfry (invite, bunker sign-in, tokens, notes) 59d71c0
started by friedger, Claude Opus 5.5 · 09:16 UTC

30 October 2026

code Agent command: one action per call through the holder's bunker (me, invite, invites, status, revoke) d8c981b
started by friedger, Claude Opus 5.5 · 23:56 UTC
code COMMUNITY_NAME quoted in .env.example: bootstrap sources .env, and the unquoted space broke it 88c73b6
started by friedger, Claude Opus 5.5 · 23:31 UTC
code E-mail code for an app's own key: /api/email-code binds the key to the address in Odoo 9231001
started by friedger, Claude Opus 5.5 · 16:01 UTC
code Bootstrap accepts Stripe restricted keys (rk_test_, rk_live_); DEPLOY.md lists their permissions 1a04fd5
started by friedger, Claude Opus 5.5 · 15:35 UTC
code Apps connect to a Belfry: /.well-known/belfry.json, /api/me, CORS, steward skill 87865ce
started by friedger, Claude Opus 5.5 · 15:35 UTC
code NEXT_STEPS §3zn: deployed to both servers, smoke 220 ok on each 041d100
started by friedger, Claude Opus 5.5 · 13:38 UTC
code Blossom gate keeps the public proxy's X-Forwarded-Proto: blob URLs are https again a540371
started by friedger, Claude Opus 5.5 · 13:18 UTC
code Smoke 6w: the smoke steward leaves the stewards group again 3737762
started by friedger, Claude Opus 5.5 · 13:08 UTC
code Agents act for a pass holder through a bunker; stewards get a free pass 847e0a0
started by friedger, Claude Opus 5.5 · 13:07 UTC

28 October 2026

code Fresh install on a server: bootstrap waits for Issuer2's own metadata; ADMIN_NETS before bootstrap 85b5051
started by friedger, Claude Opus 5.5 · 15:30 UTC
code Short names for the participant apps: <domain>/chat and others redirect to their hosts ba5a58f
started by friedger, Claude Opus 5.5 · 15:30 UTC
code Pass API and agent skill: an agent orders a pass from an invite on a visitor's behalf e2a0ce6
started by friedger, Claude Opus 5.5 · 09:01 UTC

27 October 2026

code Encrypted OpenID4VP responses (direct_post.jwt) for the door and pass sign-in: Talao presents the pass 4c90785
started by friedger, Claude Opus 5.5 · 17:46 UTC
code Sign-in code next to the magic link: a 6-digit code in the same mail, for devices without the mailbox 68ee49e
started by friedger, Claude Opus 5.5 · 17:46 UTC
code CLAUDE.md: refer to NEXT_STEPS, the slice contract and the plan snapshot by path, not as imports fbac39c
started by friedger, Claude Opus 5.5 · 17:46 UTC
code NEXT_STEPS: Belfry registered at the EUDI Launchpad registrar 5c72549
started by friedger, Claude Opus 5.5 · 16:54 UTC
code NEXT_STEPS: EUDI registrar section is §3zk (§3zj is the sign-in code) aa221e0
started by friedger, Claude Opus 5.5 · 16:41 UTC
code EUDI reference wallet: signed issuer metadata, registrar certificates for issuer and verifier f34c57c
started by Claude, Claude Opus 5.5 · 15:32 UTC

26 October 2026

code Programme: a Shifts tab for volunteers and stewards 851868f
started by friedger, Claude Opus 5.5 · 16:51 UTC
code Groups: Flotilla on a NIP-29 relay (zooid); every participant can open a group 36e89e1
started by friedger, Claude Opus 5.5 · 16:45 UTC
code Volunteers: a two-week pass earned with three shifts; shifts in Odoo, a personal shift page, steward pages eb36064
started by friedger, Claude Opus 5.5 · 16:44 UTC
code Applications: <domain>/apply, answered with an invite or a friendly no on the steward pages a7155b2
started by friedger, Claude Opus 5.5 · 15:41 UTC
code Sign-up journey from the user test: invites wait for payment, VAT, real invoices, welcome page, mail to apps 028aec9
started by friedger, Claude Opus 5.5 · 15:36 UTC
code Photos: no more black uploads f96efbd
started by friedger, Claude Opus 5.5 · 11:27 UTC
code Sign-in: the account page's button goes straight to the e-mail sign-in; no avatars 755ff5e
started by friedger, Claude Opus 5.5 · 10:53 UTC
code Programme review follow-ups: calendar filters under the relay's cap, retries 36ae07b
started by friedger, Claude Opus 5.5 · 04:44 UTC
code Programme: page past the relay's cap, word search, titles only for bookings 9f7ad55
started by friedger, Claude Opus 5.5 · 04:39 UTC
code NEXT_STEPS: polls on Nostr deployed 52733d9
started by friedger, Claude Opus 5.5 · 04:35 UTC
code Polls on Nostr: public relay hint, smoke checks, docs ee55af5
started by friedger, Claude Opus 5.5 · 04:29 UTC
code Polls on Nostr: an announcement when a poll opens, the result when it closes a0f91af
started by friedger, Claude Opus 5.5 · 04:25 UTC
code NEXT_STEPS: programme app complete and deployed d2f26a5
started by friedger, Claude Opus 5.5 · 03:53 UTC
code Programme app: phone navigation, search, reminders, offline, polls per session 58085bd
started by friedger, Claude Opus 5.5 · 03:42 UTC
code NEXT_STEPS: programme app deployed on the test VM 4eebd3e
started by friedger, Claude Opus 5.5 · 03:04 UTC
code Programme app: announce, edit and cancel your own session f390a2f
started by friedger, Claude Opus 5.5 · 02:36 UTC

25 October 2026

code Programme app: what is on now, RSVPs, comments and photos per session 38c531b
started by friedger, Claude Opus 5.5 · 23:43 UTC
code Calendar on phones: square mark, date on one line, day view first ec88ae9
started by friedger, Claude Opus 5.5 · 23:43 UTC
code Wallet: send to someone from the directory, receive by QR, clearer history 36349e3
started by friedger, Claude Opus 5.5 · 18:16 UTC
code Wallet: the pass's tokens arrive on sign-in; no Lightning address settings 07b0587
started by friedger, Claude Opus 5.5 · 17:11 UTC
code Programme and room bookings as public calendar events 6a4a1fa
started by friedger, Claude Opus 5.5 · 16:21 UTC
code Invoice page: no salesperson for participants (the onboarding service's user) 82ff200
started by friedger, Claude Opus 5.5 · 16:17 UTC
code Invoice and payment pages link to Belfry, not to Odoo 571d088
started by friedger, Claude Opus 5.5 · 16:08 UTC
code Branded error pages: proxy, onboarding service, Odoo 68262dd
started by friedger, Claude Opus 5.5 · 15:51 UTC
code Share preview: Open Source Village instead of "Odoo" for invite links 056d6da
started by friedger, Claude Opus 5.5 · 15:29 UTC
code zerotier.sh dns: no forwarded AAAA for the domain (the public IPv6 would bypass ZeroTier) dce21e8
started by friedger, Claude Opus 5.5 · 15:20 UTC
code Admin network DNS: dnsmasq on the VM's ZeroTier address 9eb35ea
started by friedger, Claude Opus 5.5 · 15:20 UTC
code Wallet: the participant's own signer, seed and nutzap key in an encrypted backup on the relay f039d2a
started by friedger, Claude Opus 5.5 · 11:11 UTC
code Join with an own Nostr key: proof on the invite page, keyless signer account at activation 28ce1a7
started by friedger, Claude Opus 5.5 · 11:03 UTC
code NEXT_STEPS: iDEAL and Bancontact are enabled in the Mollie account cdeeb9f
started by friedger, Claude Opus 5.5 · 10:16 UTC
code NEXT_STEPS: the verifier kept a stale status list beyond its TTL 2d707da
started by friedger, Claude Opus 5.5 · 10:16 UTC
code Status list: indexes above the highest in use stay valid 6c1f8af
started by friedger, Claude Opus 5.5 · 10:06 UTC
code Smoke: follow the start page's forward; the test-run notice on Odoo's invite page; tester notes: the November test window 16cd2fc
started by friedger, Claude Opus 5.5 · 10:05 UTC
code Start page at the apex, invites from participants, feedback page, test-run notice 0082ac4
started by friedger, Claude Opus 5.5 · 09:25 UTC
code NEXT_STEPS: the user's open to-dos (Mollie methods and key, old backups, venue IPv4) 1cbd867
started by friedger, Claude Opus 5.5 · 08:59 UTC
code NEXT_STEPS: the test VM's fresh install (Belgium, EUR, new keys) 3305775
started by friedger, Claude Opus 5.5 · 08:46 UTC
code bootstrap: offer only the Mollie payment methods the Mollie account has enabled 5a7343f
started by friedger, Claude Opus 5.5 · 08:44 UTC
code Fresh Odoo database in the company's country (BE, EUR); status list valid only for active passes 97047cd
started by friedger, Claude Opus 5.5 · 08:30 UTC
code Blueprints: no placeholder fallback for client secrets 4ba88f2
started by friedger, Claude Opus 5.5 · 08:29 UTC
code Secrets as files instead of environment variables; Docker hardening 9f4fc10
started by friedger, Claude Opus 5.5 · 08:03 UTC
code Mollie: a pending refund revokes the pass; rate limits for the venue WiFi eb5f277
started by friedger, Claude Opus 5.5 · 08:00 UTC
code odoo.conf carries a PBKDF2 hash of the master password, not the password 2a046d4
started by friedger, Claude Opus 5.5 · 07:32 UTC
code Default avatars from the key; Mollie next to Stripe with refunds and chargebacks 4a1849d
started by friedger, Claude Opus 5.5 · 07:09 UTC
code Stripe from bootstrap: Odoo's provider from STRIPE_PUBLISHABLE_KEY and secrets/stripe_secret_key, both webhooks 24d6afe
started by friedger, Claude Opus 5.5 · 00:08 UTC
code Reports and moderation: a Report link in the directory, market and photos, steward handling 3fe4edb
started by friedger, Claude Opus 5.5 · 00:07 UTC
code Privacy notice, terms, refund policy, community rules, help on pass.<domain>; event-day runbook 028abc6
started by friedger, Claude Opus 5.5 · 00:05 UTC

24 October 2026

code Sync workflow: actions/checkout@v5 (runs on Node.js 24; v4's Node.js 20 is deprecated) 0b73a07
started by friedger, Claude Opus 5.5 · 23:49 UTC
code DEPLOY: reload the proxy after a Caddyfile change (the directory is mounted) ea4a914
started by friedger, Claude Opus 5.5 · 23:47 UTC
code Docs for readers new to the project: current state only, a docs index, the pass sign-in bridge 22dab0d
started by friedger, Claude Opus 5.5 · 23:47 UTC
code Wallet: Geist from the image instead of Inter from Google Fonts (patch 0006) da39c7f
started by friedger, Claude Opus 5.5 · 23:15 UTC
code NEXT_STEPS 3x: hardening and the admin network; plan snapshot notes rev 75 3e7f13f
started by friedger, Claude Opus 5.5 · 23:15 UTC
code zerotier.sh: ADMIN_NETS includes the VM's own public addresses 6092480
started by friedger, Claude Opus 5.5 · 23:13 UTC
code chore: add github workflow bb7391e
started by friedger · 22:57 UTC
code Hardening: rate limits, per-account magic-link limit, CSP, non-root containers, split networks, no Mailpit in production, admin pages over ZeroTier only bd9c9ec
started by friedger, Claude Opus 5.5 · 22:56 UTC
code The pass on the phone without a wallet: /me shows a renewing QR, /check at the door 32f17f8
started by friedger, Claude Opus 5.5 · 22:21 UTC
code Mobile, second pass: dashboard, header, wallet buttons, button rows (Keycast 0016, wallet 0005) dcf13eb
started by friedger, Claude Opus 5.5 · 21:07 UTC
code Mail sender: prod-env.sh keeps an existing MAIL_FROM; DEPLOY.md says it needs SPF 8805a6f
started by friedger, Claude Opus 5.5 · 20:37 UTC
code What's new: recent activity across the apps in the directory (people.<domain>/#/activity) 2a56654
started by friedger, Claude Opus 5.5 · 20:36 UTC
code Mobile: buttons fit phones with large text (Keycast patch 0015, Authentik brand CSS) 2c6d7fc
started by friedger, Claude Opus 5.5 · 19:42 UTC
code Photos at photos.<domain> (services/village), tips in village tokens through the wallet 9071b7d
started by friedger, Claude Opus 5.5 · 19:29 UTC
code Directory and marketplace (services/village), paid in village tokens through the wallet ee4d155
started by friedger, Claude Opus 5.5 · 19:13 UTC
code Plan: DIDs dropped (no did:webvh, no id.<domain>); identity is the Nostr key 0b80b8d
started by friedger, Claude Opus 5.5 · 18:48 UTC
code Mocked hardware tokens until the YubiKey ceremony; rewrap keeps seed and backup key 6393159
started by friedger, Claude Opus 5.5 · 18:47 UTC
code Nightly encrypted off-VM backups with a restore drill (infra/scripts/backup.sh) bd1ecfd
started by friedger, Claude Opus 5.5 · 17:58 UTC
code Recoverable participant keys from a custody seed under the stewards' YubiKeys (Keycast patch 0014) ac6de5f
started by friedger, Claude Opus 5.5 · 15:42 UTC
code Logout no longer ends on a blank page (Keycast patch 0013, OIDC_LOGOUT_URL) 0bf255c
started by friedger, Claude Opus 5.5 · 14:40 UTC
code Vote: sign in with the participant's own signer (self-custody) 56865b5
started by friedger, Claude Opus 5.5 · 13:56 UTC
code Self-custody: take over the Nostr key or move to one's own (Keycast patch 0012) 0da6010
started by friedger, Claude Opus 5.5 · 13:54 UTC
code Village wallet at wallet.<domain>: keys from the Nostr key, nutzaps (Keycast patch 0011) b23e218
started by friedger, Claude Opus 5.5 · 13:37 UTC
code prod-env.sh: keep the ODOO_HOST_PREFIX already in .env 48caee5
started by friedger, Claude Opus 5.5 · 13:19 UTC
code Anonymous polls at vote.<domain>: Semaphore, one vote per active pass 154496b
started by friedger, Claude Opus 5.5 · 13:14 UTC
code Village tokens: Cashu mint without monetary value, 50 tokens per pass day at activation 980ae57
started by friedger, Claude Opus 5.5 · 13:08 UTC
code Chat: Log out in the mobile menu (patch 0003) 116d9c3
started by friedger, Claude Opus 5.5 · 12:43 UTC
code Open Source Village app bar in chat and calendar, home-screen icons, calendar logout e35bcad
started by friedger, Claude Opus 5.5 · 12:13 UTC
code Plan snapshot: logout decision (live doc rev 59) 660df33
started by friedger, Claude Opus 5.5 · 12:07 UTC
code Logout ends the sign-in everywhere; friendly sign-in errors; pass landing page ae3d63d
started by friedger, Claude Opus 5.5 · 12:07 UTC
code Starter events for new participants: follow list and relay lists, so Coracle finds the profile 7a63689
started by friedger, Claude Opus 5.5 · 11:03 UTC
code Keycast dashboard: Community apps cards linking to chat and calendar (patch 0009) 1c2aa45
started by friedger, Claude Opus 5.5 · 08:47 UTC

23 October 2026

code Single sign-on for the apps: silent prompt=none sign-in, trusted clients, chat button 9d98be8
started by friedger, Claude Opus 5.5 · 23:08 UTC
code Calendar: Sign in with Open Source Village, silent sign-in on load 988350b
started by friedger, Claude Opus 5.5 · 23:03 UTC
code Community chat: Coracle at chat.<domain>, bunker sign-in, policy kinds for both apps 1f37b62
started by friedger, Claude Fable 5.1 · 21:40 UTC
code Community calendar: Calendar by Form* at calendar.<domain> dabf1b0
started by friedger, Claude Opus 5.5 · 21:39 UTC
code smoke: decode the status list token with padding (base64 -d aborted step 11) d244436
started by friedger, Claude Opus 5.5 · 21:01 UTC
code NIP-46 for apps outside the network: public bunker relay, client check, clean restarts 9eb8b9b
started by friedger, Claude Fable 5.1 · 20:51 UTC
code DIDroom: sign-in offers on the claim page, Issuer2's login at Authentik 376d0b3
started by friedger, Claude Opus 5.5 · 20:40 UTC
code walt.id web wallet: anonymous pre-authorized codes, draft-13 token and credential requests 22f5e29
started by friedger, Claude Opus 5.5 · 19:39 UTC
code Issuer metadata with authorization_servers for walt.id's wallet 9dfe736
started by friedger, Claude Opus 5.5 · 19:33 UTC
code New setups serve Odoo at shop.<domain> instead of odoo.<domain> 4abf309
started by friedger, Claude Opus 5.5 · 19:31 UTC
code Type metadata also at /.well-known/vct/vct/village-pass/v1 for walt.id's wallet 014658d
started by friedger, Claude Opus 5.5 · 19:29 UTC
code Keycast fork: dark text on the accent, e-mail from the ID token, "Your pass" card 876b5d8
started by friedger, Claude Fable 5.1 · 19:29 UTC
code Proxy: issuer metadata also at the appended well-known paths 67a4c41
started by friedger, Claude Opus 5.5 · 19:18 UTC
code belfry_pass: legible pass rows, navbar logo, no portal chatter; company currency EUR f77ec10
started by friedger, Claude Fable 5.1 · 19:13 UTC
code Pass info for the community apps: GET /admin/partners/<id>/pass 5124eca
started by friedger, Claude Opus 5.5 · 19:12 UTC
code Activation mail leaves at once; one activation per invoice bd502df
started by friedger, Claude Opus 5.5 · 19:08 UTC
code Brand files: CORS and cache headers, woff2 media type bf37ea6
started by friedger, Claude Fable 5.1 · 17:03 UTC
code Branding: Open Source Village, run by Belfry; dark theme, mobile first; shared brand/ folder b9a96bb
started by friedger, Claude Fable 5.1 · 16:52 UTC
code Steward pages: Belfry's own UI for stewards, Odoo as backend only 6e445e7
started by friedger, Claude Opus 5.5 · 16:48 UTC
code belfry_pass: invite list failed with "Expected singleton" once there were several invites 908da84
started by friedger, Claude Opus 5.5 · 16:21 UTC
code Review follow-ups: activation link while signed in, secrets off argv, template note 927954e
started by friedger, Claude Opus 5.5 · 16:07 UTC
code Real-user test plan for the public deployment (docs/real-user-test.md) d16f8e4
started by friedger, Claude Opus 5.5 · 16:01 UTC
code Plan snapshot: passwordless magic-link login (live doc rev 49) b664255
started by friedger, Claude Opus 5.5 · 15:56 UTC
code Participant login by magic link: no passwords, one-time sign-in link at activation 5dc6415
started by friedger, Claude Opus 5.5 · 15:48 UTC
code Notes: public test deployment live (belfry.tofauti.net), smoke green over TLS e585152
started by friedger, Claude Fable 5.1 · 15:18 UTC
code Deployment: Keycast uses the public HTTPS issuer behind the proxy; smoke admin calls inside the container 53d78b4
started by friedger, Claude Fable 5.1 · 15:10 UTC
code Deployment run on Hetzner: secrets as files, public SANs, bootstrap behind the proxy 2ec7c7c
started by friedger, Claude Opus 5.5 · 15:02 UTC
code Authentik: pin the seed brand as default so the account-setup links work behind a proxy d25027e
started by friedger, Claude Fable 5.1 · 15:01 UTC
code Proxy denies Keycast's dev inbox; smoke test runs against a public deployment; export check 50c3762
started by friedger, Claude Fable 5.1 · 14:57 UTC
code Policy kinds: calendar (NIP-52), photos (NIP-68), proposals (NIP-88 and NIP-23), NIP-17 chat f33ae66
started by friedger, Claude Fable 5.1 · 14:47 UTC
code Hetzner: provisioning script, cloud-init and firewall for the Belfry VM 88a7f29
started by friedger, Claude Opus 5.5 · 14:26 UTC
code Keycast fork: Belfry branding and key export for OIDC-only accounts; gated Blossom server 85cbe76
started by friedger, Claude Fable 5.1 · 14:19 UTC
code Deployment preparation: Caddy reverse proxy overlay, public URLs, deployment guide 47dc03c
started by friedger, Claude Fable 5.1 · 13:19 UTC
code Hardening: Odoo mail and privileges, issuer certificate pinning, signed verifier requests 374b7c3
started by friedger, Claude Fable 5.1 · 13:09 UTC
code Phase 3: pass certificates, status list, door check and pass sign-in (local happy path) 96d7ba9
started by friedger, Claude Fable 5.1 · 12:52 UTC
code Phase 2: participants get their Authentik login through a mailed account-setup link eaea7c8
started by friedger, Claude Fable 5.1 · 12:00 UTC
code Phase 2: Keycast fork with the login through Authentik 6d14e79
started by friedger, Claude Opus 5.5 · 11:17 UTC
code Phase 2 start: community relay (rnostr) with a whitelist derived from Odoo c658d55
started by friedger, Claude Fable 5.1 · 01:32 UTC

22 October 2026

code onboarding: publish the kind-0 profile at activation c97125f
started by friedger, Claude Fable 5.1 · 21:39 UTC
code Build slice 1: Compose stack, Odoo belfry_pass module, onboarding service d94d2bc
started by friedger, Claude Fable 5.1 · 21:16 UTC
code Plan, verification spikes and build contract for slice 1 3501aad
started by friedger, Claude Fable 5.1 · 20:41 UTC