Skip to main content
Deploying is log in once, check what will change, then push to sync.
Zero deployment configuration — no Dockerfile, hosting provider config, or CI build settings for the site itself. webstorio.config.ts plus webstorio push is enough; Webstorio compiles and hosts. See How the CLI works.

1. Log in

This opens your browser to authorize the CLI. After you approve, a token is stored locally (OS keychain when available, otherwise a 0600 file in ~/.webstorio/).

2. Check status

See what differs from the remote project before you push:
status is read-only. It shows:
  • Project name and subdomain, then environment and login state
  • Remote publish state (or that the project is not created yet)
  • Only changed pages, components, assets, and schemas (+ new, ~ modified, remote-only)
  • A one-line unchanged summary, or Up to date when nothing differs
Run it again after a push to confirm you’re up to date.

3. Push

On push, the CLI:
  1. Runs the project’s lint and typecheck scripts and aborts if either fails.
  2. Resolves your project by its subdomain (creating it if needed).
  3. Applies configuration & features from webstorio.config.ts.
  4. Merges branding (when present) into the website config, resolving favicon / default OG image paths from uploaded assets.
  5. Composes each page/component into a single self-contained module.
  6. Uploads the code (and syncs pages[].seo when authored); the server validates and compiles authoritatively into the stored HTML, writing a new version per page.
  7. With --publish, publishes the synced pages and the site.
After the first successful push, the project is marked CLI-managed in the dashboard. Editors can still change pages, branding, and features in the UI, but webstorio push will overwrite these changes. Each changed page is reported as created, updated, or error. Unchanged pages, components, features, branding, and schemas are folded into one summary line:

What gets created

  • A project + website bound to your subdomain.
  • A home page (/), one page per pages[] entry, and _header/_footer component pages for your components[].
  • A new page version for each pushed page on every run (push is idempotent — re-running updates existing pages in place).
The subdomain is the project’s identity. Changing it in your config will resolve to (or create) a different project on the next push.
Command options: webstorio login, webstorio status, and webstorio push.