Everything so far ran on your laptop with you in the loop. A cloud agent runs without you: a function on Vercel wakes on a schedule, reads your database, thinks with Claude, acts within its guardrails, and logs what it did.
Claude Code on your laptop is an agent with you watching. The moment you close the lid, it stops. The leverage you actually want is the colleague who starts at 7 AM whether or not you are awake: reads what came in overnight, scores it, drafts the reply, and puts a digest in your inbox.
Most people imagine this requires infrastructure they cannot run. It does not. It is one scheduled function on the Vercel project you already have, calling the Claude API with the same role file you wrote in Protocol 03, writing to the same Supabase tables. Same folder idea, different home.
The folder is the same in all three. What changes is where it runs and who is watching.
Every cloud agent you will ever build has these five parts. Name them before you build and the build is short.
The Claude API key is an environment variable on Vercel and in your local .env.local, and nowhere else. Not in code. Not sent to the browser. Not pasted into a prompt. Search the repo for the key prefix before you merge: zero hits, every time.
A daily agent that reads fifty rows and writes fifty notes costs cents. The rhythm matters more than the model: once a day at 7 AM is a colleague, every minute is a bill. Start daily. Speed up only when the log shows it would have mattered.
The agent drafts. The admin page shows the draft. You approve. That single button is the difference between a helpful colleague and a liability. Your first cloud agent keeps it. So does your tenth.
You need a CRM with inquiries in it (synthetic is fine, Protocol 14), Resend wired (Protocol 13), and an Anthropic API key. Open Claude Code in the project.
Tell the PM agent: "Ask me what makes a lead hot, what the agent must never do on its own, and what time my digest should arrive. Then write Working Files/agent-plan.md and docs/plans/agent-build-plan.md." The forbidden list is the important answer.
"Execute docs/plans/agent-build-plan.md: the role file, agent_runs and agent_notes tables, a Vercel cron route protected by CRON_SECRET, the Claude call with the official SDK, a digest via Resend, and /admin/agent with Run now and Approve and send. ANTHROPIC_API_KEY lives only in env vars."
Press Run now. Read the agent_runs row and three agent_notes. If the reasons sound like you, the role file is right. If not, edit ROLE.md and run again.
Try Approve and send on a synthetic lead. It must refuse with a clear message. Then submit your own email through the live form, run again, approve the draft, and confirm the email arrives.
Search the repo for the key prefix. Zero hits. Then tell Claude: "In three sentences, what happens at 7 AM tomorrow?" If the answer is right, you have a colleague.
An agent on a schedule in the cloud, reading your CRM, drafting replies you approve, logging every decision, with a digest in your inbox every morning. Built from the same folder idea as every agent on your laptop.
You design the agent's forbidden list before a line of code exists, build it, press Run now against your synthetic pipeline, and read three of its reasons. If they sound like you, the role file is right.