Quickstart
curious.pub takes an Astro project from your machine and gives you back a public address in about the time a build takes. No dashboard, no project setup, no sign-up form. This page gets you from a project folder to that address.
Before you start
Section titled “Before you start”You need three things:
- An Astro project with a committed lockfile. curious installs exactly the versions you tested, so it needs
package-lock.json,npm-shrinkwrap.jsonorpnpm-lock.yamlnext to yourpackage.json. - Node.js 22 or later, if you run curious through npx or npm. With Homebrew you need nothing else.
- An email address to log in with.
Yarn and Bun lockfiles aren’t supported yet, and nor are packages inside a monorepo workspace. In both cases curious tells you so before anything leaves your machine.
Deploy
Section titled “Deploy”-
From your project folder, run:
Terminal window npx curiouspub deployTo deploy a folder from somewhere else, pass its path:
npx curiouspub deploy ./my-site. -
Log in. The first run asks for your email address and sends you a 6-digit code. Type it back and you’re in. An expired or mistyped code costs nothing: Just run it again.
-
curious checks your project on your machine. If a check fails, nothing is uploaded and the message tells you what to fix. A warning asks before carrying on.
One check catches names: a page, or a file in
public/, whose name has a space or an accented letter is refused with the file named, because names like that can’t be served at a web address yet. Rename it and deploy again. -
It packs the project, uploads it and builds it. The build log streams to your terminal.
-
It prints your address:
https://brave-otter-3k9d.curiously.devOpen it. A new address can take up to a minute to start answering, so if you get there first and see an error, refresh.
That’s the whole flow.
Install it (optional)
Section titled “Install it (optional)”npx is fine for trying it. To keep curious as a command on your machine:
npm install -g curiouspubbrew install curiouspub/tap/curiouspubDownload the archive for your platform and checksums.txt from the latest release, then check the archive before extracting it:
sha256sum -c checksums.txt --ignore-missingThe package is curiouspub and the command it installs is curious. Once installed, curious deploy does exactly what npx curiouspub deploy does.
Installed it before? Upgrade first: run the same install command again, or, with Homebrew:
brew upgrade curiouspubThen check that curious version says 0.1.7 or later. npx always fetches the latest version, so it needs no upgrade.
If you installed the older Homebrew cask, also called curious, it no longer updates. Swap it for the formula:
brew uninstall --cask curious && brew install curiouspub/tap/curiouspubWhat you get
Section titled “What you get”- A preview, not a permanent home. Each deploy gets its own address on curiously.dev. Deploying again gives you a new one.
- Previews expire. A site is kept for 72 hours after your last deploy, then removed. Permanent addresses come later.
- Public. Anyone with the address can open it, so don’t publish anything you wouldn’t want seen.
- A small badge. Every HTML page carries a small curious.pub badge in the corner.
- No tracking. We add no analytics or tracking scripts to your site.
- Static sites, for now. Server rendering isn’t supported yet. A deploy that needs it is refused when its build finishes.
- Output in
dist/. The build’s output has to be in Astro’s defaultdist/folder. A customoutDirisn’t supported yet. - Limits. One deploy at a time. A project can hold up to 3,000 files, 5 MB per file and 30 MB in total. A build gets 5 minutes, and the built site can be up to 1,000 files and 30 MB.
- Pagefind search. If you deploy the astro-minimal-starter template, its blog’s search box stays empty. That template expects its host to build a Pagefind search index, and its own build doesn’t make one. Starlight’s built-in search works.
curious respects your .gitignore and always leaves out node_modules, .git, .env* files and your local dist and .astro folders. The full list says exactly what leaves your machine.
When today’s capacity is full, curious says so and offers to let you know when the next batch opens.
If something stops
Section titled “If something stops”Every hard stop ends with a line like Failure ID: lockfile-missing. You can look each one up in the failure list.
If the deploy had already reached curious.pub, it also ends with a Deploy ID: line. Quote it when you tell us about a problem: it is how we find that deploy.
Exit code 3 means curious.pub is closed to this run right now, because today’s capacity is used up or the service is paused. Nothing about your project was wrong.
From an AI agent
Section titled “From an AI agent”curious mcp runs a local MCP server, so your agent deploys the same way you do. With curious installed, add it to your agent, then ask the agent to deploy the site. In Claude Code:
claude mcp add curious -- curious mcpAny MCP client that can start a local command works the same way: The command is curious and the argument is mcp.
Tell us what broke
Section titled “Tell us what broke”This is a test, and your reports are the point of it. Try something that should fail too, such as deploying a folder that isn’t an Astro project, and see whether the message tells you what to do next.
Write to support at curious.pub with what you ran, what it printed (including any Deploy ID line), what you expected, and anything that confused you or felt slow. You can also open an issue at github.com/curiouspub/cli. Security issues go to abuse at curious.pub rather than a public issue.