Show the client the site, not a screenshot.
Most of the delay between "the build is done" and "the client has seen it" is admin — staging credentials, a subdomain someone has to create, a DNS record nobody wants to touch before signoff. Point the CLI at the build folder instead and you have a link to paste into the thread.
Where web agencies reach for this
Signoff before the domain exists
The client hasn't bought the domain yet, or their IT still owns the DNS. The work is finished either way, and it needs somewhere to live while everyone looks at it.
Three versions of the homepage
Deploy each one to its own address and send all three. Nobody has to imagine the difference between option B and option C from a static frame in a design file.
The handover
Once it's approved, the same folder goes wherever the client's hosting is. Nothing here locks the build in — it's the files you already had.
From a folder to a link
- 01
Build it the way you always do
A bundler, a static site generator, or a folder of HTML a designer handed you — the deployable thing is the output folder, and the CLI can't tell which produced it.
- 02
Deploy it under a name the client recognises
Claim the site and set the subdomain: acme-rebuild.harvis.dev reads better in an email than a random slug, and it's the address you'll keep redeploying over.
- 03
Send the link, collect the notes
The URL opens on their phone in a meeting, with no VPN to join and no password to explain first.
Pick how you drive it
All of these publish the same way and produce the same site. The only difference is what you already have open.
- ជួរពាក្យបញ្ជាOne command per project, so pushing a revision during a review call is muscle memory rather than a checklist.
- HTTP APIOne API key covers every site on the account — worth having when the agency is carrying forty of them and you want a script that lists what's still live.
- ទម្លាក់ឯកសារFor the designer on the team who would rather not open a terminal at all.
- GitHub ActionRedeploy the preview on every push to the project's branch, so the client link is never behind the repo.
Put something online and see
The first deploy needs no account: drop a folder in and a live URL comes back, along with a private claim link if you decide to keep the site.
Put a site onlineQuestions from web agencies
Can the client open the preview without a login?
Yes — a deployed site is public at its address, so a link in an email is the whole handoff. There's no password protection either, so treat the URL as the thing you control: give it to the client, and delete the site once the project moves on.
What happens to a preview when the project ends?
Nothing, until you delete it. Sites don't expire. The usual pattern is to leave the preview up through the warranty period and remove it from the dashboard once the client's own hosting is serving the real thing.
Can I transfer a site to the client's own account?
There's no account-to-account transfer, so the handover is the folder rather than the hosting — you send the build output and they deploy it wherever they've bought hosting. If they'd rather keep it here, they can deploy the same folder to their own free account and you delete yours.
Do I need an account?
Not for the first deploy. You get a live URL and a private claim link; the claim link attaches the site to a free account when you want to choose its subdomain, redeploy over it, or delete it.
What can harvis not host?
Anything that needs code running on a server: PHP, Node, Python, a database, or a page rendered at request time. harvis serves the static files you upload and collects submissions from forms on them. A JavaScript front end talking to an API hosted elsewhere works normally.
What does it cost?
Publishing is free — 500 files and 50 MB per site, no card, and sites that do not expire. If a month outgrows the free limits the account steps onto the nearest paid step, from $5, and steps back down when usage does. Bandwidth and SSL are never billed.
Is someone else's job closer to yours?
The product underneath is the same — these pages just start from a different problem.