Skip to content

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.

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.json or pnpm-lock.yaml next to your package.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.

  1. From your project folder, run:

    Terminal window
    npx curiouspub deploy

    To deploy a folder from somewhere else, pass its path: npx curiouspub deploy ./my-site.

  2. 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.

  3. 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.

  4. It packs the project, uploads it and builds it. The build log streams to your terminal.

  5. It prints your address:

    https://brave-otter-3k9d.curiously.dev

    Open 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.

npx is fine for trying it. To keep curious as a command on your machine:

Terminal window
npm install -g curiouspub

The 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:

Terminal window
brew upgrade curiouspub

Then 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:

Terminal window
brew uninstall --cask curious && brew install curiouspub/tap/curiouspub
  • 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 default dist/ folder. A custom outDir isn’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.

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.

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:

Terminal window
claude mcp add curious -- curious mcp

Any MCP client that can start a local command works the same way: The command is curious and the argument is mcp.

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.