Purpose: Get a local development environment running and deploy your first agent in under 10 minutes.
Node.js >= 20
npm (ships with Node)
Supabase CLI (npm i -g supabase)
A Supabase project (or local emulator)
Cloudflare account (for data plane testing)
git clone <repo-url> WebHost.Systems
cd WebHost.Systems
npm install
Copy the example env and fill in your keys:
cp .env.example .env.local
Required variables:
| Variable | Description |
|---|---|
SUPABASE_URL | Your Supabase project URL |
SUPABASE_ANON_KEY | Supabase anonymous key (for client) |
SUPABASE_SERVICE_ROLE_KEY | Service role key (for Edge Functions) |
CLOUDFLARE_API_TOKEN | Cloudflare API token (deploy adapter) |
CLOUDFLARE_ACCOUNT_ID | Cloudflare account ID |
LEMONSQUEEZY_WEBHOOK_SECRET | Billing webhook verification |
# Terminal 1 -- Vite dev server (dashboard UI)
npm run dev
# Terminal 2 -- Supabase local (if using emulator)
supabase start
# Terminal 3 -- Edge Functions local dev
supabase functions serve
Navigate to http://localhost:5173
Sign in (Supabase Auth: email or OAuth)
Click "New Agent"
Fill in name, framework, and select cloudflare runtime
Upload a bundle containing agent.config.json and your entrypoint
Click "Deploy"
# Authenticate and get a token
TOKEN=$(supabase auth token)
# Create an agent
curl -X POST "$SUPABASE_URL/rest/v1/rpc/create_agent" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "my-first-agent",
"framework": "custom",
"runtime_provider": "cloudflare"
}'
curl -X POST "$SUPABASE_URL/functions/v1/invoke/$AGENT_ID" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"input": { "prompt": "Hello, agent!" }
}'
Navigate to the agent detail page in the dashboard to see:
Request count
Token usage
Compute time (ms)
Error rate
Read the Architecture Overview for system design context
See Skills Reference for operational guides
Review the Master Spec for full requirements
npm run typecheck # TypeScript check
npm run lint # ESLint
npm run format:check # Prettier
All three should pass with zero errors before committing.