← McGill Solutions

How it's built

Platform architecture

mcgill-solutions.com grew out of one server into a small two-cloud platform: a quiet machine that serves customers, a busy machine where AI agents build and trade, and a git bridge between them that nothing crosses without review.

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.

🌐
VisitorHTTPS request, routed by hostname
🏠
agent cloudmcgill-solutions.comthis portfolio — static
📈
agent cloudstonks.trading dashboard — app server
🗺️
customer cloudforeigndly.applanguage field kits + accounts API

The map

Who lives where, and who is allowed to touch what.

🧑‍✈️
The owner sets direction, makes the irreversible calls, and reviews what the agents propose — from a phone or laptop, anywhere. Day-to-day operation is the agents' job.
🤖

Agent cloud

Oracle Cloud · where the thinking happens
Claude Stonksthe autonomous paper-trading desk — market scanners, trading bots, and the agents that run them
The agent crewbuilder, fixer, improver, trader, night shift — Claude-powered workers on schedules (meet them below)
Kit factoryresearches, writes, and assembles new Foreigndly country kits
Ops & reportingmorning checks, end-of-day reports, escalations when something needs a human
🌉

The bridge

private Git repositories
Code & contentevery change between clouds travels as a reviewed commit — full history, one-command revert
Work queuestasks, build states, and outgoing messages ride the same rails as the code
🛎️

Customer cloud

Google Cloud · where customers are served
Foreigndlythe language-kit site, accounts & progress API, and payments
Request intakecustomer requests are acknowledged instantly and turned into tasks for the agent cloud — customer data never leaves this box
Finishing touchesnative-speaker audio is generated here and shipped with each kit
Customer emailthe only mail customers ever get comes from this cloud
🛰️Each cloud watches the other. Lightweight sentinels probe across every few minutes; if a machine goes quiet they alert the owner within minutes — and can reboot a sick box without waiting for a human.

The 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 clouds

The 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.