Engineering onboardinggiga-swamp@mainSnapshot 2026-09-14
Where our apps run, which clouds and regions they use, how requests reach them, and where the data lives. This is the big picture, not a runbook. Every piece is a swamp model or workflow in giga-swamp.
Web and telemetry traffic uses Cloudflare only for DNS, then connects straight to the DigitalOcean load balancer. CLI downloads are the only requests Cloudflare proxies: its edge runs the artifacts-edge Worker, which pulls binaries from Spaces. The internal ops platform runs on a separate cluster in Google Cloud.
Axiom is our OpenTelemetry and log aggregator. Grafana, one of the corp apps, shows dashboards over Prometheus and ClickHouse. Grafana and Axiom alert to separate endpoints on ops.swamp-club.com. Both start the same swamp workflow, which dedupes and triages them with Claude before posting to the Discord ops channel.
// what we expect from the platform
The platform reflects exactly what the business needs right now, and it changes whenever that does.
We have changed production architecture four times in six weeks, under live traffic with no maintenance window, and we will keep doing it. Nobody could have drawn today's architecture at the start, because the information that produced it didn't exist yet. Each move taught us what the next one had to be.
Almost everything runs in DigitalOcean's San Francisco region, SFO3. We moved off AWS in May 2026. Google Cloud hosts only the internal ops platform.
| Provider | Region | What lives there |
|---|---|---|
| DigitalOcean | sfo3 | The swamp-club-prod Kubernetes cluster (DOKS), ClickHouse and Prometheus droplets, Spaces buckets, the container registry DOCR swamp, and the prod VPC 10.10.0.0/16 with its NAT gateway. |
| DigitalOcean | nyc3 | The forgejo-runner DOKS cluster: CI runners that autoscale from 1 to 12 nodes. |
| Google Cloud | us-west1-a | The GKE platform cluster in project swamp-club-ops: swamp serve, workers, and the dashboard, plus Artifact Registry and the GCS datastore. |
| Cloudflare | global | DNS for swamp.club, swamp-club.com, swamp-club.ai, and systeminit.com, the artifacts-edge Worker, and DNS-01 challenges for TLS certificates. |
| SaaS | — | MongoDB Atlas (primary database), Axiom (logs and traces), Resend (email), Anthropic (LLM), Stripe, Attio, Mixpanel, GitHub, Discord, and 1Password. |
Everything customer-facing runs on swamp-club-prod. Workloads land on dedicated node pools: swamp-club-16g for the core apps and Traefik, and corp-apps for internal tools and monitoring. All images come from DOCR, pinned by digest.
| App | What it does | Runs on | Scale |
|---|---|---|---|
| swamp-club-apins swamp-club | The swamp.club product: web UI, API, sign-in (GitHub, Google, Microsoft, Discord), and the admin proxy to corp apps. | DOKS prod | HPA 2–6 |
| telemetry-apins telemetry | Takes in swamp CLI telemetry events and GitHub webhooks. | DOKS prod | HPA 2–10 |
| Traefikns traefik | Ingress controller behind the DO load balancer. Redirects HTTP to HTTPS. | DOKS prod | HPA 4–10 |
| discord-bot+ discord-summarizer | Background workers. The bot writes Discord activity to Mongo. The summarizer posts Claude-written digests. Neither has a public route. | DOKS prod | 1 each |
| Corp apps | Internal tools: dossier, biz-model, fundraising, and the pitch/partner/value decks. None has its own Ingress. Admins reach them through swamp-club's proxy. | DOKS prod | 1 each |
| Grafana | Dashboards over ClickHouse and Prometheus, plus alerting. | DOKS prod | 1 |
| swamp serveops.swamp-club.com | Our internal ops platform. Runs swamp workflows from Forgejo, Grafana, and Axiom webhooks. Also serves the swamp dashboard. | GKE platform | 1 + 5 workers |
swamp-club.com is the canonical host. The .club names are proxied by Cloudflare and redirect to it. TLS certificates are issued by cert-manager in each cluster, using Let's Encrypt with DNS-01 through Cloudflare.
| Hostname | Path | Lands on |
|---|---|---|
| swamp-club.com | Cloudflare DNS-only → DO load balancer → Traefik | swamp-club-api |
| swamp.club | Cloudflare proxy, 301 redirect | → swamp-club.com |
| telemetry.swamp-club.com | Cloudflare DNS-only → DO load balancer → Traefik | telemetry-api |
| telemetry.swamp.club | Cloudflare proxy, 301 redirect | → telemetry.swamp-club.com |
| artifacts.swamp-club.com | Cloudflare Worker artifacts-edge | Spaces bucket artifacts-swamp-club |
| artifacts.systeminit.com/swamp/* | Same Worker, kept for older CLIs | Same bucket |
| ops.swamp-club.com | GCP load balancer → Traefik on GKE | swamp serve, /hooks/*, /dashboard |
We have two databases with different jobs, and object storage holds the long-term record.
grant-mongo-ip and audit-mongo-ips workflowsclickhouse.clickhouse.svc, which points at the dropletsevents-archive-swamp-club: the event lake and system of recordartifacts-swamp-club: CLI binariesswamp-club-extensions: the extension registryclickhouse-production-backups, dossier-swamp-clubgiga-swamp: the infra repo's swamp datastoreInfrastructure is defined and changed with swamp. Model and workflow definitions are in git (giga-swamp). Runtime state is in the Spaces datastore.
swamp-club repo starts a release in GitHub Actions.release-swamp-club-api-k8s builds the image and pushes it to DOCR.release-deployer account, then waits for the rollout to finish.kubectl edit/patch/scale. The next swamp deploy overwrites the change and field ownership conflicts follow. Go through the swamp model instead.swamp_club_prodops.swamp-club.com: /hooks/grafana-alerts, and /hooks/axiom-alerts, which goes through axiom-webhook-relay firstops-signal-ingest workflow dedupes each alert, triages it with Claude, and posts it to Discord #opsThe repo keeps models for retired or rollback-only infrastructure. Don't mistake them for live systems.
swamp-club, telemetry, and discord-bot ran here. Traffic has since moved to DOKS.ops.swamp-club.com on GKE. The app-side swamp-serve is a WebSocket companion to swamp-club-api, built into DOCR.This page was put together from repo models, manuals, and a live DNS check on 14 Sep 2026. These items are unconfirmed or have conflicting sources:
swamp-club namespace on DOKS.clickhouse-v2 and the empty clickhouse node pool are still running and billed.swamp-platform-datastore. The GKE notes point to GCS.forgejo-runner builds.