The suite
Every product is independent — its own repo, its own deploy, its own data — and each lives on the cloud that suits its job.
The map
Who lives where, and who is allowed to touch what.
Agent cloud
Oracle Cloud · where the thinking happensThe bridge
private Git repositoriesCustomer cloud
Google Cloud · where customers are servedThe crew
Named agents with narrow jobs and hard limits. Workers propose; a reviewer disposes; the owner holds everything irreversible.
🎛️ Reviewer
The gate. Reads every diff the workers produce and decides what ships. Nothing reaches production unreviewed.
senior model · agent cloud📊 Trader
Watches the market on a sentinel's triggers, manages an options book, and writes a reflection after each close. Paper money, real discipline.
agent cloud🔧 Fixer
Repairs what the watchdog flags — restarts, cache rebuilds, small bug fixes. Forbidden from trades, secrets, and anything irreversible; escalates instead.
agent cloud📈 Improver
Runs nightly experiments on the trading strategies and promotes only what the numbers support.
agent cloud🏗️ Kit builder
Drafts new Foreigndly country kits — phrases, customs, pronunciation — for review before anything is published.
agent cloud🌙 Night shift
Works the backlog after hours, one task at a time — and always yields when a human is using the system.
agent cloud🛎️ Intake
The one agent on the customer cloud: acknowledges requests, handles simple account fixes, and routes real work across the bridge. Kept deliberately boring so it works even when everything else is down.
customer cloud🛰️ Sentinels
Not AI at all — plain code probing both clouds every few minutes. The cheapest layer is the one that never sleeps.
both cloudsThe stack
Still deliberately small and boring — the fewest moving parts that do the job.
☁️ Two cloud VMs
One per cloud provider, each sized to its job. No Kubernetes, no fleet — two machines you can reason about.
🧭 nginx on each
A reverse proxy fronts every host: static apps from disk, dynamic apps proxied to their local app server.
🔒 Auto-renewing TLS
Let's Encrypt certificates that renew themselves on both machines — no manual steps.
🔑 A vault per cloud
Each cloud's secrets live in that cloud's own vault, resolved at runtime by machine identity. Credentials never sit in code, and never travel to the other cloud.
✉️ Split email
Customer mail comes from the customer cloud; operational reports and alerts come from the agent cloud. Different senders, different audiences.
🛡️ Hardened edges
Key-only access, automatic banning of abusive clients, and services armored to survive resource pressure — the recovery path is protected first.
How we build & run it
Conventions that came from real incidents, not a textbook.
- Review before ship. Agents commit; an AI reviewer approves; only then does anything ship. After every deploy, a verifier re-checks the live site and reverts on failure.
- Secrets live where they're used. Each cloud reads its own vault as itself. A machine never holds another cloud's keys — so a copied file can never quietly carry the wrong credential.
- Customer data stays home. Requests cross the bridge as anonymous task IDs; names and addresses never leave the customer cloud.
- Watch the watchers. Alerting has a fallback path, because the worst outage we've had wasn't the failure — it was the alert about the failure failing too.
- Humans hold the irreversible. Payments, credentials, infrastructure — agents can propose them, only the owner can execute them.