Authenticate and sync your local project to Webstorio with webstorio push.
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.
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/).
See what differs from the remote project before you push:
npx webstorio status
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
Acme Site (acme)prod (https://webstorio.com) · logged in as AdaRemote: publishedPages ~ aboutSchemas ~ content/blogUnchanged: 2 components, 11 pages, 40 assets, 3 schemas1 change(s) to push — run npx webstorio push.1 schema change(s) — also synced by npx webstorio push, or run npx webstorio schema push.
When the remote project does not exist yet, status lists what will be created
and tells you to run npx webstorio push. Schema-only drift suggests
npx webstorio schema push (or a normal push). Remote-only schemas suggest
schema pull or schema push --prune.Run it again after a push to confirm you’re up to date.To inspect line-by-line patches for changed pages, components, and effective
config settings:
npx webstorio push # sync as draftsnpx webstorio push --publish # sync and make the site live
On push, the CLI:
Runs the project’s lint and typecheck scripts and aborts if either fails.
Resolves your project by its subdomain (creating it if needed).
Applies configuration & features from webstorio.config.ts.
Merges branding (when present) into the website config, resolving favicon /
default OG image paths from uploaded assets.
Composes each page/component into a single self-contained module.
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.
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:
Pages ✓ / — updated ✓ about — created ✗ services — import from 'date-fns'Unchanged: 2 components, 9 pages, 50 assets, 8 features, branding, 4 schemas✓ Synced to my-site.Website: https://my-site.webstor.io
The printed website URL prefers a verified custom domain when one is connected;
otherwise it uses https://<subdomain>.webstor.io.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Webstorio","description":"Documentation for Webstorio — the AI-powered web builder and hosting platform.","colors":{"primary":"#0284C7","light":"#38BDF8","dark":"#059669"},"logo":{"light":"https://mintcdn.com/webstorio/A8Y1yqNjHcD0y95T/logo/light.png?fit=max\u0026auto=format\u0026n=A8Y1yqNjHcD0y95T\u0026q=85\u0026s=b0e6f3a9e94e7bf0d2dd74dbd91d0e49","dark":"https://mintcdn.com/webstorio/A8Y1yqNjHcD0y95T/logo/dark.png?fit=max\u0026auto=format\u0026n=A8Y1yqNjHcD0y95T\u0026q=85\u0026s=183a3d9219d422a03bbc6b042cc3f167","href":"https://webstorio.com"},"favicon":"https://mintcdn.com/webstorio/QNkCuZ8qIGxQrgMr/favicon.ico?fit=max\u0026auto=format\u0026n=QNkCuZ8qIGxQrgMr\u0026q=85\u0026s=0ce43928483b66a8632d94e2329d0979","appearance":{"default":"dark"},"background":{"decoration":"gradient","color":{"light":"#F8FAFC","dark":"#0C0F14"}},"navbar":{"links":[{"href":"https://webstorio.com/pricing","label":"Pricing"},{"href":"https://blog.webstorio.com","label":"Blog"}],"primary":{"type":"button","label":"Get started","href":"https://webstorio.com"}},"footer":{"socials":{"website":"https://webstorio.com"}},"icons":{"library":"lucide"},"styling":{"codeblocks":"dark","latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"webstorio","hasAudioNarration":false,"actualSubdomain":"webstorio","customDomains":["docs.webstorio.com"],"gitSource":{"type":"github","owner":"webstorio","repo":"webstorio-platform","deployBranch":"release","contentDirectory":"apps/docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"collectionId":"cbcf6bf3-e734-491b-a82f-45b65bee1235","liveDeploymentHistoryId":"6ae3209386c7ae22426d1ccf","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae3209386c7ae22426d1ccf"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae3209386c7ae22426d1ccf","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"Documentation","count":15},{"language":"default","tag":"How-to","count":13},{"language":"default","tag":"References","count":12},{"language":"default","tag":"Developer","count":11},{"language":"default","tag":"Explanation","count":8},{"language":"default","tag":"Client SDK","count":6},{"language":"default","tag":"Get started","count":4},{"language":"default","tag":"Overview","count":2},{"language":"default","tag":"Changelog","count":2},{"language":"default","tag":"CLI","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"developer/deploying","slug":"/developer/deploying","pageMetadata":{"title":"Deploying","description":"Authenticate and sync your local project to Webstorio with webstorio push.","icon":"rocket","href":"/developer/deploying"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Authenticate and sync your local project to Webstorio with webstorio push.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Deploying is log in once, check what will change, then push to sync.`}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Zero deployment configuration`}),` — no Dockerfile, hosting provider config, or\nCI build settings for the site itself. `,_jsx(_components.code,{children:`webstorio.config.ts`}),` plus `,_jsx(_components.code,{children:`webstorio push`}),` is enough; Webstorio compiles and hosts. See `,_jsx(_components.a,{href:`/developer/how-cli-works#zero-deployment-configuration`,children:`How the CLI\nworks`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`1-log-in`,children:`1. Log in`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`npx`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` webstorio`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` login`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`This opens your browser to authorize the CLI. After you approve, a token is\nstored locally (OS keychain when available, otherwise a `,_jsx(_components.code,{children:`0600`}),` file in\n`,_jsx(_components.code,{children:`~/.webstorio/`}),`).`]}),`\n`,_jsx(Heading,{level:`2`,id:`2-check-status`,children:`2. Check status`}),`\n`,_jsxs(_components.p,{children:[`See what differs from the remote project `,_jsx(_components.strong,{children:`before`}),` you push:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`npx`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` webstorio`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` status`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`status`}),` is read-only. It shows:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Project`}),` name and subdomain, then environment and login state`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Remote`}),` publish state (or that the project is not created yet)`]}),`\n`,_jsxs(_components.li,{children:[`Only `,_jsx(_components.strong,{children:`changed`}),` pages, components, assets, and schemas (`,_jsx(_components.code,{children:`+`}),` new, `,_jsx(_components.code,{children:`~`}),`\nmodified, `,_jsx(_components.code,{children:`−`}),` remote-only)`]}),`\n`,_jsxs(_components.li,{children:[`A one-line unchanged summary, or `,_jsx(_components.strong,{children:`Up to date`}),` when nothing differs`]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`15`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`15`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Acme Site (acme)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`prod (https://webstorio.com) · logged in as Ada`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Remote: published`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Pages`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ~ about`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Schemas`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ~ content/blog`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Unchanged: 2 components, 11 pages, 40 assets, 3 schemas`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`1 change(s) to push — run npx webstorio push.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`1 schema change(s) — also synced by npx webstorio push, or run npx webstorio schema push.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`When the remote project does not exist yet, `,_jsx(_components.code,{children:`status`}),` lists what will be created\nand tells you to run `,_jsx(_components.code,{children:`npx webstorio push`}),`. Schema-only drift suggests\n`,_jsx(_components.code,{children:`npx webstorio schema push`}),` (or a normal push). Remote-only schemas suggest\n`,_jsx(_components.code,{children:`schema pull`}),` or `,_jsx(_components.code,{children:`schema push --prune`}),`.`]}),`\n`,_jsx(_components.p,{children:`Run it again after a push to confirm you’re up to date.`}),`\n`,_jsxs(_components.p,{children:[`To inspect `,_jsx(_components.strong,{children:`line-by-line`}),` patches for changed pages, components, and effective\nconfig settings:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`npx`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` webstorio`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` diff`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`3-push`,children:`3. Push`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`npx`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` webstorio`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` push`}),_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:` # sync as drafts`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`npx`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` webstorio`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` push`}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:` --publish`}),_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:` # sync and make the site live`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`On push, the CLI:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Runs the project’s `,_jsx(_components.code,{children:`lint`}),` and `,_jsx(_components.code,{children:`typecheck`}),` scripts and aborts if either fails.`]}),`\n`,_jsxs(_components.li,{children:[`Resolves your project by its `,_jsx(_components.code,{children:`subdomain`}),` (creating it if needed).`]}),`\n`,_jsxs(_components.li,{children:[`Applies configuration \u0026 features from `,_jsx(_components.code,{children:`webstorio.config.ts`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Merges `,_jsx(_components.code,{children:`branding`}),` (when present) into the website config, resolving favicon /\ndefault OG image paths from uploaded assets.`]}),`\n`,_jsx(_components.li,{children:`Composes each page/component into a single self-contained module.`}),`\n`,_jsxs(_components.li,{children:[`Uploads the `,_jsx(_components.code,{children:`code`}),` (and syncs `,_jsx(_components.code,{children:`pages[].seo`}),` when authored); the `,_jsx(_components.strong,{children:`server\nvalidates and compiles`}),` authoritatively into the stored HTML, writing a new\nversion per page.`]}),`\n`,_jsxs(_components.li,{children:[`With `,_jsx(_components.code,{children:`--publish`}),`, publishes the synced pages and the site.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`After the first successful push, the project is marked `,_jsx(_components.strong,{children:`CLI-managed`}),` in the\ndashboard. Editors can still change pages, branding, and features in the UI, but `,_jsx(_components.code,{children:`webstorio push`}),` will overwrite these changes.`]}),`\n`,_jsxs(_components.p,{children:[`Each changed page is reported as `,_jsx(_components.code,{children:`created`}),`, `,_jsx(_components.code,{children:`updated`}),`, or `,_jsx(_components.code,{children:`error`}),`. Unchanged\npages, components, features, branding, and schemas are folded into one summary\nline:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`10`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`10`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Pages`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ✓ / — updated`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ✓ about — created`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ✗ services — import from 'date-fns'`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Unchanged: 2 components, 9 pages, 50 assets, 8 features, branding, 4 schemas`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`✓ Synced to my-site.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Website: https://my-site.webstor.io`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`The printed website URL prefers a verified custom domain when one is connected;\notherwise it uses `,_jsx(_components.code,{children:`https://\u003csubdomain>.webstor.io`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`what-gets-created`,children:`What gets created`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`A `,_jsx(_components.strong,{children:`project`}),` + `,_jsx(_components.strong,{children:`website`}),` bound to your `,_jsx(_components.code,{children:`subdomain`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`A `,_jsx(_components.strong,{children:`home page`}),` (`,_jsx(_components.code,{children:`/`}),`), one page per `,_jsx(_components.code,{children:`pages[]`}),` entry, and `,_jsx(_components.code,{children:`_header`}),`/`,_jsx(_components.code,{children:`_footer`}),`\ncomponent pages for your `,_jsx(_components.code,{children:`components[]`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`A new `,_jsx(_components.strong,{children:`page version`}),` for each pushed page on every run (push is idempotent —\nre-running updates existing pages in place).`]}),`\n`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`subdomain`}),` is the project’s identity. Changing it in your config will\nresolve to (or create) a different project on the next push.`]})}),`\n`,_jsxs(_components.p,{children:[`Command options: `,_jsx(_components.a,{href:`/cli/commands#webstorio-login`,children:_jsx(_components.code,{children:`webstorio login`})}),`,\n`,_jsx(_components.a,{href:`/cli/commands#webstorio-status`,children:_jsx(_components.code,{children:`webstorio status`})}),`, and\n`,_jsx(_components.a,{href:`/cli/commands#webstorio-push`,children:_jsx(_components.code,{children:`webstorio push`})}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"Deploying","description":"Authenticate and sync your local project to Webstorio with webstorio push.","icon":"rocket","href":"/developer/deploying"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"1. Log in","slug":"1-log-in","depth":2,"children":[]},{"title":"2. Check status","slug":"2-check-status","depth":2,"children":[]},{"title":"3. Push","slug":"3-push","depth":2,"children":[]},{"title":"What gets created","slug":"what-gets-created","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"webstorio","siteName":"Webstorio","title":"Deploying - Webstorio","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-29T10:31:51.222Z","originalFileLocation":"developer/deploying.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Authenticate and sync your local project to Webstorio with webstorio push.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Webstorio\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/webstorio/JSuJ6W4VOkpns6w-/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/webstorio/JSuJ6W4VOkpns6w-/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/webstorio/JSuJ6W4VOkpns6w-/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/webstorio/JSuJ6W4VOkpns6w-/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/webstorio/JSuJ6W4VOkpns6w-/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/webstorio/JSuJ6W4VOkpns6w-/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/webstorio/JSuJ6W4VOkpns6w-/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/webstorio/JSuJ6W4VOkpns6w-/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/webstorio/JSuJ6W4VOkpns6w-/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Deploying - Webstorio\">\u003cmeta data-mint-head property=\"og:description\" content=\"Authenticate and sync your local project to Webstorio with webstorio push.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Webstorio\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.webstorio.com/developer/deploying\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://webstorio.mintlify.app/_mintlify/api/og/v2?division=How-to\u0026amp;title=Deploying\u0026amp;description=Authenticate+and+sync+your+local+project+to+Webstorio+with+webstorio+push.\u0026amp;theme=61938834aef9d73c10d67b82\u0026amp;signature=a91d212694c3769113ebfd58ea21ee4387008d549c41c3d787287635ee76a8a0\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Deploying - Webstorio\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Authenticate and sync your local project to Webstorio with webstorio push.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://webstorio.mintlify.app/_mintlify/api/og/v2?division=How-to\u0026amp;title=Deploying\u0026amp;description=Authenticate+and+sync+your+local+project+to+Webstorio+with+webstorio+push.\u0026amp;theme=61938834aef9d73c10d67b82\u0026amp;signature=a91d212694c3769113ebfd58ea21ee4387008d549c41c3d787287635ee76a8a0\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/webstorio/JSuJ6W4VOkpns6w-/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Webstorio\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0284C7\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.webstorio.com/developer/deploying\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/developer/deploying.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.webstorio.com/#organization\",\"name\":\"Webstorio\",\"url\":\"https://docs.webstorio.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/webstorio/A8Y1yqNjHcD0y95T/logo/light.png?fit=max\u0026auto=format\u0026n=A8Y1yqNjHcD0y95T\u0026q=85\u0026s=b0e6f3a9e94e7bf0d2dd74dbd91d0e49\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.webstorio.com#website\",\"name\":\"Webstorio\",\"url\":\"https://docs.webstorio.com\",\"publisher\":{\"@id\":\"https://docs.webstorio.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.webstorio.com/developer/deploying#webpage\",\"url\":\"https://docs.webstorio.com/developer/deploying\",\"name\":\"Deploying\",\"description\":\"Authenticate and sync your local project to Webstorio with webstorio push.\",\"dateModified\":\"2026-10-29T10:31:51.222Z\",\"isPartOf\":{\"@id\":\"https://docs.webstorio.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.webstorio.com/developer/deploying#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.webstorio.com/developer/deploying#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"How-to\",\"item\":\"https://docs.webstorio.com/developer/local-development\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Deploying\",\"item\":\"https://docs.webstorio.com/developer/deploying\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.webstorio.com/developer/deploying#article\",\"headline\":\"Deploying\",\"name\":\"Deploying\",\"description\":\"Authenticate and sync your local project to Webstorio with webstorio push.\",\"url\":\"https://docs.webstorio.com/developer/deploying\",\"mainEntityOfPage\":{\"@id\":\"https://docs.webstorio.com/developer/deploying#webpage\"},\"dateModified\":\"2026-10-29T10:31:51.222Z\",\"publisher\":{\"@id\":\"https://docs.webstorio.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.webstorio.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Webstorio\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Webstorio","nav":{"global":null,"tabs":[{"tab":"Documentation","icon":"book-open","pages":[{"title":"Documentation","href":""}]},{"tab":"Developer","icon":"square-terminal","groups":[{"group":"Get started","pages":[{"title":"Developer","icon":"square-terminal","href":"/developer"},{"title":"Your first site with the CLI","icon":"rocket","href":"/developer/your-first-site"}]},{"group":"Explanation","pages":[{"title":"How the CLI works","icon":"terminal","href":"/developer/how-cli-works"},{"title":"Project structure","icon":"folder-tree","href":"/developer/project-structure"},{"title":"CLI, MCP, and SDK","icon":"layers","href":"/developer/cli-mcp-sdk"}]},{"group":"How-to","pages":[{"title":"Local development","icon":"monitor","href":"/developer/local-development"},{"title":"Routing","description":"Map pages to URLs in webstorio.config.ts — static paths, nested routes, and dynamic {param} wildcards.","icon":"route","href":"/developer/routing"},{"title":"Deploying","icon":"rocket","href":"/developer/deploying"},{"title":"Feature schemas","description":"Version CMS content types, forms, and App Data tables as JSON with schemasDir and webstorio schema.","icon":"database","href":"/developer/schemas"},{"title":"Use AI agents on local files","icon":"bot","href":"/developer/ai-agents"},{"title":"Connect MCP","icon":"server","href":"/developer/connect-mcp"}]},{"group":"Help","pages":[{"title":"Contact","icon":"mail","url":"mailto:[email protected]","href":"/guides/contact"}]}]},{"tab":"References","icon":"code","pages":[{"title":"References","href":"/api-reference/introduction"}]},{"tab":"Changelog","icon":"history","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Deploying - Webstorio","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":[],"chunks":[]}