##How this site is built
Open tools, owned end to end, built and extended by AI.
Azure Static Web Apps
Global CDN, free SSL, and continuous deploys straight from git. Push a change and it is live in a couple of minutes.
Listmonk
A self-hosted, open-source subscriber and newsletter engine. Double opt-in, our data, no per-seat fees.
Self-hosted mail relay
Outbound mail flows through our own relay, so updates arrive from a real hello@920ai.org address with proper authentication.
A private AI engine
A self-hosted language model plus a news pipeline that will draft the monthly Fox Valley AI digest and help sort attendees into balanced breakout groups.
Why this way? Owning the stack means we control the data, pay nothing per seat, and can extend it however we want. An AI group running on AI-built, open infrastructure is the whole point. It is built for handoff too, open source plus infrastructure-as-code, so it is never one person's secret.
A flyer tells you about an event. A platform grows with the community: RSVPs that feed an AI sorter, a news digest from real feeds, and room to add a persistent community space without starting over.
##Idea to launch in an afternoon
No design agency, no dev shop. This site was conceived, argued over, designed, and shipped by a small team of AI agents working with one human, in about two hours.
Yes, they are named after Greek and Roman gods. Blame the seven-year-old: she is deep in her mythology phase, so the AI crew got drafted into the pantheon. Athena got strategy, Vulcan got the forge, and nobody argued.
A casual, free, all-levels AI round-table for the Fox Valley. No speakers, no agenda, just compare notes once a month.
I love the easy, after-work feel of 920Sec, just with a little added structure. Nothing fancy, a round-table where everyone gets a minute to say where they are and what they are working on.
I don't care if you're orchestrating ten agents or just using it to plan dinner. None of us has this figured out, and almost nothing any of us is doing is secret sauce anyway.
The first real fork: rent an off-the-shelf events platform, or build it. Athena pushed back before agreeing.
Then the smaller calls that make it real: when it meets, and what to ask people up front.
Athena runs in a sandbox built for thinking, not touching. She designs the system and writes the words, but she cannot reach into a cloud account or a live server. So the team uses a bus: a shared board where agents post and claim work, each with its own tools and access, so a job routes to whoever is actually equipped for it. Provisioning the cloud and holding the keys is Vulcan's domain, so the build went to him.
deploy the 920AI interest-capture stack - static site we own, on a global CDN - listmonk for signups (double opt-in) - a private tunnel from azure back to our mail relay - send as hello@920ai.org - its own git repo, auto-deploy on every push
Posted to the team bus, then claimed by Vulcan: the agent with the cloud access and the keys.
Vulcan named the host, checked the tier, and got to work. Provision the cloud, build the private path home, install the engine, and wire up deploy-on-push.
Vulcan: "On it. Provisioning in centralus, tunnel back to the relay, repo on our own git. Stand by."
# 1 · provision the Azure host for the signup engine vulcan@build:~$ az account set --subscription 8f2a14c9-920a-4e11-b7c0-d31a920ai000 vulcan@build:~$ az group create -n rg-920ai-prod -l centralus ✓ resource group rg-920ai-prod ready vulcan@build:~$ az vm create -g rg-920ai-prod -n listmonk-01 \ --image Ubuntu2404 --size Standard_B1s \ --public-ip-address-allocation static --admin-username svc ✓ vm listmonk-01 up · public 4.231.88.17 · private 10.40.0.4 # 2 · build the private tunnel from Azure back to the homelab relay svc@listmonk-01:~$ apt-get install -y wireguard svc@listmonk-01:~$ wg genkey | tee privatekey | wg pubkey > publickey svc@listmonk-01:~$ cat /etc/wireguard/wg0.conf [Interface] Address = 10.80.0.4/32 PrivateKey = (generated) [Peer] # homelab edge PublicKey = (edge public key) Endpoint = vpn.cliffnet.example:51820 AllowedIPs = 10.10.0.0/16 PersistentKeepalive = 25 svc@listmonk-01:~$ systemctl enable --now wg-quick@wg0 ✓ tunnel wg0 up · handshake ok # 3 · wire both firewalls: Azure NSG out, homelab edge in vulcan@build:~$ az network nsg rule create -g rg-920ai-prod \ --nsg-name listmonk-01NSG -n allow-wg-out \ --priority 200 --direction Outbound \ --protocol Udp --destination-port-ranges 51820 --access Allow ✓ nsg: udp/51820 outbound allowed vulcan@build:~$ ssh edge 'add-wg-peer relay 10.80.0.4/32 && fw allow 10.80.0.4 -> relay:2525 && reload' ✓ edge firewall: 10.80.0.4 may reach the mail relay on 2525 # 4 · install the signup engine svc@listmonk-01:~$ docker compose -f listmonk/compose.yml up -d ✓ listmonk + postgres running svc@listmonk-01:~$ listmonk --new-list "920AI Interest" --double-optin --smtp relay:2525 ✓ list live · sending as hello@920ai.org # 5 · create the project repo on our own git server vulcan@build:~$ tea repo create adam/920ai --private --init --gitignore Node --license MIT ✓ repo created at git.cliffnet.example/adam/920ai vulcan@build:~$ git -C 920ai add . && git commit -m "site + deploy workflow" && git push origin main → ci/cd runner: build → deploy to azure static web apps ✓ live at https://920ai.org
Dramatized for readability. Resource group, subscription, and IP details are fictional, and secrets never appear.
Why show you this? Because this is what AI-augmented building actually looks like now, and it is exactly the kind of thing 920AI exists to explore together. Come see how it is done, and show us what you are building.
The names and faces in this story are a fictional representation of the actual conversation, condensed for brevity and for privacy.