In development. Nothing is published yet, there is no download, and the console described below is a design rather than something you can open.
Client sites that live in your GitHub and your Cloudflare.
Pick a template, describe the client, and get a complete multi-page site (landing page, privacy policy, terms of use) published to your own Cloudflare from your own GitHub. Then keep editing it by chatting with an AI while you look at the live page.
The unusual part is still what is missing. Your clients' site content, briefs and generated copy never land on Rocket Lab infrastructure: they transit and are discarded. The extension goes further and makes no request to us at all, and the workflow that publishes a site runs in your Actions, not ours.
Who it is for
Agencies that build marketing sites for other people.
It assumes you already work the way an agency works: a GitHub organisation, a Cloudflare account, and a new client every few weeks who needs a small, fast, static site that you will keep editing after launch.
A fit if
- You build sites for clients and hand them over, or hold them on the client's behalf.
- You want each client site in its own repository, with its own history.
- You would rather own the hosting relationship than rent it from a site builder.
- You are comfortable creating one Cloudflare API token, once, and handing it over to be put into your own GitHub organisation.
Not a fit if
- You want a site for your own business, with a credit card and no GitHub account. Self-serve site builders do that well, and they do it by hosting the site for you, which is the opposite of the model here.
- You need a content management system, dynamic pages, or a shop. These are static sites.
- You need one login that every colleague shares. Every person signs in as themselves.
How it works
Four steps, then the site is a repository you own.
-
Pick a template
Each template is a complete, launch-ready site rather than a fragment: a landing page, a privacy policy, terms of use, and a 404. Plain HTML with Tailwind classes, so what the AI edits is what the browser renders.
-
Describe the client
Write a brief. The model fills named slots in the template rather than doing freehand HTML surgery, which is what makes the result predictable enough to review. The legal pages keep their placeholders for entity, jurisdiction, and contact, with a visible banner saying so, because a confident-looking policy full of invented specifics is worse than an obviously unfinished one.
-
Review the preview
Look at the site before anything is committed. Nothing has left your browser except the calls you made to your AI provider with your own key.
-
Publish
A repository is created in your GitHub organisation, the site is committed to it, and your own GitHub Actions deploys it to your own Cloudflare Pages. You are asked before the repository is created, and every creation shows up in your organisation's audit log.
After that, open the client's live page in a browser and keep going. The side panel attaches to the page you are looking at, you describe a change, you review the diff, and the edit is committed to the repository under your own GitHub identity. The page knows which repository backs it because every page it generates says so:
<meta name="source-repo" content="your-agency/acme-dental">
One tag, no registry, and no hostname guessing. The extension reads the page it is attached to and asks nobody. The console does keep a list of which of your repositories are sites, and it is worth being exact about that rather than letting the old sentence stand: it is a crawl of your own GitHub that can be thrown away and rebuilt, not a record only we have.
The centrepiece
Three things get held, and none of them is your client's site.
This page used to say there is no backend, and that was the strongest sentence on it. It is being retired on purpose, so the reason belongs here rather than in a quiet edit. An agency running forty client sites wants a fleet console, and a console needs somewhere to sign you in and somewhere to write down what happened. Neither of those fits inside a browser extension. So a control plane is being built, and the honest move is to publish what it is allowed to hold before it exists rather than after.
What it will hold
- Who is signed in and which agency they belong to, in an encrypted session cookie.
- A list of which of your repositories are sites, built by crawling your GitHub for a topic. If it is ever wrong it gets rebuilt, because it is a copy and not the original.
- An append-only record of what was done in the console, and by whom.
What it will not hold
- Your clients' page content. It transits a request and is discarded with it. The copy that survives is the commit in your repository.
- Your briefs, your prompts, and the copy a model wrote for you. Same rule, same reason.
- Your Cloudflare API token. It is checked, sealed into your own GitHub organisation, and discarded. Not kept at rest, and not kept encrypted at rest either.
That leaves two surfaces with two genuinely different answers, and blurring them together would be the easy dishonest move. So, separately:
The extension makes no request to us at all
Not a telemetry ping, not a licence check, not a config fetch. It talks to GitHub and to your AI provider and to nothing else. That is a rule with a test behind it rather than an intention: a build that reaches a Rocket Lab host fails the check and does not ship. If you never open the console, nothing of yours reaches us, which is the same claim this page has always made.
The console is a service, with everything that implies
It has an origin, a session, a database, and secrets at rest. Content still transits and is discarded, but that is now a property of code we wrote rather than of a thing that does not exist. Those are not the same strength of promise, and that difference is why this section was rewritten instead of trimmed.
Here is every piece of state the product has, and where it lives.
| State | Lives in | Why there |
|---|---|---|
| Site content: HTML and assets | Your GitHub repository | The source of truth. Read and written through the GitHub API. It transits a browser, and for a console edit a request, and is written down at neither end. |
| Briefs, prompts, and the copy a model wrote | Nowhere | They transit. What survives the request is the commit in your repository, which you can read. |
| Per-site config: template, brand tokens, slot values | rocket-site.json, in the site repository |
Versioned with the site it describes, so the config and the site can never disagree. |
| Site inventory: which repositories are sites? | GitHub, as repositories carrying the rocket-site topic, with a rebuildable copy in the console |
The topic on the repository is the truth and the console's list is a crawl of it. Deleting that list loses nothing, which is the test of whether something is a copy. It carries repository names, so it carries your clients' names. |
| Who is signed in to the console | An encrypted session cookie, and a record of you and your agency | Identity and nothing else. A console cannot sign anyone in without knowing who they are, and this is the part of the old claim that could not survive. |
| Your Cloudflare API token | Your GitHub organisation's Actions secrets | Handed over once at setup, checked against Cloudflare, sealed there, discarded. Never at rest on our side. |
| Auth tokens, AI key, preferences | chrome.storage, in your browser profile |
Never sent anywhere except the provider they authenticate to, and never to us. |
| Audit trail | Git history and the Actions run log, plus a log of console actions | The git side is append-only, in your organisation, and already exists. The console side is the one record we genuinely own. |
| The published site | Your Cloudflare Pages | Deployed by your own CI, with your own Cloudflare token. Nothing of ours sits between a visitor and the page. |
| Access policy: who can see a site before launch | Your repository variables, reconciled into Cloudflare Access | Declared in the repository, applied on every deploy, so a manual change never quietly persists. |
Your clients' site content, briefs and generated copy never land on Rocket Lab infrastructure. They transit and are discarded, and the one credential we handle that can reach your Cloudflare is one we do not keep.
And the part an outage makes real: no piece of ours sits between a visitor and a client's page, or between a repository and its deploy. If everything of ours is down, you can still ship a client's site.
This is a weaker claim than the one it replaces, and it would be a poor start to pretend otherwise. "There is nowhere to hold it" was something you could check by reading a manifest and a workflow. "We hold it briefly and discard it" is something you have to believe, and every competitor in this category says it too. What is still checkable is narrower, and it is what the argument now rests on: the sites are in your repositories, the deploys run in your Actions, the pages answer from your Cloudflare, and the token that reaches it is one you can rotate without asking us.
What that costs
Four consequences, stated here rather than discovered later.
Adding a console is not free either, and the bill is different from the old one rather than smaller. This section used to list what having no backend cost. It now lists what having one costs, which is the more useful list because most of it did not exist before. If you read one section on this page, it should probably still be this one.
Something central to revoke now exists
This used to sit here as the opposite entry: nothing central to revoke, nobody can switch you off, including us. Half of that was a feature and half of it was a support problem, and now both have flipped. A session can be killed and an account can be disabled, which is exactly what you want the day a laptop goes missing. It also means there is a switch we own, and the old answer no longer applies. What survives is narrower and still true: switching off the console does not take a published site down, does not touch your repositories, and does not stop a deploy.
Secrets at rest, on our side, for the first time
A console means a database, a key encrypting what sits in it, a sign-in secret, and an application key that can now act on repositories in every organisation that installed it. None of those is a client's page and none is your Cloudflare token, which is never kept. But "there is nothing to breach" was an answer we could give and no longer can. What replaces it is an exact list of what is there, which is the table above and this paragraph.
An outage of ours becomes something you can feel
The console can be down, and then the fleet view and the things that run through it are down. Publishing cannot be, because the workflow runs in your Actions. Serving cannot be, because the pages answer from your Cloudflare. The extension cannot be, because it does not call us at all. That separation is deliberate and it is the property to hold us to.
Still no free tier, and still no pricing
You bring your own AI provider key: Anthropic, OpenAI, or GitHub Models. Generating a site costs whatever your provider charges, billed to you, visible to you. What changed is the reason. A free tier used to be impossible, because there was no server to hold a key. It is now a choice we are not making. How the product itself is paid for is genuinely not settled, and there is no price to quote.
One thing gets easier, and it belongs next to the costs rather than in a brochure. The Cloudflare token step stops being a manual copy into your organisation's settings page: you hand it over once during setup, it is checked against Cloudflare before anything else happens, sealed into your own organisation's secrets, and discarded. It is still your token, in your organisation, and it still never touches the extension. Cross-device sync only half improves in the same way: your identity and your site list follow you to a second laptop, and your AI key still does not, because it stays in one browser profile.
Publishing model
Public by default. Gated only when you ask for it.
A client's marketing site exists to be found, so that is the default and it is not something you have to remember to switch on. The opposite mistake is the dangerous one: a site that is quietly gated is invisible to the customers it was built for, answers every visitor with a login page, drops out of search, and nobody notices, because the only people who check are the ones who can get past the gate.
| Mode | Who can reach it | What a deploy has to prove |
|---|---|---|
| Public, the default | Anyone | The site returns HTTP 200 and the response body carries that repository's source-repo tag. |
| Gated, opt in for the review window | Only the client email addresses you name, through Cloudflare Access | An unauthenticated request redirects. No access gate means no publish. |
Restriction is never inferred
A site is gated because its repository says so, and for no other reason. Not from the branch, not from the environment, and not from an access rule the publisher happens to find lying around on your Cloudflare account. Asking for the review window is an explicit change committed to the repository, reviewable before it happens and visible in the history afterwards.
Proof, not assumption
A deploy never reports success on an unproven state. HTTP 200 on its own is not proof a site is live, because placeholder pages and unrelated projects return 200 too. A gate is proven by a redirect, and it covers wildcard preview URLs as well as the main address, since a static host cannot simply turn preview deployments off.
What you bring
Three things, all of which you keep.
A GitHub organisation
Client site repositories are created inside it. You install the app on the organisation, and you uninstall it whenever you like. Two Cloudflare values land in the organisation's Actions secrets during setup, once, and every future site repository inherits them.
A Cloudflare account
Sites deploy to Pages projects in your account. You create one API token, scoped to Pages and to Access, and it ends up in your GitHub organisation and nowhere else: it passes through setup once to be verified and sealed there, and is not stored on our side. Worth knowing before you start: Cloudflare allows 100 Pages projects per account, and this model uses one per client site.
An AI provider key
Anthropic, OpenAI, or GitHub Models. Your key, your account, your bill, your rate limits. The prompt goes from your browser to that provider and nowhere else.
FAQ
The questions an agency should ask.
Some of these still follow from how the thing is built, which is the strongest kind of answer. Since there is now a console, some of them are promises about how we intend to behave. Those two are not worth the same and they are marked apart below rather than blended.
- Where does my client's content go?
- Into a repository in your GitHub organisation, and onto a Cloudflare Pages project in your Cloudflare account. On the way there it passes through your browser and your AI provider, because you asked a model to write it. Through the extension it passes through nothing else at all. Through the console it passes through a request of ours on its way to GitHub, and is discarded with that request rather than written down. That second sentence is a promise about our code and the first is a property of the design, and the difference is real.
- What happens if Rocket Lab disappears?
- Every published site stays up. The sites are static files in your repositories served from your Cloudflare account, deployed by a workflow that runs in your Actions, and nothing about serving them involves us. That much is unchanged and it is the part worth relying on. What is no longer true is that you would lose nothing else. An agency whose Cloudflare token we sealed into their organisation, whose fleet view lives in our database, and whose console audit trail we hold half of, loses the operations around their sites even though the sites keep serving: the inventory, the deploy statuses, the record of who changed what through the console, and eventually the ability to sign in at all. The sites survive us. The way you run them does not, and that is a real change from what this page used to say.
- Can you see our prompts?
- Not from the extension. The prompt goes from your browser directly to the AI provider you chose, authenticated with your key, with no intermediary to log it and no key of ours involved. From the console a prompt passes through our origin, so the accurate answer there is that it is not stored rather than that it could not be seen. Two related things we should not have claimed in the same breath before: your clients' page content follows the same rule as the prompt, and the names of your clients do not, because the site list is built from your repository names and those are usually client names.
- What if we stop paying?
- This answer used to be "nothing is switched off, because there is nothing central to switch off", and that is no longer true: a console account can be disabled. What cannot happen is the part that mattered. Your sites keep serving, because they serve from your Cloudflare. Your deploys keep running, because they run in your Actions. Your repositories stay yours, and the extension does not check in with anyone before it works. So a lapsed relationship costs you the console and not the websites. Being honest about the current state: pricing does not exist yet, so there is nothing here to sign.
- Who owns the repository?
- You do. It is created in your organisation, at your request, and every commit is attributed to the GitHub account of the person who made it. Commits go straight to the default branch, and where a branch protection rule blocks that, a pull request is opened instead and you are told it happened.
- Is it available yet?
- No. It is in development, there is no store listing and no download, and this page describes a design rather than a shipped product. The console is the newest part of that design and the least built: there is no server code at the time of writing, so nothing described here is a thing you can log into. If it sounds like it fits how your agency works, the most useful thing you can do is tell us which part of it does not.
Interested, or unconvinced?
Both are useful. It is being built for agencies, so the fastest way to change it is to be an agency with an opinion about it.