Trellis Web Platform
The central control plane for multi-cloud infrastructure orchestration.
Trellis Web Platform
Trellis is the web-based control plane. It provides a visual interface for configuring infrastructure, managing cloud integrations, monitoring jobs, and viewing provisioned clusters — all from the browser.
Tech Stack
| Layer | Technology |
|---|---|
| Framework | Next.js 15 (App Router, Server Actions) |
| Database | Supabase PostgreSQL with Row Level Security |
| Auth | Supabase GoTrue (OAuth: GitHub, GitLab, Bitbucket, Google) |
| Realtime | Supabase Realtime WebSocket (how it works) |
| Storage | Supabase S3 for Terraform state and plan artifacts |
| UI | Tailwind CSS, shadcn/ui, Zustand state management |
Key Pages
Dashboard
Overview stats, vineyard management, vine detail with services and infrastructure.
Plant a Vine
11-section form for configuring multi-cloud infrastructure with real-time cost estimation.
Integrations
Connect AWS, GCP, Azure cloud accounts and GitHub, GitLab, Bitbucket Git providers.
Jobs
Monitor infrastructure operations with real-time log streaming.
Tendrils
Register, monitor, and manage Tendril execution agents.
Clusters
View provisioned Kubernetes clusters with ArgoCD access.
API Reference
Worker, CLI, and Auth API endpoints.
Architecture
Browser ──► Next.js App Router
├── Server Actions (Supabase client with RLS)
├── API Routes (Worker + CLI token auth)
└── Supabase Realtime (WebSocket subscriptions)
└── Live updates → browser storesAll database access goes through Supabase with RLS policies enforcing per-user data isolation. Server Actions inherit the authenticated user's RLS context automatically.
State Management
Trellis uses six Zustand stores for client-side state, each with a 30-second stale threshold and real-time event handlers:
| Store | Purpose |
|---|---|
useVineStore | Form pricing data during vine creation |
useJobsStore | Job list with filters, pagination, real-time upserts |
useTendrilsStore | Tendril list with deploy/update/destroy actions |
useClustersStore | Active clusters from provisioned vines |
useVineyardsStore | Vineyard hierarchy with vine status updates |
useCloudProviderStore | Selected provider, identity, cached resources |
Real-time subscriptions are established on dashboard layout mount and feed updates into these stores. See Real-time Architecture for details.