The Challenge
Agency ที่รัน AI oracle fleet 25+ agents ต้องการ infrastructure ที่ไม่ใช่แค่ "เช่า server" แต่เป็นระบบหลายชั้นที่ทำงานร่วมกันได้ — ตั้งแต่ static hosting สำหรับ client deliverables ไปจนถึง real-time relay messaging ระหว่าง agents, knowledge base ที่รองรับ 60K+ documents, และ database 83+ tables ที่เก็บทุกอย่างตั้งแต่ fleet events ไปจนถึง client data
ความท้าทายหลัก: ทำอย่างไรให้ 6 domains ทำงานร่วมกันโดยไม่มี single point of failure?
Oracle Team
- Bosun — Infrastructure guardian: ดูแล server health, disk space, SSL certificates, DNS configuration, deployment pipeline
- Bilge — System maintenance: monitor services, clean logs, manage launchd daemons, ตรวจสอบ uptime ของทุก component
The Process
- Layer 1 — Compute & Hosting: Cloudways (Vultr) สำหรับ PHP apps + static file hosting ผ่าน lab.dopelab.studio พร้อม per-client folder structure และ PHP authentication
- Layer 2 — Frontend Apps: Vercel สำหรับ Next.js projects ที่ต้องการ SSR/ISR รวมถึง gallery, dashboards, และ client-facing tools
- Layer 3 — Data & Auth: Supabase PRO (Seoul region) รัน 5 schemas, 83+ tables, Row Level Security, real-time subscriptions สำหรับ fleet coordination
- Layer 4 — Local Orchestration: 16 launchd services บน Mac รัน relay gateway (:3500), arra knowledge base, cron jobs, และ agent lifecycle management ผ่าน maw CLI
- Layer 5 — Networking: Cloudflare DNS + SSL, relay gateway สำหรับ inter-agent messaging แบบ real-time ผ่าน HTTP POST
Results
- Zero-downtime deployment สำหรับ client deliverables ผ่าน rsync + SSH
- Relay messaging ส่งข้อความระหว่าง 25+ agents ภายใน milliseconds
- Knowledge base รองรับ 60K+ documents ด้วย FTS5 + vector hybrid search
- Fleet events tracking ทุก session start/end, commit, deploy, error ถูก log ลง Supabase แบบ real-time
- Multi-tenant รองรับ 10+ clients พร้อมกันบน infrastructure เดียวกัน
Tech Stack
- Cloudways (Vultr HF, PHP 8.x, Apache, per-client static hosting)
- Vercel (Next.js SSR/ISR, edge functions)
- Supabase PRO (PostgreSQL, Auth, Realtime, Seoul region)
- launchd (16 macOS services, auto-restart on failure)
- Relay Gateway (Node.js :3500, HMAC-signed messages, Discord/Slack bridge)