Skip to content

NAMEaozumi — publish what you built, get a link back

Your dist/ folder
is already a website.

Build the way you always do. aozumi deploy my-site finds the output, sends only that, and prints one link. No config file, no Git connection, no build on our side.

npm i -g @aozumi/aozumi

Node 18 or later. Or skip the install: npx @aozumi/aozumi deploy my-site

EXAMPLES

One deploy, read line by line.

The real output, not a mock-up. Hover or step through a line to see why it printed.

~/my-site

  1. aozumi deploy my-site
  2. Detected vite stack.
  3. Found existing vite build: dist.
  4. Publishing the existing dist output (vite); AOZUMI will not upload your repository or run a build.
  5. Packaged 14 files (182340 bytes).
  6. Preparing the AOZUMI site…
  7. Who should be able to open this site?
  8. 1) Private: only people you invite (default)
  9. 2) Team: people in your AOZUMI workspace
  10. 3) Public: anyone with the link can open it
  11. Choose 1, 2 or 3 [1]: 3
  12. Uploading and verifying the artifact…
  13. Link access: Public: anyone with the link can open it. Change it any time with --public, --team or --private.
  14. https://my-site.aozumi.site
  1. Detected vite stack.vite is a dependency and there is no start or serve script, so this is a static site. Vite sites get index.html fallback for client-side routes.

  2. Found existing vite build: dist.It checked dist, build, out and public for an index.html. Exactly one had it. No --dir needed.

  3. Packaged 14 files (182340 bytes).Packed and hashed on your machine before anything is sent.

  4. Preparing the AOZUMI site…Creates my-site, or finds it if you deployed it before. Same name, new release.

  5. Choose 1, 2 or 3 [1]: 3Asked once, for a new site, in a real terminal. Enter means private. Pass --public, --team or --private to skip it.

  6. Link access: Public: anyone with the link ca…Printed on every deploy, so access never changes without you seeing it.

  7. https://my-site.aozumi.siteThe only line on stdout. URL=$(aozumi deploy my-site) gives a script just the link.

DESCRIPTION

How it decides what to upload.

Top to bottom, first match wins. When a rule is ambiguous it stops and asks rather than guessing.

  1. --artifact=<path> given

    Verifies that packaged artifact and uploads it.

    Verifying the local artifact…
  2. --dir=<directory> given

    Uses that folder if it has an index.html. --dir=. publishes the current folder as a plain site.

  3. One of dist build out public has index.html

    Uploads that folder as it is.

    Found existing vite build: dist.
  4. Two or more of them do

    Stops instead of guessing.

    Found multiple static outputs (dist, public); choose one with --dir=<directory>.
  5. index.html at the root, no package.json

    Treats the folder as the site and sends web files only.

    Publishing 4 web files from the project folder; skipped 4 private or non-web files (…).
  6. Nothing built, but a build script exists

    Asks before running it on your machine with your package manager. --yes answers yes.

    No build output was found. Run pnpm run build locally now? [y/N]
  7. Nothing built and no build script

    Stops and tells you what to do.

    No built output or package.json build script was found. Build locally, then deploy again with --dir=<output>.

Detection reads package.json: next means Next.js, vite means a Vite site, and a start or serve script means a server app. Server artifacts (--stack=node, nextjs, go) are rolling out and are not on for every workspace yet. How they work.

ACCESS

Private until you say otherwise.

A brand-new site asks once in a terminal. Without a terminal (CI, a pipe) it stays private unless you pass a flag. A redeploy never changes access by itself.

Link access flags
FlagWho can open the link
--privateOnly people you invite. default
--teamPeople in your AOZUMI workspace.
--publicAnyone with the link. Public static pages are served from the edge cache.
SYNOPSIS

Four commands. That is all of it.

aozumi login  [--no-browser] [--origin=<https-origin>]
aozumi deploy <site-name> [options]
aozumi verify <artifact-directory>
aozumi logout

Options for deploy

--dir=<directory>
Folder to publish. Detected when left out.
--public | --team | --private
Who can open the link. One per deploy; redeploys keep the current access unless you pass one.
--yes, -y
Approve a required local build without a prompt.
--spa
Serve index.html for unknown paths. On by default for Vite.
--artifact=<path>
Publish an already packaged artifact instead of a folder.
--release=<id>
Resume an interrupted upload.
--environment=<id>
Publish to an existing AOZUMI environment.
--stack=<name>
Override detection: static, vite, nextjs-static, astro-static; node, nextjs or go for server artifacts.
--run=<command>
Start command for a server artifact.
--arch=linux/arm64|linux/amd64
Target for a server artifact; must match the AOZUMI runtime.
--origin=<https-origin>
Control plane to talk to. Defaults to https://aozumi.dev.
--no-browser
login only: print the approval link without opening a browser.
ENVIRONMENT

The same command runs in CI.

Store the key from aozumi login as AOZUMI_TOKEN. Progress goes to stderr and the URL to stdout, so a job can capture just the link. Errors print AOZUMI: <reason> and exit with status 1.

.github/workflows/deploy.yml
- run: npm run build
- run: npx @aozumi/aozumi deploy my-site --team
  env:
    AOZUMI_TOKEN: ${{ secrets.AOZUMI_TOKEN }}
Shell
URL=$(aozumi deploy my-site --team)
echo "Preview: $URL"
AOZUMI_TOKEN
Used instead of the saved login.
AOZUMI_API_URL
Another control plane. The CLI names it on stderr before it sends your token there.
AOZUMI_CONFIG_DIR
Where the login is saved. Defaults to ~/.config/aozumi.
NOTES

Questions people ask.

Does the CLI upload my source code?
No. It uploads built output only: an existing dist, build, out or public folder, or the web files of a plain HTML folder. It never uploads your repository. If nothing is built yet, it asks before running your build script on your machine, and --yes approves that in advance.
What does it skip in a plain HTML folder?
In a folder with index.html at the root and no package.json, it publishes web files only: HTML, CSS, JavaScript, JSON, images, fonts, media and WebAssembly. Dotfiles (including .env and .git), node_modules, key files and source or config files are skipped, and it lists what it skipped.
How do I make a site public?
Pass --public to aozumi deploy. --team limits it to people in your AOZUMI workspace and --private to people you invite. The first deploy of a new site asks once in a terminal, and the default answer is private. Redeploys keep the current setting unless you pass a flag, and every deploy prints the link access.
Can I use it in CI?
Yes. Set AOZUMI_TOKEN to the key that aozumi login saved, pass a link access flag because CI has no terminal to ask in, and pass --yes if the job may need to run the build. npx @aozumi/aozumi works without a global install.
Can it deploy server apps?
Prebuilt server artifacts for Node.js, Next.js and Go (--stack=node, nextjs or go) are rolling out behind a switch and are not on for every workspace yet. If they are off, the CLI says so and nothing is deployed. Static sites work today.
What does it cost?
AOZUMI is in beta and does not charge for it. Plan prices shown in the console are proposals and are not billed. Beta limits apply per workspace, such as the number of apps and deployments per 24 hours.
How do I sign out?
Run aozumi logout. It revokes the key on AOZUMI and removes it from your machine. Keys also appear under Profile → Agents, where you can revoke them.
SEE ALSO

See also

npx @aozumi/aozumi deploy my-site