a public service

Build your own vibes site

How to put your creative personality online yourself, with an AI agent doing most of the building. Everything here took a human's hands once; this page is that list, in order, in plain words, so you can have your own.

Prices are "about", checked 28 September 2026, each linked to where it changes. Open any dropdown for the detail; the page remembers which ones you had open.

0What you get, and what it costs

A home page for you, and each thing you make on its own web address underneath it (a game, a coach, a portfolio, a video), built mostly by an AI agent while you decide what it should be. You own every account and every bit of it. Here is the whole shopping list.

Total: about $10–15 a month plus the Claude plan and a domain a year.

The static parts (your home page, a showcase, a portfolio) cost nothing to host. The monthly cost only starts when you build something that needs a server: accounts, live state, uploads. You can go a long way before that.

A few words this page uses
Static page
A page that is the same for everyone: files that a host hands out. No server of your own.
Served app
A thing with a computer of its own behind it, so it can remember who you are, keep live state, take uploads.
The agent
An AI that can read and write files and run commands on your PC, not just chat. Here: Claude Code.
Repository (repo)
A folder of code with its whole history kept. Lives on GitHub.
Deploy
Putting a new version of a thing on the internet.
Terminal
The black window where you type commands. On Windows, PowerShell; on a Mac, Terminal.

1Get your AI partner

This is the part the rest hangs off. You will do very little of the building yourself; you will describe, look, and steer.

  1. Get a Claude subscription. Max is made for long building sessions; Pro works for lighter use and you can move up later.
  2. Install Claude Code, the agent that works on your PC. One command in a terminal:
    npm install -g @anthropic-ai/claude-code
    (If npm is not found, install Node.js first; it brings npm with it.)
  3. Sign in once, in a terminal, and approve it in the browser window that opens:
    claude login
  4. Pick the model: the most capable one available to you. Today that is Claude Fable 5.1, with Claude Opus 5 as the fallback. Type /model inside Claude Code to choose.
How the working relationship goes

You describe what you want in ordinary sentences. The agent builds it: writes the code, runs the tests, opens the pull requests (a proposed change, with a description, that you can read before it goes live). You look at the result in your browser and say what is off. It fixes it. Repeat. Over time you will start to say things like "make that a dropdown" and "no, warmer" and it will know what you mean, because it reads the notes it wrote last time.

The agent owns the code. You own the accounts and the money. Every service on this page is signed up for by you, in your browser, with your card if one is needed. The agent tells you when it needs one and what to click.

The one thing you must never do

Never paste a password, an API key or a token into the chat. Not once, not "just this time". The chat is stored as a transcript; anything in it is written down somewhere you do not control. A good agent will refuse to use a key you pasted and tell you to revoke it and make a new one. If yours does not, tell it to (the skills further down include that rule).

What happens instead: the agent asks you to run one short command in your own terminal that stores the secret straight where it is needed, so it never appears in the chat. See Keys and secrets.

What the agent will ask you to do yourself
  • Sign in to a service in a browser window it opens (Fly, Cloudflare, Neon, GitHub).
  • Add a card where one is required (Fly, and Cloudflare for storage).
  • Run a one-line command that stores a secret (it will give you the exact line).
  • Look at the thing it built and say what you think.
  • Approve a pull request when you are happy with it.

2A place for the code: GitHub

Your code needs a home that is not just your laptop. GitHub is where it lives, where every change is recorded, and where the robot lives that checks each change before it goes live.

  1. Make a free GitHub account.
  2. Make one private repository (a repo: a folder of code with its history). Name it after you, not after your first project; it will hold all of them.
  3. Tell the agent the repo's name. It sets up the rest.
What a monorepo is, and how this one is laid out

A monorepo is one repository holding all of your projects, so they can share code and the agent can see everything at once. A folder per app: apps/home for the home page, apps/<your-app>/web for the part people see and apps/<your-app>/server for the part that remembers things. Shared code in packages/. Your notes and decisions in notes/, which the agent reads and writes too.

Front end: what runs in the visitor's browser: the pages, the buttons, the animation. It is files, and files can be hosted for free. Back end: what runs on a computer you rent: it holds the accounts, the saved data, the live state several people share. Only some apps need one.

Pull request: a proposed change with a description, which you or the agent can review before it is merged into the real thing. CI (continuous integration): every change is checked by a robot before it goes live; the tests run, the code is checked, and a red result stops the merge.

3A name: your domain

A domain is your name on the internet, like yourname.com. Pick one general name for you, not for one project: each thing you make goes on a subdomain in front of it (game.yourname.com, coach.yourname.com), and the home page sits on the bare name.

  1. Buy it at Cloudflare Registrar (sold at cost, about $10–15 a year, and it puts your DNS in the same account as your hosting and storage) or at Porkbun.
  2. If you bought it elsewhere, add the domain to Cloudflare anyway (free) and let the agent walk you through pointing it there.
What DNS is, and the two records an app needs

DNS is the internet's phone book: it turns a name like game.yourname.com into the address of the computer that answers for it. Cloudflare keeps your page of the book, and you (or the agent, with you watching) add lines to it.

A served app on Fly needs two lines: an A record (the computer's IPv4 address) and an AAAA record (its IPv6 address). Fly prints both when the agent asks it for a certificate for the name; you paste them into Cloudflare.

The gotcha: in Cloudflare each record has a cloud icon. Orange means Cloudflare sits in front of the address and rewrites traffic; that breaks Fly's certificate and its live connections. For a Fly app, click the cloud so it is grey: "DNS only". The home page on Cloudflare's own hosting does not need this; Cloudflare manages that record itself.

4Two kinds of hosting

There are two kinds of thing you will make, and they live in different places.

Static pages: Cloudflare, free

Your home page, a portfolio, a game's showcase, anything that is the same for every visitor. These are files, and Cloudflare Workers hands them out from servers all over the world for free. The agent deploys from the command line, and your domain attaches from one small config file in the folder. No card, no monthly bill, no server to look after.

pnpm --filter @<repo>/home build
cd apps/home; wrangler deploy
Served apps: Fly.io, about $10 a month

Anything with accounts, live state that several people watch at once, or uploads, needs a computer of its own. Fly.io rents you one small machine that is always on, handles the secure connection, and gives you a command-line tool the agent drives. You sign up, put a card on file, and the agent does the rest: it writes the config, and once GitHub is connected the app deploys itself every time a pull request is merged.

An app that can tolerate a few seconds' wake-up (a chat, a form) can be set to stop when idle and costs a fraction of that; one that keeps a live session open (a game, a video call) stays on.

When you need which
  • Does it need to remember who someone is? Served.
  • Do several people see the same thing change live? Served.
  • Do people upload things? Served.
  • Otherwise: static, and free. Start there. You can always add a server later, on its own subdomain, without touching the home page.

5Memory for your apps

A served app needs two kinds of memory: a database for the small structured things (accounts, scores, settings) and a place for files (images, video, uploads).

Neon: the database, free

Neon hosts a Postgres database (the standard, boring, excellent kind) on a free tier that is plenty for a personal site, and it keeps a history so a mistake can be rewound. It lives apart from your Fly machine, so if the machine is ever lost the data is not. One project, one database per app.

Cloudflare R2: the files, free to 10 GB

R2 is a bucket (a big folder on the internet) for images, video and anything people upload. Free to 10 GB, and no charge for people downloading from it, which is the cost that bites elsewhere. It needs a card on file at Cloudflare even on the free tier.

The one gotcha we hit: if a page draws an image from the bucket onto a canvas (a map, an editor, a game board), the bucket needs a CORS rule naming your app's address, or the browser refuses the image while plain pictures on the page still work. It is one command; the platform skill below has it. Ask the agent for it the first time a canvas stays blank.

How the agent moves data in

If you already have something (a spreadsheet, an old database, a folder of pictures), the agent writes a small one-off importer, runs it once against the new database or bucket, and deletes it, or keeps it in scripts/ if you might need it again. You never hand-enter anything twice.

6Sending email

Your apps will need to send mail for exactly one reason: signing people in. Resend does that on a free tier (3,000 emails a month), sending from an address at your own domain.

  1. Make a free Resend account and add your domain.
  2. Resend shows three DNS records; add them in Cloudflare (the agent will read them to you). Resend then shows "Verified".
  3. Make an API key in Resend and store it the way Keys and secrets says. Not in the chat.
What a magic-link sign-in is, and why there are no passwords

Someone types their email address. They get an email with one link. They click it and they are signed in for a month. That is the whole thing. No password to invent, forget, reuse or leak; nothing for you to store that could be stolen; and one sign-in works for every app under your domain, because the browser keeps one small note (a cookie) for the whole domain. Visitors who only look never sign in at all.

7Keys and secrets, done right

A secret is anything that lets a program act as you: an API key, a database address with its password in it, a token. Your apps need a handful. Here is where they live and how they get there without ever passing through the chat.

Where secrets live, and the command shape

On Fly, secrets are stored with the app and handed to it when it starts; nobody can read them back, only see their names. You set one from your own terminal, never from the chat:

flyctl secrets set RESEND_API_KEY=<paste the key here, in your terminal> --app <fly-app>

Better still, for a secret nobody needs to see, the agent gives you a line that makes it and stores it in one go, so it never appears anywhere:

flyctl secrets set MASTER_KEY=$(openssl rand -base64 32) --app <fly-app>

The rule, again: nothing goes through the chat. If a key ends up in a transcript, treat it as public: revoke it and make a new one.

How a visitor brings their own AI: the "station" idea

If your app uses AI (a copilot, generated images, a chatty coach), the question is who pays for it. The answer here is: the site never pays for AI. Two ways to do that.

The station. A small program a signed-in person runs on their own PC. It connects out to your app and offers to do the AI work there, under their own Claude subscription and their own accounts. Your server only coordinates; it never sees their login. Free for you, free on top of what they already pay, and it can use their graphics card for the heavy things.

A stored key. For someone without a PC to leave on, your app can hold an API key they paste into a settings page. It is encrypted before it is saved (with a master key that lives only in Fly's secrets), decrypted only for the moment it is used, and never sent back to a browser. They pay their vendor directly.

The app tries the station first, then a stored key, then a harmless offline stand-in, so it always runs. The platform skill below carries the detail.

8Working with the agent: skills

A skill is a file the agent reads before it works: the map of the repo, the rules, the commands, and a checklist for "done". It is the difference between an agent that builds the same way every session and one that starts fresh each time and drifts. When several agents work at once, a shared skill is what keeps them consistent with each other.

How to start one: tell the agent to write it, then correct it as you go. The first version will be roughly right; every time the agent gets something wrong twice, add the rule. Below are the two skills behind this site, with every particular about this site removed. Copy them into your repo at .claude/skills/<name>/SKILL.md and let the agent fill in the placeholders in angle brackets as it learns your setup.

How to build in the repo copy-paste, about 150 lines

Save as .claude/skills/repo-engineering/SKILL.md. It assumes a TypeScript monorepo with pnpm; if yours is different, tell the agent to rewrite the map and commands and keep the standards.

The platform: hosting, secrets, adding an app copy-paste, about 200 lines

Save as .claude/skills/platform/SKILL.md. Replace <you>, <your-domain>, <repo>, <fly-app>, <bucket> and <account-id> as each account is made; the agent can do it when you tell it the name.

How to write your own skill
  1. Frontmatter at the top: a name and a one-paragraph description that says when to read it. The agent uses the description to decide.
  2. The map: a table of folders, what lives in each, and what each depends on.
  3. The data flow: how one feature moves through the code, step by step, so a new one copies the shape.
  4. The commands: how to run, test, lint and build, and the one line that means "done" (the gate).
  5. The standards, each with its why. A rule without a reason gets argued with; a rule with one gets followed.
  6. The done checklist: what the agent runs before it says it has finished.

Keep it under a few hundred lines; a skill the agent cannot hold in its head is not read. Put the long worked examples in a references/ folder beside it and link them. Update it when the agent gets something wrong twice; the second time is the rule.

9Working with several agents

Once the skills exist you can run more than one agent at a time: one building the home page while another fixes a bug in an app. The shape that works: one agent per task, each in its own branch or worktree (a separate copy of the repo folder, so they cannot trip over each other's half-finished files), a skill they all read, and small pull requests that you can review one at a time. If two agents need to change the same file, that is one task, not two.

10Where this page comes from

This is the setup behind renfrovibes.com, written down so you can have your own. The D&D companion, the workout coach and the board game pages are what came out of it.