Securely claim a new private OpenWork deployment without enabling public signup.
A private deployment should start with public signup disabled. Configuring an email in the owner or platform-admin allowlist authorizes that identity after authentication; it does not create an account, choose a password, or generate a default administrator password.Releases that include initial-administrator bootstrap provide a dedicated setup page at:
https://<your-den-web-host>/setup
Chart and image versions without /setup do not support this private bootstrap flow. Upgrade before attempting first-user setup. Entering an allowlisted email on the normal sign-in page cannot create a missing account.
Configure the initial administrator email as an eligible singleton-organization owner (DEN_SINGLE_ORG_OWNER_EMAILS on Den API).
Add the same email to the platform-admin allowlist only if that person also needs deployment-wide /admin access.
Generate a unique one-time setup code.
Inject the code through a Kubernetes Secret or your platform’s secret store as DEN_INITIAL_ADMIN_BOOTSTRAP_CODE, or mount it from a file and set DEN_INITIAL_ADMIN_BOOTSTRAP_CODE_FILE.
Keep public signup disabled.
The setup code is a plain secret string, not a hash or token generated by OpenWork. Never place the real setup code in a committed Helm values file, ConfigMap, container image, source-control file, support ticket, screenshot, logs, or PR.
The evaluation stack passes the same two Den API variables through OPENWORK_OWNER_EMAILS and OPENWORK_SETUP_CODE. Set them in the .env file beside docker-compose.eval.yml, together with OPENWORK_ALLOW_SIGNUP=false, before the first docker compose up:
Then open http://localhost:3005/setup and continue with Complete setup. The .env file holds the real setup code, so keep it private and do not commit it.
Wait until Den web, Den API, and the migration Job are healthy.
Open /setup on the Den web hostname.
Enter the configured administrator email and the one-time setup code.
Choose the administrator’s name and password.
Confirm that OpenWork signs the administrator in and opens the singleton organization.
The setup flow uses the existing Better Auth password and session protections. Successful setup creates the first account, creates or claims the singleton organization, grants the configured owner and platform-admin roles, and makes setup unavailable because the deployment now has a user.
revisiting /setup reports that setup is complete or unavailable;
the one-time code cannot create another administrator;
unknown users still cannot sign up;
the administrator can sign out and use normal password sign-in;
restarting or scaling Den API does not re-enable setup.
If the deployment already contains a user, bootstrap remains unavailable even if its setup Secret still exists. Rotating or restoring the Secret does not reopen setup unless an operator deliberately changes the database outside OpenWork.
Use the first owner as a break-glass account, then configure SAML or OIDC SSO and SCIM for normal workforce access. Protect the break-glass identity and recovery material according to your organization’s access-control policy.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"OpenWork Docs","colors":{"primary":"#011627","light":"#cbd5e1","dark":"#011627"},"logo":{"light":"https://mintcdn.com/differentai/bbTblqmGCwQ9TUdJ/logo/light.svg?fit=max\u0026auto=format\u0026n=bbTblqmGCwQ9TUdJ\u0026q=85\u0026s=4467903d12836ac81ccb6eef9dbe7bde","dark":"https://mintcdn.com/differentai/bbTblqmGCwQ9TUdJ/logo/dark.svg?fit=max\u0026auto=format\u0026n=bbTblqmGCwQ9TUdJ\u0026q=85\u0026s=104602207077f80bd2961c67c80dfcf4"},"favicon":"https://mintcdn.com/differentai/bbTblqmGCwQ9TUdJ/logo/light.svg?fit=max\u0026auto=format\u0026n=bbTblqmGCwQ9TUdJ\u0026q=85\u0026s=4467903d12836ac81ccb6eef9dbe7bde","api":{"openapi":"https://api.openworklabs.com/openapi.json?public=1"},"background":{"color":{"light":"#ffffff","dark":"#011627"}},"navbar":{"primary":{"type":"button","label":"Download OpenWork","href":"https://openworklabs.com/download"}},"seo":{"metatags":{"og:image":"https://openworklabs.com/docs/images/openwork-social.png","og:image:alt":"OpenWork — Your AI workspace. Without vendor lock-in.","twitter:image:alt":"OpenWork — Your AI workspace. Without vendor lock-in."}},"errors":{"404":{"redirect":false,"title":"Missing Documentation?","description":"If you're technical and want to use a specific part of the app that is not documented well yet, [send us a quick email](mailto:team@openworklabs.com?subject=missing%20documentation\u0026body=hey%20my%20github%20is%20%7Busername%7D%2C%20I%27m%20interested%20in%20%7Bfeature%7D%20from%20openwork%20but%20I%27m%20missing%20documentation%20on%20it%2C%20could%20you%20create%20it%3F%0A%0AThanks) and tell us what you're missing."}},"markdown":{"instructions":["For agents: install the OpenWork desktop app with `brew install --cask openwork` (macOS) or from https://openworklabs.com/download. Do not run `npx openwork`; the npm package named `openwork` is a different project.","Connect an agent to OpenWork with the MCP Gateway: `claude mcp add --transport http openwork https://api.openworklabs.com/mcp/agent`. Teams sign up at https://app.openworklabs.com?mode=sign-up.","Step-by-step agent guide: https://openworklabs.com/docs/start-here/use-openwork-from-an-ai-agent.md","Connect Slack (any organization admin): https://openworklabs.com/docs/slack/connect-slack.md. OpenWork in Slack (@openwork bot) is private alpha for approved organizations. Setup guide: https://openworklabs.com/docs/slack/overview.md. Agent skill: https://openworklabs.com/.well-known/agent-skills/set-up-openwork-slack/SKILL.md."]},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"differentai","hasAudioNarration":false,"actualSubdomain":"differentai","customDomains":["openworklabs.com"],"gitSource":{"type":"github","owner":"different-ai","repo":"openwork","deployBranch":"dev","contentDirectory":"packages/docs","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af4d6f6be411b2d482d005f","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"API","count":695},{"language":"default","tag":"Capability Sources","count":86},{"language":"default","tag":"Inference Providers","count":60},{"language":"default","tag":"Admin","count":51},{"language":"default","tag":"Organizations","count":50},{"language":"default","tag":"SSO","count":48},{"language":"default","tag":"Desktop App","count":30},{"language":"default","tag":"Authentication","count":30},{"language":"default","tag":"Connectors","count":30},{"language":"default","tag":"MCP Gateway","count":27}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","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":"rbac-expansion","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":"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":"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":"editor-metadata","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},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#topbar-cta-button>a[href=\"https://openworklabs.com/download\"]{padding-right:0.75rem}#topbar-cta-button>a[href=\"https://openworklabs.com/download\"]>div>svg[aria-hidden=\"true\"]{display:none}body:has(.docs-intro) #header{display:none}#content-area h1,#content-area h2,#content-area h3,#content-area h4{color:#011627;letter-spacing:-0.025em}.docs-intro{padding:8px 0 32px;margin-bottom:32px;border-bottom:1px solid #e5e7eb}#content-area .docs-eyebrow{margin:0 0 16px;color:#4b5563;font-family:ui-monospace, SFMono-Regular, Menlo, monospace;font-size:11px;line-height:1.6;letter-spacing:0.1em;text-transform:uppercase}#content-area .docs-intro h1,#content-area .docs-intro .docs-hero-title{margin:0;max-width:680px;font-size:clamp(2.25rem, 4vw, 3rem);font-weight:500;line-height:1.12;letter-spacing:-0.045em;text-wrap:balance}#content-area .docs-lead{margin:20px 0 24px;color:#4b5563;font-size:18px;line-height:1.65}#content-area .docs-section-title{margin:0 0 16px;font-size:clamp(1.75rem, 3vw, 2.25rem);font-weight:500;line-height:1.2;scroll-margin-top:150px}.docs-actions{display:flex;flex-wrap:wrap;gap:12px}#content-area .docs-actions a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 20px;border:1px solid #e5e7eb;border-radius:999px;color:#011627;background:#f0f4f9;font-size:15px;font-weight:500;text-decoration:none}#content-area .docs-actions a:first-child{color:#ffffff;background:#011627;border-color:#011627}#content-area .docs-actions a:hover{opacity:0.85}#content-area .card{background:#f8fafc;border-color:#e5e7eb}a:focus-visible,button:focus-visible{outline:2px solid #011627;outline-offset:4px}@media (max-width: 1023px){#content-area a[aria-label=\"Navigate to header\"]{margin-left:-16px;width:16px}#content-area a[aria-label=\"Navigate to header\"]>div{width:16px;height:24px}}.dark #content-area :is(h1,h2,h3,h4),.dark #content-area :is(.docs-lead,.docs-eyebrow){color:#e2e8f0}.dark .docs-intro{border-color:#334155}.dark #content-area .docs-actions a{color:#e2e8f0;background:#172b3b;border-color:#475569}.dark #content-area .docs-actions a:first-child{color:#011627;background:#e2e8f0}.dark #content-area .card{background-color:#0b1e30;border-color:#334155}.dark :is(a,button):focus-visible{outline-color:#e2e8f0}a[href^=\"https://www.mintlify.com\"][href*=\"utm_campaign=poweredBy\"]{color:#4b5563}.dark a[href^=\"https://www.mintlify.com\"][href*=\"utm_campaign=poweredBy\"]{color:#cbd5e1}"}],"page":{"pagePath":"self-host/deploy-to-your-cloud/first-administrator","slug":"/self-host/deploy-to-your-cloud/first-administrator","pageMetadata":{"title":"Create the first administrator","description":"Securely claim a new private OpenWork deployment without enabling public signup.","href":"/self-host/deploy-to-your-cloud/first-administrator"},"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: \"Securely claim a new private OpenWork deployment without enabling public signup.\"\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`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`A private deployment should start with public signup disabled. Configuring an email in the owner or platform-admin allowlist authorizes that identity after authentication; it does not create an account, choose a password, or generate a default administrator password.`}),`\n`,_jsx(_components.p,{children:`Releases that include initial-administrator bootstrap provide a dedicated setup page at:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://\u003cyour-den-web-host>/setup`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Chart and image versions without `,_jsx(_components.code,{children:`/setup`}),` do not support this private bootstrap flow. Upgrade before attempting first-user setup. Entering an allowlisted email on the normal sign-in page cannot create a missing account.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`before-installing`,children:`Before installing`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Configure the initial administrator email as an eligible singleton-organization owner (`,_jsx(_components.code,{children:`DEN_SINGLE_ORG_OWNER_EMAILS`}),` on Den API).`]}),`\n`,_jsxs(_components.li,{children:[`Add the same email to the platform-admin allowlist only if that person also needs deployment-wide `,_jsx(_components.code,{children:`/admin`}),` access.`]}),`\n`,_jsx(_components.li,{children:`Generate a unique one-time setup code.`}),`\n`,_jsxs(_components.li,{children:[`Inject the code through a Kubernetes Secret or your platform’s secret store as `,_jsx(_components.code,{children:`DEN_INITIAL_ADMIN_BOOTSTRAP_CODE`}),`, or mount it from a file and set `,_jsx(_components.code,{children:`DEN_INITIAL_ADMIN_BOOTSTRAP_CODE_FILE`}),`.`]}),`\n`,_jsx(_components.li,{children:`Keep public signup disabled.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`The setup code is a plain secret string, not a hash or token generated by OpenWork. Never place the real setup code in a committed Helm values file, ConfigMap, container image, source-control file, support ticket, screenshot, logs, or PR.`}),`\n`,_jsx(Heading,{level:`3`,id:`docker-compose-evaluation-stack`,children:`Docker Compose evaluation stack`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.a,{href:`/self-host/evaluate-with-docker-compose`,children:`evaluation stack`}),` passes the same two Den API variables through `,_jsx(_components.code,{children:`OPENWORK_OWNER_EMAILS`}),` and `,_jsx(_components.code,{children:`OPENWORK_SETUP_CODE`}),`. Set them in the `,_jsx(_components.code,{children:`.env`}),` file beside `,_jsx(_components.code,{children:`docker-compose.eval.yml`}),`, together with `,_jsx(_components.code,{children:`OPENWORK_ALLOW_SIGNUP=false`}),`, before the first `,_jsx(_components.code,{children:`docker compose up`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`printf`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'OPENWORK_ALLOW_SIGNUP=false\\\\nOPENWORK_OWNER_EMAILS=%s\\\\nOPENWORK_SETUP_CODE=%s\\\\n'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'admin@example.com'`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"$(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`openssl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` rand `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`-hex`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 16`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`)\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` >>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` .env`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`docker`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` compose`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -f`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` docker-compose.eval.yml`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` up`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --wait`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Then open `,_jsx(_components.code,{children:`http://localhost:3005/setup`}),` and continue with `,_jsx(_components.a,{href:`#complete-setup`,children:`Complete setup`}),`. The `,_jsx(_components.code,{children:`.env`}),` file holds the real setup code, so keep it private and do not commit it.`]}),`\n`,_jsx(Heading,{level:`2`,id:`complete-setup`,children:`Complete setup`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Wait until Den web, Den API, and the migration Job are healthy.`}),`\n`,_jsxs(_components.li,{children:[`Open `,_jsx(_components.code,{children:`/setup`}),` on the Den web hostname.`]}),`\n`,_jsx(_components.li,{children:`Enter the configured administrator email and the one-time setup code.`}),`\n`,_jsx(_components.li,{children:`Choose the administrator’s name and password.`}),`\n`,_jsx(_components.li,{children:`Confirm that OpenWork signs the administrator in and opens the singleton organization.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`The setup flow uses the existing Better Auth password and session protections. Successful setup creates the first account, creates or claims the singleton organization, grants the configured owner and platform-admin roles, and makes setup unavailable because the deployment now has a user.`}),`\n`,_jsx(Heading,{level:`2`,id:`verify-the-boundary`,children:`Verify the boundary`}),`\n`,_jsx(_components.p,{children:`After setup:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`revisiting `,_jsx(_components.code,{children:`/setup`}),` reports that setup is complete or unavailable;`]}),`\n`,_jsx(_components.li,{children:`the one-time code cannot create another administrator;`}),`\n`,_jsx(_components.li,{children:`unknown users still cannot sign up;`}),`\n`,_jsx(_components.li,{children:`the administrator can sign out and use normal password sign-in;`}),`\n`,_jsx(_components.li,{children:`restarting or scaling Den API does not re-enable setup.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`If the deployment already contains a user, bootstrap remains unavailable even if its setup Secret still exists. Rotating or restoring the Secret does not reopen setup unless an operator deliberately changes the database outside OpenWork.`}),`\n`,_jsx(Heading,{level:`2`,id:`configure-sso-next`,children:`Configure SSO next`}),`\n`,_jsx(_components.p,{children:`Use the first owner as a break-glass account, then configure SAML or OIDC SSO and SCIM for normal workforce access. Protect the break-glass identity and recovery material according to your organization’s access-control policy.`})]})}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":{"config":{},"pageMetadata":{"title":"Create the first administrator","description":"Securely claim a new private OpenWork deployment without enabling public signup.","href":"/self-host/deploy-to-your-cloud/first-administrator"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Before installing","slug":"before-installing","depth":2,"children":[{"title":"Docker Compose evaluation stack","slug":"docker-compose-evaluation-stack","depth":3,"children":[]}]},{"title":"Complete setup","slug":"complete-setup","depth":2,"children":[]},{"title":"Verify the boundary","slug":"verify-the-boundary","depth":2,"children":[]},{"title":"Configure SSO next","slug":"configure-sso-next","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"differentai","siteName":"OpenWork Docs","title":"Create the first administrator - OpenWork Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-10T04:44:52.096Z","originalFileLocation":"self-host/deploy-to-your-cloud/first-administrator.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=\"system\"}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=\"Securely claim a new private OpenWork deployment without enabling public signup.\">\u003cmeta data-mint-head name=\"application-name\" content=\"OpenWork Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/differentai/wKsTNhaHes0Tin67/_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=\"/docs/mintlify-assets/_mintlify/favicons/differentai/wKsTNhaHes0Tin67/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/differentai/wKsTNhaHes0Tin67/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/differentai/wKsTNhaHes0Tin67/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/differentai/wKsTNhaHes0Tin67/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/differentai/wKsTNhaHes0Tin67/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/differentai/wKsTNhaHes0Tin67/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/differentai/wKsTNhaHes0Tin67/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/differentai/wKsTNhaHes0Tin67/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create the first administrator - OpenWork Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Securely claim a new private OpenWork deployment without enabling public signup.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"OpenWork Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://openworklabs.com/docs/self-host/deploy-to-your-cloud/first-administrator\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://openworklabs.com/docs/images/openwork-social.png\">\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=\"Create the first administrator - OpenWork Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Securely claim a new private OpenWork deployment without enabling public signup.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://openworklabs.com/docs/images/openwork-social.png\">\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=\"/docs/mintlify-assets/_mintlify/favicons/differentai/wKsTNhaHes0Tin67/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"OpenWork Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#011627\">\u003cmeta data-mint-head name=\"og:image:alt\" content=\"OpenWork — Your AI workspace. Without vendor lock-in.\">\u003cmeta data-mint-head name=\"twitter:image:alt\" content=\"OpenWork — Your AI workspace. Without vendor lock-in.\">\u003clink data-mint-head rel=\"canonical\" href=\"https://openworklabs.com/docs/self-host/deploy-to-your-cloud/first-administrator\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/self-host/deploy-to-your-cloud/first-administrator.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://openworklabs.com/#organization\",\"name\":\"OpenWork Docs\",\"url\":\"https://openworklabs.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/differentai/bbTblqmGCwQ9TUdJ/logo/light.svg?fit=max\u0026auto=format\u0026n=bbTblqmGCwQ9TUdJ\u0026q=85\u0026s=4467903d12836ac81ccb6eef9dbe7bde\"}},{\"@type\":\"WebSite\",\"@id\":\"https://openworklabs.com/docs#website\",\"name\":\"OpenWork Docs\",\"url\":\"https://openworklabs.com/docs\",\"publisher\":{\"@id\":\"https://openworklabs.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://openworklabs.com/docs/self-host/deploy-to-your-cloud/first-administrator#webpage\",\"url\":\"https://openworklabs.com/docs/self-host/deploy-to-your-cloud/first-administrator\",\"name\":\"Create the first administrator\",\"description\":\"Securely claim a new private OpenWork deployment without enabling public signup.\",\"dateModified\":\"2026-09-10T04:44:52.096Z\",\"isPartOf\":{\"@id\":\"https://openworklabs.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://openworklabs.com/docs/self-host/deploy-to-your-cloud/first-administrator#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://openworklabs.com/docs/self-host/deploy-to-your-cloud/first-administrator#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Deploy to your cloud\",\"item\":\"https://openworklabs.com/docs/self-host/deploy-to-your-cloud/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create the first administrator\",\"item\":\"https://openworklabs.com/docs/self-host/deploy-to-your-cloud/first-administrator\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://openworklabs.com/docs/self-host/deploy-to-your-cloud/first-administrator#article\",\"headline\":\"Create the first administrator\",\"name\":\"Create the first administrator\",\"description\":\"Securely claim a new private OpenWork deployment without enabling public signup.\",\"url\":\"https://openworklabs.com/docs/self-host/deploy-to-your-cloud/first-administrator\",\"mainEntityOfPage\":{\"@id\":\"https://openworklabs.com/docs/self-host/deploy-to-your-cloud/first-administrator#webpage\"},\"image\":\"https://openworklabs.com/docs/images/openwork-social.png\",\"dateModified\":\"2026-09-10T04:44:52.096Z\",\"publisher\":{\"@id\":\"https://openworklabs.com/#organization\"},\"isPartOf\":{\"@id\":\"https://openworklabs.com/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"OpenWork Docs\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"OpenWork Docs\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/docs/self-host/deploy-to-your-cloud/first-administrator.md","siteName":"OpenWork Docs","nav":{"global":null,"tabs":[{"tab":"Start here","pages":[{"title":"Start here","href":"/start-here/get-started"}]},{"tab":"Desktop App","pages":[{"title":"Desktop App","href":"/desktop-app/first-task"}]},{"tab":"Integrations","pages":[{"title":"Integrations","href":"/integrations/overview"}]},{"tab":"Slack","pages":[{"title":"Slack","href":"/slack/connect-slack"}]},{"tab":"AI Gateway","pages":[{"title":"AI Gateway","href":"/ai-gateway/overview"}]},{"tab":"MCP Gateway","pages":[{"title":"MCP Gateway","href":"/cloud/run-in-the-cloud/cloud-mcp"}]},{"tab":"Dashboards","pages":[{"title":"Dashboards","href":"/dashboards/overview"}]},{"tab":"SSO","pages":[{"title":"SSO","href":"/cloud/get-started"}]},{"tab":"Self-host","pages":[{"group":"Overview","pages":[{"title":"Self-host","href":"/start-here/self-host"},{"title":"Evaluate with Docker Compose","href":"/self-host/evaluate-with-docker-compose"}]},{"group":"Deploy to your cloud","pages":[{"title":"Deploy to your cloud","href":"/self-host/deploy-to-your-cloud/overview"},{"title":"Deploy on AWS","href":"/self-host/deploy-to-your-cloud/aws"},{"title":"Deploy on Azure","href":"/self-host/deploy-to-your-cloud/azure"},{"title":"Deploy on Google Cloud","href":"/self-host/deploy-to-your-cloud/google-cloud"},{"title":"Install from OpenWork Cloud (Deployments)","description":"Use Manage › Deployments in OpenWork Cloud to install your own OpenWork in your AWS or Google Cloud account, approve every change there, and watch its health.","href":"/self-host/deploy-to-your-cloud/managed-installer"},{"title":"Create the first administrator","href":"/self-host/deploy-to-your-cloud/first-administrator"}]},{"group":"Plan your network","pages":[{"title":"Private network deployment","description":"Run OpenWork when laptops have internet and VPN access while Den stays inside a private network.","href":"/start-here/private-network-deployment"},{"title":"Air-gapped deployment","href":"/start-here/air-gapped-deployment"},{"title":"Outbound network access","href":"/start-here/outbound-network-access"},{"title":"Certificate trust and proxies","href":"/start-here/certificate-trust-and-proxies"}]},{"group":"Install and operate","pages":[{"title":"Enterprise desktop deployment","href":"/start-here/enterprise-desktop-deployment"},{"title":"Enable OpenWork Gateway","href":"/self-host/gateway"},{"title":"Upgrade Gateway safely","href":"/self-host/gateway-upgrade"},{"title":"Provision organization configuration","href":"/self-host/declarative-configuration"},{"title":"Export and import organization configuration","href":"/self-host/export-import-configuration"},{"title":"Installer delivery","href":"/start-here/installer-delivery"},{"title":"Brand an on-prem deployment","href":"/start-here/on-prem-branding"},{"title":"GitHub connector for Helm","href":"/start-here/github-connector-helm"}]},{"group":"Troubleshoot","pages":[{"title":"Diagnostics","href":"/self-host/diagnostics"},{"title":"Network diagnostics","href":"/start-here/network-diagnostics"}]}]},{"tab":"API","pages":[{"title":"API","href":"/api-reference/system/check-den-api-health"}]},{"tab":"Roadmap","pages":[{"title":"Roadmap","href":"/roadmap"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Create the first administrator - OpenWork Docs","buildId":"dpl_6PxPD4Fj1JDU9BJxEHvfdUmxKThw","deploymentId":"dpl_6PxPD4Fj1JDU9BJxEHvfdUmxKThw","dynamics":[],"chunks":[]}