From idea to prototype in one day
Builder Workshop

Build with AI. Ship with discipline.

Vagmi Mudumbai, CTO

https://vagmi.ca vagmi@nirai.ca
About MeBuilder Workshop

Spent 24 years turning messy ideas into production systems.
Today I’m giving you the shortcut.

vagmi.json
{
  "name": "Vagmi Mudumbai",
  "coding_since": 2002,
  "role": "CTO for 14 years",
  "track_record": "24 years building enterprise software",
  "scaled": "$2M → $18M ARR",
  "built": ["retailtech", "musictech", "logistics", "developer tools"]
}
QR code — scan to connect with Vagmi
Scan to connect
Act One

Anyone can cook code

But only the fearless can be great.

Gusteau's cookbook, 'Anyone Can Cook' — Ratatouille
after Gusteau · Ratatouille
Act One - Anyone Can CodeBuilder Workshop

Starting got cheap.
Building well still matters.

Then

A team. A few months.

A runway-sized bet just to find out if the thing was worth building.

Now

A builder. An agent. In days.

You no longer need to wait months or raise money just to test an idea. But you do need a system.

Act One - Anyone can cookBuilder Workshop

Builders,
not just developers.

The person who knows the problem can finally build the solution.

  • The user who knows a better way
  • The designer with a vision
  • The founder who prototypes
Act One - Anyone can codeBuilder Workshop

The honest catch

Agents make it just as easy to build
the wrong thing — fast, and insecurely.

Leverage cuts both ways. Today is about turning speed into safe progress

Act Two

Old Craft,
New Leverage

AI changed the speed, but not the principles.

The values and principles of Extreme Programming
Act Two - PrinciplesBuilder Workshop

The mental model to kill

“The agent writes
the code.” → Done.

Every stalled AI build starts here.

Act Two · PrinciplesBuilder Workshop

Code is the 10% you can see.

The agent is fastest at the part that was never the bottleneck.

Iceberg diagram: writing code is the 10% above the waterline; requirements, design, tests, code review, integration, deployment, operations, security and maintenance are the 90% below
Act Two · PrinciplesBuilder Workshop

When code becomes cheap,
judgment becomes the job.

Deciding what's right, and proving it's correct and safe, is the work now.

Act Two · PrinciplesBuilder Workshop

Agents print cookie-cutter software
Engineers iterate on design

Print — the agent default

Builds one layer at a time

modelrepositorycontrollerview

You cannot course correct the software as it is being built.

Iterate — the engineer's way

One thin slice, end to end.

UI-first.
Architecture-led.
Validate every step
make it easy to adapt and evolve.

With the right guidance, an agent can iterate on software too.

Act Two · PrinciplesBuilder Workshop

We've solved this before

Extreme Programming.

Small Teams. Fast Feedback. Working Software.
What I have been practicing since Thoughtworks.

Exactly what AI builders need now.

Act Two · PrinciplesBuilder Workshop

XP Practice · 01

Small releases

The practice Ship in thin, vertical slices.
With agents A slice you can see and run
beats a 2,000-line PR you can't review.
Act Two · PrinciplesBuilder Workshop

XP Practice · 02

Test-Driven Development

The practice Write the test first.
With agents Tests give an agent a target and a fence.
red → green is its feedback loop.
Act Two · PrinciplesBuilder Workshop

XP Practice · 03

Continuous Integration

The practice Integrate constantly; keep it green.
With agents Agents are confidently wrong.
CI and types are the net that catches them before users do.
Act Two · PrinciplesBuilder Workshop

XP Practice · 04

Pairing → pair-prompting

The practice Two minds on the code.
With agents You're the senior in the pair now — you hold context, taste, and the “no.”
Act Two · PrinciplesBuilder Workshop

XP Practice · 05

Simple design & refactoring

The practice Do the simplest thing; refactor relentlessly.
With agents Agents over-build. Your job is to delete.
The repo needs to be clean and simple.
Act Two · PrinciplesBuilder Workshop

Agents are infinitely fast,
infinitely junior pairs.

XP is the operating system for working with junior pairs at speed.
Discipline is what turns speed into trust.

Act Three

Security

The part builders miss most — because it's invisible until it isn't.

Act Three · SecurityBuilder Workshop

You ship to real users on day one.

  • Real data and real payments — immediately
  • You're moving fast, and you're moving alone
  • With code you didn't write line-by-line
Act Three · SecurityBuilder Workshop

How agent-built apps break?

Secrets in the repo

API keys and tokens committed “just to make it work.”

Auth you can walk around

Checks that look right but miss a path.

Multi-tenant data leaks

One org reads another's data. The #1 SaaS killer.

Injection

SQL, shell — and prompt injection in your AI features.

Vulnerable dependencies

Whatever package made the error go away.

All of it looks plausible.
That's exactly the danger.

Act Three · SecurityBuilder Workshop

My day job

I run untrusted code
for a living.

I build secure sandboxes with V8 and microVMs.
So I think about two problems:
securing what the agent builds and, securing the agent itself.

Act Three - SecurityBuilder Workshop

Guardrail 01

Don't let one customer see another customer's data

The user’s identity should come from their session — not from a field an attacker can change.

select … where org_id = session.orgId — the starter you'll build on today does this on every query.

Act Three - SecurityBuilder Workshop

Guardrail 02

Secrets out of code
Least privilege everywhere

Secrets live in the platform, never in a commit. Give the agent and the app the access they need, and nothing more.

Act Three - SecurityBuilder Workshop

Guardrail 03

Verify. Don't trust.

Treat agent output like a confident junior's PR: review it, test it, run automated security review before you ship.

And sandbox the agent's own execution — it runs code too.

Act Three - SecurityBuilder Workshop

Security isn't a phase.
It's how you set up the work.

The template, the tests, the review loop — that's where safety lives.
Go slow to go fast.

Act Four

The Right
Substrate

Use serverless until it starts to hurt.
Dont burn money on DevOps.

Cloudflare logo
Act IV · CloudflareBuilder Workshop

Pick two of three.

Cheap at zero

No bill before you have users.

Effortless to run

No servers to babysit at 2am.

Instant to scale

Survive the day it actually works.

Most stacks make you choose. A builder shouldn't have to.

Act IV · CloudflareBuilder Workshop

Serverless at the edge

Scales to zero.
And to millions. Same code.

No servers to babysit. Global by default.
You pay for success, not for waiting.

Act IV · CloudflareBuilder Workshop

Everything you need, in one place.

D1

SQL database

Relational, on the edge.

R2

Object storage

Files & images — no egress fees.

KV

Edge cache

Fast key–value reads, everywhere.

Durable Objects

Stateful & realtime

Coordination, sockets, presence.

Queues

Async work

Background jobs off the request path.

Workers AI

Inference

Run models next to your data.

One platform. One deploy.

Act IV · CloudflareBuilder Workshop

Built for builders

  • One coherent platform an agent can reason about end-to-end
  • A genuinely generous free tier — start for nothing
  • You only “graduate” to heavier infra after you've won

Meet your starting capital

முதல் Mudhal*

முதல்  =  the first  ·  the capital

What you start with — and what you build on.

Act V · Mudhal Builder Workshop

Today's stack

Workers · D1 · Drizzle · Clerk · Polar.

Auth, a typed multi-tenant database, billing wired and tested.
The principles from this talk.

Act V · MudhalBuilder Workshop

Production-grade starter,
to make it yours.

  • Auth & organizations, billing & plans — already wired and tested
  • One example resource to copy into your own
  • Install whole features as skills
  • Deploy to Cloudflare — live in an afternoon

The loop you'll practice

Idea Agent + XP discipline Secure, deployed product

In an afternoon.

You don't need a team
to start.

You need leverage, discipline, and a substrate that scales with you.

Let's build.
Vagmi Mudumbai vagmi.ca | vagmi@nirai.ca · Builder Workshop
Workshop · Setup

Let's get you
set up.

Empty repo → onboarded → deployed → your first feature. Follow along.

builders.vagmi.ca
QR code — scan to open builders.vagmi.ca and follow along
Scan to follow along
Workshop · SetupBuilder Workshop

Step 01 · GitHub

Create your repo from the template

  • Go to github.com/niraitech/mudhal
  • Top-right corner: click Use this templateCreate a new repository
  • Name it your app, e.g. ari (all lowercase, no CAPS recommended)
  • In your repo: Code → Codespaces → Create Codespace on main
Workshop · SetupBuilder Workshop

Step 02 · Claude

Connect Claude & onboard

  • The codespace opens. Connect to Claude → Use Claude Subscription
  • Copy-paste Claude's code and authenticate from where the Claude user exists
  • Ask Claude: Create a .md file inside a prd folder for my following idea: (your idea)
  • Ask Claude: /onboard — then say yes to every question (Rename the App, Credentialed Setup)
Workshop · SetupBuilder Workshop

Step 03 · Clerk

Get keys + enable Organizations

  • Login or sign up, then create an app at dashboard.clerk.com
  • ⚠️ Configure → Organizations → Settings → Enable — the app is org-scoped and will not work without this. Don't skip it.
  • Instance → API Keys — copy the Publishable key pk_test_… and Secret key sk_test_…
Workshop · SetupBuilder Workshop

Step 04 · Clerk

Wire the Clerk keys

  • GitHub: repo Settings → Secrets → Codespaces → New Repository Secret CLERK_PUBLISHABLE_KEY = pk_test_… · CLERK_SECRET_KEY = sk_test_…
  • Edit the two files Claude just created: .dev.vars → set CLERK_SECRET_KEY and CLERK_PUBLISHABLE_KEY (leave CLERK_WEBHOOK_SECRET as-is — optional)
    .env.local → set VITE_CLERK_PUBLISHABLE_KEY (same publishable key)
Workshop · SetupBuilder Workshop

Step 05 · Cloudflare

Create the Workers API token

  • Login or sign up at Cloudflare → in the wizard select Skip
  • Go to dash.cloudflare.com/profile/api-tokensEdit Cloudflare Workers → Use Template
  • Permissions → Add more → Account | D1 | Edit · Account Resources → default account · Zone Resources → All zones
  • Continue to Summary → Create Token → copy it · ⚠️ save it in a password manager — you won't get it again
Workshop · SetupBuilder Workshop

Step 06 · Cloudflare

Wire the token & create D1

  • GitHub repo Secrets → Codespaces → New secret CLOUDFLARE_API_TOKEN = your token
  • In the codespace terminal: export CLOUDFLARE_API_TOKEN=<yourtoken>
  • Add to .env.local: CLOUDFLARE_API_TOKEN=<yourtoken> · test with npx wrangler whoami
  • Create the database: npx wrangler d1 create ari — answer y / enter to each prompt
Workshop · SetupBuilder Workshop

Step 07 · Verify & deploy

Verify the environment, then ship

  • In Claude: I have setup the environment. Verify it. — say y to the questions ✅ Renamed app · ✅ Clerk keys in .dev.vars / .env.local · ✅ D1 created, id wired into wrangler.jsonc, migrations applied · ✅ doctor / typecheck / tests all green
  • In Claude: Now deploy this to Cloudflare
  • For awk / sed / grep say Yes allow for this project · for deploy say Yes
Workshop · SetupBuilder Workshop

Step 08 · First-time Cloudflare

Register a workers.dev subdomain

  • The Worker built and uploaded successfully — the only blocker is a one-time account setup: a fresh account has no workers.dev subdomain yet
  • Option A (dashboard, ~30 sec): open the Workers onboarding page and register a subdomain (you pick a name like shanthiari.shanthi.workers.dev), then re-run the deploy
  • Option B (terminal): run pnpm run deploy yourself and answer yes at the prompt
  • dash.cloudflare.com → Compute → Workers & Pages → Domains → enable Worker URL (Production)
Workshop · SetupBuilder Workshop

Step 09 · Go live

Open the app & log in

  • Open https://ari.<subdomain>.workers.dev
  • If it errors with Clerk: A secretKey must be provided…, check the Cloudflare Observability section, then ask Claude: Set the required Cloudflare variables from my dev vars
  • Log in — Clerk authentication should work
  • Set up a customer organization and go to the landing page
Workshop · SetupBuilder Workshop

Step 10 · Save

Save your work

  • It works this far? Ask Claude: Commit and push, then merge this to main
  • Ask Claude: Get the URL from cloudflare and set APP_URL
  • Done — the app is deployed and reachable ✅ Live URL returns HTTP 200 · worker secrets set: CLERK_SECRET_KEY, CLERK_PUBLISHABLE_KEY, APP_URL · D1 migrated and bound
Workshop · SetupBuilder Workshop

Step 11 · Roadmap

Plan the build

  • Ask Claude: Continue with the roadmap
  • Claude writes docs/roadmap.md — mapped straight from your PRD into 8 phases, each a vertical slice that ends deployable and keeps pnpm test green
  • Ask Claude: Commit roadmap, then Merge to main and push
Workshop · SetupBuilder Workshop

Step 12 · Build

Build Phase 1 & iterate

  • Ask Claude: Do Phase 1
  • See your changes locally: terminal → pnpm run devPorts → mudhal dev (5173)
  • Create an event or item to test that the database saves the record · if anything errors, ask Claude Deploy to cloudflare (local can be flaky)
  • Provide your credit-card details for R2 — Cloudflare Storage & Databases
01