A service account is a named machine identity in your Nuon org. Use service accounts for automation, CI/CD pipelines, and any integration that calls the Nuon API on behalf of a system rather than a person.Unlike a one-off API token, a service account is a persistent identity you manage. You can rename it, change its role, and mint (or invalidate) multiple tokens for it over time.Managing service accounts requires org admin access.
Every service account is assigned exactly one role, which determines its permissions. Roles are org-scoped. See Access control for the available roles and what each grants — Admin (org_admin) and Read-only (org_read_only).You can list the available roles at any time using the CLI:
Tokens created with the deprecated nuon orgs api-tokens create command each came with their own service account. Deleting one of those tokens this way leaves its service account in place; remove it with nuon service-accounts delete --id <account-id>. Service accounts created that way are named after their token, which makes them easy to find in nuon service-accounts list; ones created before this change have no name.
Every runner is backed by its own machine identity — a service account with the special runner role. This is an implementation detail you can mostly ignore. You do not need to create or manage these service accounts yourself.Because they’re managed for you, runner service accounts are hidden from nuon service-accounts list by default, but you can see them with the --include-runners flag.
When an install is provisioned with the stack Terraform module, Nuon creates a service account for it with the reserved stack role. This is the identity the nuonco/stack provider authenticates as when it reads the install’s configuration and reports phone-home data. You don’t create these yourself — one is created with the install.Unlike other roles, the stack role is scoped to a single install: a token minted for one install’s stack service account cannot read any other install’s configuration. Tokens for it are created from the Await install stack step’s TF Module tab. See Provision Stacks with a Terraform Module for the full flow.Like runner accounts, stack service accounts are hidden from listings by default. The dashboard’s Service accounts page has a “Show stack accounts” checkbox to reveal them, and the CLI accepts an --include-stacks flag.
nuon service-accounts list --include-stacks
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Nuon documentation","description":"Nuon is the BYOC (bring-your-own-cloud) deployment platform for software vendors. Deploy applications — Terraform, Helm, Kubernetes manifests, container images — into customer AWS, Azure, or GCP accounts with no cross-account IAM. Includes runners, operation roles for least-privilege IAM, drift detection, approval workflows, and policies for compliance.","colors":{"primary":"#256A7F","light":"#4CC9F0","dark":"#256A7F"},"logo":{"light":"https://mintcdn.com/nuoninc/RZoWFEpvSvd8sGqW/logo/light.svg?fit=max\u0026auto=format\u0026n=RZoWFEpvSvd8sGqW\u0026q=85\u0026s=5fe6681050ff3486a1e940fe9090d74d","dark":"https://mintcdn.com/nuoninc/RZoWFEpvSvd8sGqW/logo/dark.svg?fit=max\u0026auto=format\u0026n=RZoWFEpvSvd8sGqW\u0026q=85\u0026s=14deeb0a1b634839fe931f5f9e96af33","href":"/get-started/introduction"},"favicon":"https://mintcdn.com/nuoninc/swdQeSDXQqHcTs6_/favicon.svg?fit=max\u0026auto=format\u0026n=swdQeSDXQqHcTs6_\u0026q=85\u0026s=a4dbde1cc7d4c38f7c91105d64026679","api":{"openapi":"https://api.nuon.co/oapi/v3"},"background":{"color":{"light":"#FAFAFA"}},"navbar":{"links":[{"icon":"github","href":"https://github.com/nuonco/nuon","label":"GitHub"},{"icon":"slack","href":"https://nuon-byoc.slack.com/join/shared_invite/zt-1q323vw9z-C8ztRP~HfWjZx6AXi50VRA#/shared-invite/email","label":"Slack"}],"primary":{"type":"button","label":"Sign up","href":"https://app.nuon.co/"}},"footer":{"socials":{"website":"https://www.nuon.co","x":"https://twitter.com/nuoninc","linkedin":"https://www.linkedin.com/company/nuonco"}},"seo":{"metatags":{"og:site_name":"Nuon Documentation","og:type":"website","twitter:card":"summary_large_image","twitter:site":"@nuonco"},"indexing":"all"},"fonts":{"family":"Inter"},"integrations":{"posthog":{"apiKey":"phc_1NEQAphH0jxCX7opmp4Iyq2O6mu4tM552kMjJz8uKkl","apiHost":"https://us.i.posthog.com","sessionRecording":true},"plausible":{"domain":"docs.nuon.co"}},"markdown":{"instructions":["Nuon installs a software company's application into its customers' AWS, Azure, or GCP accounts. A runner in each customer account polls the Nuon control plane for jobs, so Nuon needs no cross-account access.","In these docs, \"you\" is the software company using Nuon to ship its product, and \"customer\" is the company whose cloud account the product is installed into. Pages also call the software company the vendor.","Page index: https://docs.nuon.co/llms.txt. To evaluate Nuon, read https://docs.nuon.co/get-started/introduction.md, https://docs.nuon.co/guides/deployment-options.md, https://docs.nuon.co/security.md, and https://docs.nuon.co/architecture/platform.md. To build with Nuon, start at https://docs.nuon.co/get-started/quickstart.md.","To check which architectures Nuon supports (customer account, existing VPC or cluster, hybrid data plane, single-tenant, data residency, customer-managed keys, air-gapped), read https://docs.nuon.co/guides/byoc-architecture-patterns.md.","Pages under https://docs.nuon.co/config-ref/ are generated from the config schema. Treat them as the source of truth for config file fields.","Search these docs over MCP at https://docs.nuon.co/mcp."]},"styling":{"latex":false},"navigation":{"global":{"anchors":[]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"nuoninc","hasAudioNarration":false,"actualSubdomain":"nuoninc","customDomains":["docs.nuon.co"],"gitSource":{"type":"github","owner":"nuonco","repo":"nuon","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"feedback":{"edits":false,"issues":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aed5a4f197e48bb5f929a39","clientVersion":"0.0.4088","searchFilterCounts":[{"language":"default","tag":"Guides","count":140},{"language":"default","tag":"Changelog","count":45},{"language":"default","tag":"Reference","count":34},{"language":"default","tag":"Updates and Operations","count":21},{"language":"default","tag":"Configuration","count":21},{"language":"default","tag":"Concepts","count":17},{"language":"default","tag":"Configuration Types","count":14},{"language":"default","tag":"Getting Started","count":13},{"language":"default","tag":"Components","count":12},{"language":"default","tag":"Stacks","count":10}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":false},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":true,"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":"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},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":":root{--light: #4CC9F0}.prose :where(table):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] table)){display:table}.prose :where(table):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] th)){text-align:left}.nuon-label{text-transform:uppercase;font-weight:600;font-size:0.6rem;padding:0.01rem 0.25rem;color:white;background-color:var(--light);border-radius:10%}.PylonChat-bubbleFrameContainer{bottom:24px!important;right:24px!important}.PylonChat-chatWindowFrameContainer,.PylonChat-popupMessageContainer{bottom:88px!important;right:24px!important}wistia-player[media-id=\"tsb1nu547c\"]:not(:defined){background:center / contain no-repeat url('https://fast.wistia.com/embed/medias/tsb1nu547c/swatch');display:block;filter:blur(5px);padding-top:56.25%}.nuon-try-agent,.nuon-mcp-picker,.nuon-flow{--try-accent: #256a7f;--try-accent-soft: rgba(37, 106, 127, 0.08);--try-border: rgba(37, 106, 127, 0.28);--try-text: #1f2937;--try-muted: #6b7280;--try-bg: linear-gradient(90deg, rgba(76, 201, 240, 0.10), rgba(37, 106, 127, 0.04) 60%, transparent);margin:0 0 1.75rem;border:1px solid var(--try-border);border-radius:12px;background:var(--try-bg);font-size:0.875rem;color:var(--try-text)}.dark .nuon-try-agent,.dark .nuon-mcp-picker,.dark .nuon-flow{--try-accent: #4cc9f0;--try-accent-soft: rgba(76, 201, 240, 0.12);--try-border: rgba(76, 201, 240, 0.3);--try-text: #e5e7eb;--try-muted: #9ca3af;--try-bg: linear-gradient(90deg, rgba(76, 201, 240, 0.10), rgba(76, 201, 240, 0.02) 60%, transparent)}.nuon-try-agent-row{display:flex;align-items:center;gap:0.75rem;padding:0.5rem 0.5rem 0.5rem 0.75rem}.nuon-try-agent-toggle{display:flex;align-items:center;gap:0.625rem;flex:1;min-width:0;background:none;border:0;padding:0;text-align:left;color:inherit;cursor:pointer}.nuon-try-agent-badge{display:inline-flex;align-items:center;gap:0.35rem;flex-shrink:0;padding:0.15rem 0.5rem;border-radius:999px;background:var(--try-accent-soft);color:var(--try-accent);font-size:0.7rem;font-weight:600;letter-spacing:0.04em;text-transform:uppercase}.nuon-try-agent-title{min-width:0;line-height:1.3}.nuon-try-agent-chevron{flex-shrink:0;color:var(--try-muted);transition:transform 0.15s}.nuon-try-agent[data-open=\"true\"] .nuon-try-agent-chevron{transform:rotate(180deg)}.nuon-try-agent-actions{display:flex;gap:0.375rem;flex-shrink:0}.nuon-try-agent-btn{padding:0.3rem 0.65rem;border:1px solid var(--try-border);border-radius:8px;background:transparent;color:var(--try-text);font-size:0.8rem;font-weight:500;line-height:1.2;text-decoration:none;white-space:nowrap;cursor:pointer}.nuon-try-agent-btn:hover{background:var(--try-accent-soft)}.nuon-try-agent-primary{border-color:var(--try-accent);background:var(--try-accent);color:#fff}.dark .nuon-try-agent-primary{color:#0b1d24}.nuon-try-agent-primary:hover{background:var(--try-accent);opacity:0.9}.nuon-try-agent-body{padding:0 0.75rem 0.75rem}.nuon-try-agent-prompt{margin:0 0 0.5rem;padding:0.625rem 0.75rem;border-radius:8px;background:var(--try-accent-soft);font-size:0.8rem;line-height:1.5;white-space:pre-wrap}.nuon-try-agent-note{margin:0;color:var(--try-muted);font-size:0.78rem;line-height:1.5}.nuon-try-agent-note a{display:block;margin-top:0.25rem;font-weight:500;color:var(--try-accent);text-decoration:underline}.nuon-try-agent-note code{font-size:0.75rem}@media (max-width: 640px){.nuon-try-agent-row{flex-wrap:wrap}.nuon-try-agent-actions{width:100%}.nuon-try-agent-btn{flex:1;text-align:center}}.nuon-try-agent+.nuon-try-agent{margin-top:-1.125rem}.nuon-mcp-picker{margin:1rem 0 2rem;padding:0.75rem;border:1px solid var(--try-border);border-radius:12px;background:var(--try-bg);color:var(--try-text);font-size:0.875rem}.nuon-mcp-picker-tabs{display:flex;flex-wrap:wrap;gap:0.25rem;margin-bottom:0.75rem}.nuon-mcp-picker-tab{padding:0.3rem 0.75rem;border:1px solid transparent;border-radius:999px;background:none;color:var(--try-muted);font-size:0.8rem;font-weight:500;cursor:pointer}.nuon-mcp-picker-tab:hover{color:var(--try-text)}.nuon-mcp-picker-tab[aria-selected=\"true\"]{border-color:var(--try-border);background:var(--try-accent-soft);color:var(--try-accent)}.nuon-mcp-picker-block+.nuon-mcp-picker-block{margin-top:0.625rem}.nuon-mcp-picker-caption{margin:0 0 0.3rem;color:var(--try-muted);font-size:0.78rem}.nuon-mcp-picker-code{position:relative;border-radius:8px;background:#0f1d22}.nuon-mcp-picker-code pre{margin:0;padding:0.75rem 5rem 0.75rem 0.875rem;white-space:pre-wrap;word-break:break-word;color:#e5e7eb;font-size:0.8rem;line-height:1.6}.dark .nuon-mcp-picker-code{background:rgba(0, 0, 0, 0.45)}.nuon-mcp-picker-copy{position:absolute;top:0.5rem;right:0.5rem}.nuon-mcp-picker-foot{margin:0.625rem 0 0;font-size:0.78rem}.nuon-mcp-picker-foot a{color:var(--try-accent);font-weight:500;text-decoration:none}.nuon-mcp-picker-foot a:hover{text-decoration:underline}.nuon-flow{margin:1.5rem 0 2rem;padding:1rem 1.125rem;border:1px solid var(--try-border);border-radius:12px;background:var(--try-bg);color:var(--try-text)}.nuon-flow-track{margin:0;padding:0;list-style:none}.nuon-flow-step{position:relative;margin:0;padding:0 0 0.875rem}.nuon-flow-step:last-child{padding-bottom:0}.nuon-flow-step:not(:last-child)::before{content:\"\";position:absolute;left:0.6875rem;top:1.5rem;bottom:0;border-left:1.5px solid var(--try-border)}.nuon-flow-group{display:block;margin:0.25rem 0 0.5rem 2.25rem;color:var(--try-accent);font-size:0.68rem;font-weight:600;letter-spacing:0.06em;text-transform:uppercase}.nuon-flow-step:first-child .nuon-flow-group{margin-top:0}.nuon-flow-row{display:flex;gap:0.75rem;align-items:flex-start}.nuon-flow-num{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:1.375rem;height:1.375rem;border-radius:999px;background:var(--try-accent);color:#fff;font-size:0.7rem;font-weight:600}.dark .nuon-flow-num{color:#0b1d24}.nuon-flow-text{display:flex;flex-direction:column;gap:0.1rem;min-width:0;padding-top:0.1rem;line-height:1.35}.nuon-flow-title{font-size:0.9rem;font-weight:600}.nuon-flow-title a{color:inherit;text-decoration:none;border-bottom:1px solid var(--try-border)}.nuon-flow-title a:hover{color:var(--try-accent);border-bottom-color:var(--try-accent)}.nuon-flow-detail{color:var(--try-muted);font-size:0.82rem}.nuon-flow-loop{display:flex;gap:0.5rem;align-items:center;margin:0.875rem 0 0;padding-top:0.75rem;border-top:1px dashed var(--try-border);color:var(--try-muted);font-size:0.8rem}.nuon-flow-loop svg{flex-shrink:0;color:var(--try-accent)}.nuon-cmap{--cmap-accent: #256a7f;--cmap-border: rgba(37, 106, 127, 0.28);--cmap-text: #1f2937;--cmap-muted: #6b7280;--cmap-bg: rgba(37, 106, 127, 0.04);--cmap-bg-strong: linear-gradient(160deg, rgba(76, 201, 240, 0.14), rgba(37, 106, 127, 0.06));display:grid;grid-template-columns:repeat(var(--cmap-cols, 2), minmax(0, 1fr));gap:0.75rem;margin:1.25rem 0 1.75rem;color:var(--cmap-text)}.dark .nuon-cmap{--cmap-accent: #4cc9f0;--cmap-border: rgba(76, 201, 240, 0.3);--cmap-text: #e5e7eb;--cmap-muted: #9ca3af;--cmap-bg: rgba(76, 201, 240, 0.04);--cmap-bg-strong: linear-gradient(160deg, rgba(76, 201, 240, 0.14), rgba(76, 201, 240, 0.04))}.nuon-cmap[data-cols=\"1\"]{--cmap-cols: 1}.nuon-cmap[data-cols=\"3\"]{--cmap-cols: 3}.nuon-cmap[data-arrows=\"true\"]{gap:0}.nuon-cmap-cell{display:flex;align-items:stretch;min-width:0}.nuon-cmap-arrow{display:flex;align-items:center;padding:0 0.5rem;color:var(--cmap-accent)}.nuon-cmap-col{flex:1;min-width:0;padding:1rem 1.125rem;border:1px solid var(--cmap-border);border-radius:12px;background:var(--cmap-bg)}.nuon-cmap-col[data-tone=\"nuon\"]{background:var(--cmap-bg-strong)}.nuon-cmap-title{font-size:0.75rem;font-weight:600;letter-spacing:0.06em;text-transform:uppercase;color:var(--cmap-accent)}.nuon-cmap-caption{margin-top:0.25rem;font-size:0.8125rem;color:var(--cmap-muted)}.nuon-cmap-list{list-style:none;margin:0.875rem 0 0;padding:0}.nuon-cmap-list li{padding:0.35rem 0;font-size:0.9rem;line-height:1.35}.nuon-cmap-list a{font-weight:600;color:var(--cmap-text);text-decoration:none;border-bottom:1px solid var(--cmap-border)}.nuon-cmap-list a:hover{color:var(--cmap-accent);border-bottom-color:var(--cmap-accent)}.nuon-cmap-note{display:block;margin-top:0.15rem;font-size:0.8125rem;color:var(--cmap-muted)}@media (max-width: 720px){.nuon-cmap,.nuon-cmap[data-cols=\"3\"]{grid-template-columns:minmax(0, 1fr)}.nuon-cmap-cell{flex-direction:column}.nuon-cmap-arrow{justify-content:center;padding:0.35rem 0;transform:rotate(90deg)}}.sidebar-group-header:has(+.sidebar-group a[href^=\"/guides/agents/\"]){display:none}.nuon-tl{--tl-accent: #256a7f;--tl-text: #1f2937;--tl-muted: #6b7280;--tl-setup-bg: rgba(107, 114, 128, 0.1);--tl-install-bg: rgba(37, 106, 127, 0.1);--tl-operate-bg: linear-gradient(90deg, rgba(37, 106, 127, 0.16), rgba(76, 201, 240, 0.22));margin:1.25rem 0 1.75rem;color:var(--tl-text)}.dark .nuon-tl{--tl-accent: #4cc9f0;--tl-text: #e5e7eb;--tl-muted: #9ca3af;--tl-setup-bg: rgba(156, 163, 175, 0.12);--tl-install-bg: rgba(76, 201, 240, 0.08);--tl-operate-bg: linear-gradient(90deg, rgba(76, 201, 240, 0.12), rgba(76, 201, 240, 0.24))}.nuon-tl-bar,.nuon-tl-notes{display:grid;gap:0.375rem}.nuon-tl-seg{display:flex;flex-direction:column;gap:0.15rem;padding:0.75rem 0.875rem;border-radius:10px}.nuon-tl-seg{background:var(--tl-setup-bg)}.nuon-tl-seg[data-tone=\"install\"]{background:var(--tl-install-bg)}.nuon-tl-seg[data-tone=\"operate\"]{background:var(--tl-operate-bg)}.nuon-tl-when{font-size:0.7rem;font-weight:600;letter-spacing:0.06em;text-transform:uppercase;color:var(--tl-muted)}.nuon-tl-seg[data-tone=\"operate\"] .nuon-tl-when{color:var(--tl-accent)}.nuon-tl-what{font-size:0.9rem;font-weight:600;line-height:1.3}.nuon-tl-notes{margin-top:0.4rem;font-size:0.8rem;line-height:1.4;color:var(--tl-muted)}.nuon-tl-notes span{padding:0 0.875rem}@media (max-width: 720px){.nuon-tl-bar,.nuon-tl-notes{grid-template-columns:1fr 1fr 1fr!important}}.nuon-flow[data-horizontal=\"true\"] .nuon-flow-track{display:flex;align-items:center}.nuon-flow[data-horizontal=\"true\"] .nuon-flow-step{flex:1;display:flex;align-items:center;padding:0}.nuon-flow[data-horizontal=\"true\"] .nuon-flow-step:last-child{flex:0 0 auto}.nuon-flow[data-horizontal=\"true\"] .nuon-flow-step:not(:last-child)::before{content:none}.nuon-flow[data-horizontal=\"true\"] .nuon-flow-step:not(:last-child)::after{content:\"\";flex:1;margin:0 0.75rem;border-top:1.5px solid var(--try-border)}@media (max-width: 720px){.nuon-flow[data-horizontal=\"true\"] .nuon-flow-track{flex-direction:column;align-items:flex-start;gap:0.75rem}.nuon-flow[data-horizontal=\"true\"] .nuon-flow-step:not(:last-child)::after{content:none}}.nuon-infra{--in-accent: #256a7f;--in-border: rgba(37, 106, 127, 0.3);--in-strong: rgba(37, 106, 127, 0.7);--in-text: #1f2937;--in-muted: #6b7280;--in-cp-bg: rgba(107, 114, 128, 0.08);--in-account-bg: rgba(37, 106, 127, 0.04);--in-box-bg: #ffffff;--in-inner-bg: rgba(37, 106, 127, 0.1);margin:1.25rem 0 1.75rem;color:var(--in-text);font-size:0.875rem}.dark .nuon-infra{--in-accent: #4cc9f0;--in-border: rgba(76, 201, 240, 0.3);--in-strong: rgba(76, 201, 240, 0.7);--in-text: #e5e7eb;--in-muted: #9ca3af;--in-cp-bg: rgba(156, 163, 175, 0.1);--in-account-bg: rgba(76, 201, 240, 0.04);--in-box-bg: rgba(15, 23, 42, 0.6);--in-inner-bg: rgba(76, 201, 240, 0.12)}.nuon-infra-top{display:grid;grid-template-columns:minmax(0, 1fr) 4rem minmax(0, 1.4fr);gap:0.75rem;padding:0 1rem}.nuon-infra-top-cell{display:flex;flex-direction:column;align-items:center}.nuon-infra-cp{white-space:nowrap;width:fit-content;padding:0.5rem 1rem;border:1px dashed var(--in-border);border-radius:10px;background:var(--in-cp-bg);color:var(--in-muted);font-weight:600}.nuon-infra-link{display:flex;flex-direction:column;align-items:center;gap:0.15rem}.nuon-infra-line{height:1.25rem;border-left:1.5px dashed var(--in-accent)}.nuon-infra-tag{white-space:nowrap;color:var(--in-accent);font-size:0.75rem}.nuon-infra-account{padding:0.875rem 1rem 1rem;border:1px solid var(--in-border);border-radius:12px;background:var(--in-account-bg)}.nuon-infra-account-head{margin-bottom:0.875rem;text-align:right;color:var(--in-muted);font-weight:600}.nuon-infra-account-head span{margin-left:0.4rem;font-weight:400}.nuon-infra-row{--in-runner-top: 3.55rem;display:grid;grid-template-columns:minmax(0, 1fr) 4rem minmax(0, 1.4fr);align-items:stretch;gap:0.75rem}.nuon-infra-concept{display:flex;flex-direction:column;gap:0.5rem;padding:0.875rem 1rem;border:1.5px solid var(--in-strong);border-radius:10px;background:var(--in-box-bg)}.nuon-infra-row>.nuon-infra-concept:first-child{position:relative}.nuon-infra-row>.nuon-infra-concept:first-child::before{content:\"\";position:absolute;left:50%;top:-4.4rem;height:calc(4.4rem + var(--in-runner-top));border-left:1.5px dashed var(--in-accent);z-index:0}.nuon-infra-inner{position:relative;z-index:1;box-sizing:border-box;height:3.25rem;justify-content:center;margin-top:0.75rem;background:var(--in-inner-bg);align-items:center}.nuon-infra-name{width:fit-content;font-size:1.05rem;font-weight:700;color:var(--in-text);text-decoration:none;border-bottom:1px solid var(--in-border)}.nuon-infra-name:hover,.nuon-infra-comps-title:hover{color:var(--in-accent)}.nuon-infra-note{color:var(--in-muted);font-size:0.8rem}.nuon-infra-components{margin-top:auto;padding:0.6rem 0.7rem;border:1px solid var(--in-border);border-radius:8px;background:var(--in-inner-bg)}.nuon-infra-comps-title{white-space:nowrap;font-size:0.75rem;font-weight:600;letter-spacing:0.06em;text-transform:uppercase;color:var(--in-accent);text-decoration:none}.nuon-infra-chips{display:flex;flex-wrap:wrap;align-items:center;gap:0.35rem;margin-top:0.5rem}.nuon-infra-eg{flex-basis:100%;font-size:0.75rem;font-style:italic;color:var(--in-muted)}.nuon-infra-chip{padding:0.15rem 0.5rem;border:1px dashed var(--in-border);border-radius:6px;font-size:0.78rem;color:var(--in-muted)}.nuon-infra-arrow{display:flex;flex-direction:column;justify-content:flex-start;padding-top:calc(var(--in-runner-top) + 0.35rem);align-items:center;color:var(--in-accent);font-size:0.72rem}@media (max-width: 720px){.nuon-infra-row{grid-template-columns:minmax(0, 1fr)}.nuon-infra-arrow{justify-content:center}.nuon-infra-arrow svg{transform:rotate(90deg)}}.nuon-ab{margin:1rem 0 1.75rem}.nuon-ab-row{display:grid;grid-template-columns:minmax(0, 1fr) minmax(0, 1fr);align-items:start;gap:1rem}.nuon-ab .nuon-infra-concept{gap:0.75rem;padding:1rem 1.1rem 1.1rem}.nuon-ab-head{display:flex;align-items:center;flex-wrap:wrap;gap:0.5rem}.nuon-ab-kicker{font-size:0.68rem;font-weight:600;letter-spacing:0.06em;text-transform:uppercase;color:var(--in-accent);text-decoration:none}.nuon-ab-kicker-muted{color:var(--in-muted)}.nuon-ab-app{font-weight:700;font-size:1rem}.nuon-ab-branch{display:flex;flex-direction:column;gap:0.5rem;padding:0.65rem 0.75rem;border:1px solid var(--in-border);border-radius:8px;background:var(--in-inner-bg)}.nuon-ab-branch-name{font-family:var(--font-mono, ui-monospace, monospace);font-size:0.8rem}.nuon-ab-groups,.nuon-ab-group-wrap{display:flex;align-items:center;gap:0.35rem}.nuon-ab-group{padding:0.15rem 0.5rem;border:1px dashed var(--in-strong);border-radius:6px;background:var(--in-box-bg);font-size:0.78rem}.nuon-ab-arrow{color:var(--in-accent)}@media (max-width: 720px){.nuon-ab-row{grid-template-columns:minmax(0, 1fr)}}.nuon-pd-row{display:grid;grid-template-columns:minmax(0, 1fr) 6.5rem minmax(0, 1fr);align-items:stretch;gap:0.75rem}.nuon-pd-row{position:relative}.nuon-pd-cp{display:flex;align-items:center;gap:0.45rem}.nuon-pd-cp span{margin-left:0;color:var(--in-text);font-weight:600}.nuon-pd-link{position:absolute;inset:0;overflow:visible;pointer-events:none;color:var(--in-muted);z-index:2}.nuon-pd-link-label{position:absolute;transform:translateY(4px);line-height:1.2;white-space:nowrap;color:var(--in-muted);font-size:0.7rem}.nuon-pd .nuon-pd-flows{justify-content:flex-end;padding-bottom:6rem}.nuon-pd-flows .nuon-pd-flow-back{display:none}.nuon-pd-zone{display:flex;flex-direction:column;gap:0.75rem;min-width:0;padding:0.875rem;border-radius:12px}.nuon-pd-yours{border:1px dashed var(--in-border);background:var(--in-cp-bg)}.nuon-pd-theirs{border:1px solid var(--in-border);background:var(--in-account-bg)}.nuon-pd-zlabel{color:var(--in-muted);font-weight:600}.nuon-pd-logo{display:block;height:1.6rem;width:auto;color:var(--in-text)}.nuon-pd-runner{display:flex;align-items:center;gap:0.6rem;width:fit-content;margin-top:0.4rem;padding:0.45rem 0.8rem 0.45rem 0.6rem;border-radius:8px;background:var(--in-text);color:var(--in-box-bg);text-decoration:none;box-shadow:0 0 0 3px var(--in-border)}.dark .nuon-pd-runner{color:#0b1117}.nuon-pd-runner-mark{height:1.35rem;width:auto;flex:none}.nuon-pd-runner-text{display:flex;flex-direction:column;line-height:1.2}.nuon-pd-runner-name{font-weight:700;font-size:0.85rem}.nuon-pd-runner-note{font-size:0.68rem;opacity:0.75}.nuon-pd-zlabel span{margin-left:0.3rem;font-weight:400}.nuon-pd .nuon-infra-concept{gap:0.6rem}.nuon-pd .nuon-infra-components{margin-top:0}.nuon-pd .nuon-infra-chips{margin-top:0.35rem}.nuon-pd-template{flex:1;border-width:2px}.nuon-pd-template-name{margin-top:-0.25rem;font-size:1.15rem;font-weight:700}.nuon-pd-template-sub{margin-top:-0.5rem;font-size:0.82rem;color:var(--in-muted)}.nuon-pd-where{margin-left:auto;font-size:0.75rem;font-style:italic;color:var(--in-muted)}.nuon-pd-faded{opacity:0.6}.nuon-pd a.nuon-infra-chip,.nuon-pd a.nuon-ab-group{color:var(--in-text);text-decoration:none}.nuon-pd a.nuon-infra-chip:hover,.nuon-pd a.nuon-ab-group:hover{color:var(--in-accent)}.nuon-pd-flows{display:flex;flex-direction:column;justify-content:center;gap:1.75rem;color:var(--in-accent);font-size:0.72rem;text-align:center}.nuon-pd-flow{display:flex;flex-direction:column;align-items:center;gap:0.15rem}.nuon-pd-flow-back{color:var(--in-muted)}.nuon-pd-flow-back svg{transform:scaleX(-1)}@media (max-width: 720px){.nuon-pd-row{grid-template-columns:minmax(0, 1fr)}.nuon-pd-flows .nuon-pd-flow-back{display:flex}.nuon-pd .nuon-pd-flows{justify-content:center;padding-bottom:0}.nuon-pd-flows{flex-direction:row;justify-content:center}.nuon-pd-flow svg{transform:rotate(90deg)}.nuon-pd-flow-back svg{transform:rotate(-90deg)}}.nuon-pt{margin-top:0.75rem}.nuon-pt-legend{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:0.75rem;font-size:0.75rem;color:var(--in-muted)}.nuon-pt-legend i{display:inline-block;width:10px;height:10px;margin-right:0.4rem;border-radius:3px;vertical-align:-1px}.nuon-pt-key-repo{border:1px dashed var(--in-border);background:var(--in-cp-bg)}.nuon-pt-key-cust{border:1px solid var(--in-strong);background:var(--in-inner-bg)}.nuon-pt-scroll{overflow-x:auto}.nuon-pt-tree{--pt-gap: 1.75rem;--pt-w1: 8.5rem;--pt-w2: 11.5rem;min-width:44rem}.nuon-pt-heads{display:flex;margin-bottom:0.5rem}.nuon-pt-h1{flex:0 0 calc(var(--pt-w1) + var(--pt-gap))}.nuon-pt-h2{flex:0 0 calc(var(--pt-w2) + var(--pt-gap))}.nuon-pt-item{display:flex;align-items:center}.nuon-pt-card{display:flex;flex-direction:column;flex:none;box-sizing:border-box;padding:0.4rem 0.65rem;border:1px dashed var(--in-border);border-radius:8px;background:var(--in-cp-bg);font-size:0.82rem}.nuon-pt-l1>.nuon-pt-card{width:var(--pt-w1)}.nuon-pt-l2>.nuon-pt-card,.nuon-pt-l3>.nuon-pt-card{width:var(--pt-w2)}.nuon-pt-name{font-weight:600}.nuon-pt-file{font-family:var(--font-mono, ui-monospace, monospace);font-size:0.7rem;color:var(--in-muted)}.nuon-pt-num{display:inline-grid;place-items:center;width:1.05rem;height:1.05rem;margin-right:0.35rem;border:1px solid var(--in-strong);border-radius:50%;color:var(--in-accent);font-size:0.65rem;font-weight:700}.nuon-pt-default{margin-left:0.35rem;padding:0 0.3rem;border:1px solid var(--in-border);border-radius:4px;color:var(--in-accent);font-size:0.65rem;font-weight:500}.nuon-pt-children{position:relative;display:flex;flex-direction:column;gap:0.75rem;padding-left:var(--pt-gap)}.nuon-pt-children::before{content:\"\";position:absolute;left:0;top:50%;width:calc(var(--pt-gap) / 2);border-top:1.5px solid var(--in-border)}.nuon-pt-children>.nuon-pt-item{position:relative}.nuon-pt-children>.nuon-pt-item::before{content:\"\";position:absolute;left:calc(var(--pt-gap) / -2);top:50%;width:calc(var(--pt-gap) / 2);border-top:1.5px solid var(--in-border)}.nuon-pt-children>.nuon-pt-item::after{content:\"\";position:absolute;left:calc(var(--pt-gap) / -2);top:-0.375rem;bottom:-0.375rem;border-left:1.5px solid var(--in-border)}.nuon-pt-children>.nuon-pt-item:first-child::after{top:50%}.nuon-pt-children>.nuon-pt-item:last-child::after{bottom:50%}.nuon-pt-children>.nuon-pt-item:only-child::after{content:none}.nuon-pt-installs{display:flex;flex-wrap:wrap;gap:0.4rem}.nuon-pt-install{padding:0.3rem 0.6rem;border:1px solid var(--in-strong);border-radius:8px;background:var(--in-inner-bg);font-family:var(--font-mono, ui-monospace, monospace);font-size:0.78rem}.nuon-um{position:relative;overflow:hidden;box-shadow:-14px 0 22px -16px rgba(76, 201, 240, 0.55), 14px 0 22px -16px rgba(76, 201, 240, 0.55);border:1px solid var(--in-border);border-radius:12px;background:var(--in-box-bg)}.nuon-um-bar{display:flex;align-items:center;gap:0.35rem;padding:0.55rem 0.8rem;border-bottom:1px solid var(--in-border);background:var(--in-cp-bg)}.nuon-um-dot{width:0.55rem;height:0.55rem;border-radius:50%;background:var(--in-border)}.nuon-um-url{margin-left:0.6rem;padding:0.1rem 0.6rem;border-radius:6px;background:var(--in-box-bg);color:var(--in-muted);font-size:0.72rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nuon-um-body{display:grid;grid-template-columns:10rem minmax(0, 1fr)}.nuon-um-side{display:flex;flex-direction:column;gap:0.15rem;padding:1rem 0.75rem;border-right:1px solid var(--in-border);color:var(--in-muted);font-size:0.8rem}.nuon-um-side span{padding:0.25rem 0.5rem;border-radius:6px}.nuon-um-brand{margin-bottom:0.6rem;padding:0 0.5rem;color:var(--in-text);font-weight:700}.nuon-um-side .nuon-um-on{background:var(--in-inner-bg);color:var(--in-text);font-weight:600}.nuon-um-main{display:flex;flex-direction:column;gap:0.6rem;padding:1.25rem 1.5rem 1.5rem;min-width:0}.nuon-um-title{font-size:1.1rem;font-weight:700}.nuon-um-sub{margin-top:-0.4rem;color:var(--in-muted);font-size:0.82rem}.nuon-um-label{margin-top:0.4rem;font-size:0.8rem;font-weight:600}.nuon-um-options{display:grid;grid-template-columns:repeat(2, minmax(0, 1fr));gap:0.6rem}.nuon-um-option{display:flex;gap:0.6rem;padding:0.7rem 0.8rem;border:1px solid var(--in-border);border-radius:10px;font-size:0.85rem}.nuon-um-option small{display:block;color:var(--in-muted);font-size:0.75rem}.nuon-um-radio{flex:none;width:0.9rem;height:0.9rem;margin-top:0.15rem;border:1.5px solid var(--in-strong);border-radius:50%}.nuon-um-picked{border:1.5px solid var(--in-accent);background:var(--in-inner-bg)}.nuon-um-picked .nuon-um-radio{border-color:var(--in-accent);box-shadow:inset 0 0 0 3px var(--in-box-bg);background:var(--in-accent)}.nuon-um-clouds{display:flex;flex-wrap:wrap;gap:0.4rem}.nuon-um-cloud{padding:0.25rem 0.7rem;border:1px solid var(--in-border);border-radius:999px;color:var(--in-muted);font-size:0.78rem}.nuon-um-cloud-on{border-color:var(--in-accent);color:var(--in-accent);font-weight:600}.nuon-um-actions{display:flex;flex-wrap:wrap;align-items:center;gap:0.75rem;margin-top:0.4rem}.nuon-um-button{padding:0.45rem 0.9rem;border-radius:8px;background:var(--in-text);color:var(--in-box-bg);font-size:0.82rem;font-weight:600}.dark .nuon-um-button{color:#0b1117}.nuon-um-hint{color:var(--in-muted);font-size:0.75rem}@media (max-width: 720px){.nuon-um-body,.nuon-um-options{grid-template-columns:minmax(0, 1fr)}.nuon-um-side{display:none}}.nuon-um-field{display:flex;flex-direction:column;gap:0.3rem;max-width:22rem}.nuon-um-field .nuon-um-label{margin-top:0}.nuon-um-input{padding:0.4rem 0.65rem;border:1px solid var(--in-border);border-radius:8px;background:var(--in-box-bg);font-size:0.82rem}.nuon-um-box{padding:0.75rem 0.9rem;border:1px solid var(--in-border);border-radius:10px;background:var(--in-inner-bg)}.nuon-um-box .nuon-um-label{margin:0 0 0.35rem}.nuon-um-list,.nuon-um-diff{margin:0;padding:0;list-style:none;font-size:0.82rem}.nuon-um-list li{position:relative;padding-left:0.9rem}.nuon-um-list li::before{content:\"\";position:absolute;left:0;top:0.55rem;width:0.35rem;height:0.35rem;border-radius:50%;background:var(--in-accent)}.nuon-um-diff li{display:flex;gap:0.5rem;font-family:var(--font-mono, ui-monospace, monospace);font-size:0.78rem}.nuon-um-add{color:#1a7f37;font-weight:700}.nuon-um-chg{color:#9a6700;font-weight:700}.dark .nuon-um-add{color:#3fb950}.dark .nuon-um-chg{color:#d29922}.nuon-um-status{display:flex;align-items:center;gap:0.4rem;color:var(--in-muted);font-size:0.78rem}.nuon-um-pulse{width:0.5rem;height:0.5rem;border-radius:50%;background:var(--in-accent);animation:nuon-um-pulse 1.4s ease-in-out infinite}@keyframes nuon-um-pulse{50%{opacity:0.3}}@media (prefers-reduced-motion: reduce){.nuon-um-pulse{animation:none}}.nuon-um-ghost{border:1px solid var(--in-border);background:transparent;color:var(--in-text)}.dark .nuon-um-ghost{color:var(--in-text)}.nuon-um-steps{display:flex;flex-direction:column;gap:0.55rem;margin:0.2rem 0 0;padding:0;list-style:none;font-size:0.85rem}.nuon-um-steps li{display:flex;align-items:center;gap:0.6rem;color:var(--in-muted)}.nuon-um-steps li::before{content:\"\";flex:none;width:1rem;height:1rem;border:1.5px solid var(--in-border);border-radius:50%;box-sizing:border-box}.nuon-um-steps .nuon-um-done{color:var(--in-text)}.nuon-um-steps .nuon-um-done::before{border-color:var(--in-accent);background:var(--in-accent);box-shadow:inset 0 0 0 3px var(--in-box-bg)}.nuon-um-steps .nuon-um-now{color:var(--in-text);font-weight:600}.nuon-um-steps .nuon-um-now::before{border-color:var(--in-accent);border-right-color:transparent}.nuon-um-steps small{color:var(--in-muted);font-weight:400}.nuon-um::before{content:\"\";position:absolute;inset:0 0 auto;height:2px;background:#4cc9f0}.nuon-um-tag{flex:none;margin-left:auto;padding:0.1rem 0.55rem;border:1px solid rgba(76, 201, 240, 0.64);border-radius:999px;background:#f2fcff;color:#2b7894;font-size:0.7rem;font-weight:500}.dark .nuon-um-tag{background:rgba(76, 201, 240, 0.16);color:#4cc9f0}.nuon-um-picker .nuon-um{margin-top:0;margin-bottom:0.75rem}.nuon-um-pickrow{display:flex;flex-wrap:wrap;align-items:center;gap:0.6rem;margin-bottom:0.5rem}.nuon-um-picklabel{color:#828282;font-size:0.75rem;font-weight:500}.nuon-um-picker{margin:1.25rem 0 1.75rem}.nuon-um-tabs{display:inline-flex;gap:0.25rem;padding:0.25rem;border:1px solid #e0e0e0;border-radius:999px}.dark .nuon-um-tabs{border-color:#1f1f20}.nuon-um-tab{padding:0.3rem 0.9rem;border:0;border-radius:999px;background:transparent;color:inherit;font:inherit;font-size:0.82rem;font-weight:500;cursor:pointer;opacity:0.7}.nuon-um-tab:hover{opacity:1}.nuon-um-tab:focus-visible{outline:2px solid rgba(76, 201, 240, 0.64);outline-offset:2px}.nuon-um-tab-on{background:#f2fcff;color:#2b7894;box-shadow:inset 0 0 0 1px rgba(76, 201, 240, 0.64);opacity:1}.dark .nuon-um-tab-on{background:rgba(76, 201, 240, 0.16);color:#4cc9f0}.nuon-um-notes{display:flex;flex-direction:column;gap:0.4rem;margin:0;padding:0.75rem 0.9rem;border:1px solid var(--in-border);border-radius:10px;font-size:0.82rem}.nuon-um-notes>div{display:grid;grid-template-columns:10rem minmax(0, 1fr);gap:0.75rem}.nuon-um-notes-k{color:var(--in-muted)}.nuon-um-notes code{font-size:0.78rem}.nuon-um-notes a{color:var(--in-accent);font-weight:600;text-decoration:none}@media (max-width: 720px){.nuon-um-notes>div{grid-template-columns:minmax(0, 1fr);gap:0.1rem}}"}],"page":{"pagePath":"concepts/service-accounts","slug":"/concepts/service-accounts","pageMetadata":{"title":"Service Accounts","description":"Named machine identities for automation, CI/CD.","keywords":["service account","machine identity","automation","CI/CD","runner","stack","roles","API token","account","accounts"],"href":"/concepts/service-accounts"},"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: \"Named machine identities for automation, CI/CD.\"\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`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,..._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:[_jsxs(_components.p,{children:[`A `,_jsx(_components.strong,{children:`service account`}),` is a named machine identity in your Nuon org. Use service accounts for automation, CI/CD pipelines, and any integration that calls the Nuon API on behalf of a system rather than a person.`]}),`\n`,_jsxs(_components.p,{children:[`Unlike a one-off `,_jsx(_components.a,{href:`/concepts/api-tokens`,children:`API token`}),`, a service account is a persistent identity you manage. You can rename it, change its role, and mint (or invalidate) multiple tokens for it over time.`]}),`\n`,_jsxs(_components.p,{children:[`Managing service accounts requires `,_jsx(_components.strong,{children:`org admin`}),` access.`]}),`\n`,_jsx(Heading,{level:`2`,id:`roles`,children:`Roles`}),`\n`,_jsxs(_components.p,{children:[`Every service account is assigned exactly one role, which determines its permissions. Roles are org-scoped. See `,_jsx(_components.a,{href:`/concepts/access-control`,children:`Access control`}),` for the available roles and what each grants — `,_jsx(_components.strong,{children:`Admin`}),` (`,_jsx(_components.code,{children:`org_admin`}),`) and `,_jsx(_components.strong,{children:`Read-only`}),` (`,_jsx(_components.code,{children:`org_read_only`}),`).`]}),`\n`,_jsx(_components.p,{children:`You can list the available roles at any time using the CLI:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,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:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`nuon`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` roles`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` list`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`managing-service-accounts`,children:`Managing service accounts`}),`\n`,_jsxs(_components.p,{children:[`Service accounts can be managed in the Dashboard on the `,_jsx(_components.strong,{children:`Service accounts`}),` page, and with the CLI `,_jsx(_components.code,{children:`service-accounts`}),` commands.`]}),`\n`,_jsx(Heading,{level:`3`,id:`create`,children:`Create`}),`\n`,_jsx(_components.p,{children:`Create a new service account. Both a name and a role are required.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,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:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`nuon`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` service-accounts`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` create`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --name`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ci`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --role`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` org_read_only`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`mint-a-token`,children:`Mint a token`}),`\n`,_jsx(_components.p,{children:`Create a token for a service account. The duration will default to one year.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,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:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`nuon`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` service-accounts`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` tokens`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` create`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --id`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`account-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --name`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ci-token`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The name is optional and labels the token in `,_jsx(_components.code,{children:`tokens list`}),`. Optionally set a custom duration.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,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:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`nuon`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` service-accounts`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` tokens`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` create`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --id`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`account-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --name`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ci-token`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --duration`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 720h`})]}),`\n`]})})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`The token value is shown `,_jsx(_components.strong,{children:`only once`}),`. Copy it immediately into your secret manager or CI secret store — you cannot retrieve it again.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`list-tokens`,children:`List tokens`}),`\n`,_jsxs(_components.p,{children:[`List the API tokens for every service account in the org, or only for one with `,_jsx(_components.code,{children:`--id`}),`. Token secrets are never returned.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,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:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`nuon`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` service-accounts`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` tokens`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` list`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`nuon`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` service-accounts`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` tokens`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` list`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --id`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`account-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Use `,_jsx(_components.code,{children:`--search`}),` to filter by token name or ID.`]}),`\n`,_jsx(Heading,{level:`3`,id:`delete-a-token`,children:`Delete a token`}),`\n`,_jsx(_components.p,{children:`Delete a single API token. The service account itself is not deleted.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,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:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`nuon`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` service-accounts`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` tokens`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` delete`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --token-id`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`token-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Tokens created with the deprecated `,_jsx(_components.code,{children:`nuon orgs api-tokens create`}),` command each came with their own service account. Deleting one of those tokens this way leaves its service account in place; remove it with `,_jsx(_components.code,{children:`nuon service-accounts delete --id \u003caccount-id>`}),`. Service accounts created that way are named after their token, which makes them easy to find in `,_jsx(_components.code,{children:`nuon service-accounts list`}),`; ones created before this change have no name.`]}),`\n`,_jsx(Heading,{level:`3`,id:`update-a-service-account`,children:`Update a service account`}),`\n`,_jsx(_components.p,{children:`You can change a service account’s name or role.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,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:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`nuon`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` service-accounts`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` update-name`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --id`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`account-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --name`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` new-name`})]}),`\n`]})})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,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:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`nuon`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` service-accounts`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` update-role`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --id`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`account-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --role`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` org_admin`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`A service account can only have one role at a time. Updating the role will replace the service account’s current role.`}),`\n`,_jsx(Heading,{level:`3`,id:`list`,children:`List`}),`\n`,_jsx(_components.p,{children:`List active service accounts.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,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:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`nuon`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` service-accounts`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` list`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`delete`,children:`Delete`}),`\n`,_jsx(_components.p,{children:`Deleting a service account will remove its roles and invalidate all of its tokens.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,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:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`nuon`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` service-accounts`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` delete`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --id`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`account-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`runner-service-accounts`,children:`Runner service accounts`}),`\n`,_jsxs(_components.p,{children:[`Every runner is backed by its own machine identity — a service account with the special `,_jsx(_components.code,{children:`runner`}),` role. This is an implementation detail you can mostly ignore. You do not need to create or manage these service accounts yourself.`]}),`\n`,_jsxs(_components.p,{children:[`Because they’re managed for you, runner service accounts are hidden from `,_jsx(_components.code,{children:`nuon service-accounts list`}),` by default, but you can see them with the `,_jsx(_components.code,{children:`--include-runners`}),` flag.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,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:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`nuon`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` service-accounts`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` list`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --include-runners`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`stack-service-accounts`,children:`Stack service accounts`}),`\n`,_jsxs(_components.p,{children:[`When an install is provisioned with the stack Terraform module, Nuon creates a service account for it with the reserved `,_jsx(_components.code,{children:`stack`}),` role. This is the identity the `,_jsx(_components.code,{children:`nuonco/stack`}),` provider authenticates as when it reads the install’s configuration and reports phone-home data. You don’t create these yourself — one is created with the install.`]}),`\n`,_jsxs(_components.p,{children:[`Unlike other roles, the stack role is scoped to a single install: a token minted for one install’s stack service account cannot read any other install’s configuration. Tokens for it are created from the `,_jsx(_components.strong,{children:`Await install stack`}),` step’s TF Module tab. See `,_jsx(_components.a,{href:`/guides/provision-stacks-with-terraform-module`,children:`Provision Stacks with a Terraform Module`}),` for the full flow.`]}),`\n`,_jsxs(_components.p,{children:[`Like runner accounts, stack service accounts are hidden from listings by default. The dashboard’s `,_jsx(_components.strong,{children:`Service accounts`}),` page has a “Show stack accounts” checkbox to reveal them, and the CLI accepts an `,_jsx(_components.code,{children:`--include-stacks`}),` flag.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,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:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`nuon`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` service-accounts`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` list`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --include-stacks`})]}),`\n`]})})})]})}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":"Service Accounts","description":"Named machine identities for automation, CI/CD.","keywords":["service account","machine identity","automation","CI/CD","runner","stack","roles","API token","account","accounts"],"href":"/concepts/service-accounts"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Roles","slug":"roles","depth":2,"children":[]},{"title":"Managing service accounts","slug":"managing-service-accounts","depth":2,"children":[{"title":"Create","slug":"create","depth":3,"children":[]},{"title":"Mint a token","slug":"mint-a-token","depth":3,"children":[]},{"title":"List tokens","slug":"list-tokens","depth":3,"children":[]},{"title":"Delete a token","slug":"delete-a-token","depth":3,"children":[]},{"title":"Update a service account","slug":"update-a-service-account","depth":3,"children":[]},{"title":"List","slug":"list","depth":3,"children":[]},{"title":"Delete","slug":"delete","depth":3,"children":[]}]},{"title":"Runner service accounts","slug":"runner-service-accounts","depth":2,"children":[]},{"title":"Stack service accounts","slug":"stack-service-accounts","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/nuoninc/c0c6086750944f2b/scripts.js","/_mintlify/custom/nuoninc/ce6ed4285b1e45a3/pylon.js","/_mintlify/custom/nuoninc/d11308f639707293/wistia.js"],"subdomain":"nuoninc","siteName":"Nuon documentation","title":"Service Accounts - Nuon documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-28T20:21:48.248Z","originalFileLocation":"concepts/service-accounts.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=\"Named machine identities for automation, CI/CD.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Nuon documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/nuoninc/WqJ7p4TuQl442aEn/_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/nuoninc/WqJ7p4TuQl442aEn/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/nuoninc/WqJ7p4TuQl442aEn/_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/nuoninc/WqJ7p4TuQl442aEn/_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/nuoninc/WqJ7p4TuQl442aEn/_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/nuoninc/WqJ7p4TuQl442aEn/_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/nuoninc/WqJ7p4TuQl442aEn/_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/nuoninc/WqJ7p4TuQl442aEn/_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/nuoninc/WqJ7p4TuQl442aEn/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Service Accounts - Nuon documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Named machine identities for automation, CI/CD.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Nuon Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.nuon.co/concepts/service-accounts\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://nuoninc.mintlify.site/_mintlify/api/og/v2?division=Access+and+Permission\u0026amp;title=Service+Accounts\u0026amp;description=Named+machine+identities+for+automation%2C+CI%2FCD.\u0026amp;theme=8d50655c64fafbf225a00426\u0026amp;signature=5fb5e19cf2bb0439b4799685c2b8f16e2489aa8cb722e45a6f9a564673805472\">\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=\"Service Accounts - Nuon documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Named machine identities for automation, CI/CD.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://nuoninc.mintlify.site/_mintlify/api/og/v2?division=Access+and+Permission\u0026amp;title=Service+Accounts\u0026amp;description=Named+machine+identities+for+automation%2C+CI%2FCD.\u0026amp;theme=8d50655c64fafbf225a00426\u0026amp;signature=5fb5e19cf2bb0439b4799685c2b8f16e2489aa8cb722e45a6f9a564673805472\">\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/nuoninc/WqJ7p4TuQl442aEn/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Nuon documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#256A7F\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.nuon.co/concepts/service-accounts\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/concepts/service-accounts.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.nuon.co/#organization\",\"name\":\"Nuon documentation\",\"url\":\"https://docs.nuon.co\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/nuoninc/RZoWFEpvSvd8sGqW/logo/light.svg?fit=max\u0026auto=format\u0026n=RZoWFEpvSvd8sGqW\u0026q=85\u0026s=5fe6681050ff3486a1e940fe9090d74d\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.nuon.co#website\",\"name\":\"Nuon documentation\",\"url\":\"https://docs.nuon.co\",\"publisher\":{\"@id\":\"https://docs.nuon.co/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.nuon.co/concepts/service-accounts#webpage\",\"url\":\"https://docs.nuon.co/concepts/service-accounts\",\"name\":\"Service Accounts\",\"description\":\"Named machine identities for automation, CI/CD.\",\"dateModified\":\"2026-10-28T20:21:48.248Z\",\"isPartOf\":{\"@id\":\"https://docs.nuon.co#website\"},\"breadcrumb\":{\"@id\":\"https://docs.nuon.co/concepts/service-accounts#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.nuon.co/concepts/service-accounts#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Guides\",\"item\":\"https://docs.nuon.co/guides/building-nuon-apps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Access and Permission\",\"item\":\"https://docs.nuon.co/guides/team-management\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Service Accounts\",\"item\":\"https://docs.nuon.co/concepts/service-accounts\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.nuon.co/concepts/service-accounts#article\",\"headline\":\"Service Accounts\",\"name\":\"Service Accounts\",\"description\":\"Named machine identities for automation, CI/CD.\",\"url\":\"https://docs.nuon.co/concepts/service-accounts\",\"mainEntityOfPage\":{\"@id\":\"https://docs.nuon.co/concepts/service-accounts#webpage\"},\"dateModified\":\"2026-10-28T20:21:48.248Z\",\"keywords\":\"service account, machine identity, automation, CI/CD, runner, stack, roles, API token, account, accounts\",\"publisher\":{\"@id\":\"https://docs.nuon.co/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.nuon.co#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Nuon documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Nuon documentation","nav":{"global":{"anchors":[]},"tabs":[{"tab":"Getting Started","icon":"rocket","pages":[{"title":"Getting Started","href":"/get-started/introduction"}]},{"tab":"Concepts","icon":"lightbulb","pages":[{"title":"Concepts","href":"/concepts/overview"}]},{"tab":"Guides","icon":"screwdriver-wrench","groups":[{"group":"Guides","pages":[{"group":"Apps","boost":3,"expanded":true,"pages":[{"title":"Building Nuon Apps","href":"/guides/building-nuon-apps"},{"title":"Multiple App Configurations","href":"/guides/multiple-app-configurations"},{"title":"Retaining Resources on Teardown","href":"/guides/retaining-resources-on-teardown"},{"title":"Configuring Inputs \u0026 Secrets","href":"/guides/configuring-inputs-and-secrets"},{"title":"Configuring Sandboxes","href":"/guides/configuring-sandboxes"},{"title":"Cloud Connections","href":"/guides/cloud-connections"},{"title":"Sandbox Builds","href":"/guides/sandbox-builds"},{"title":"Using Variables","href":"/guides/using-variables"},{"title":"Connect GitHub","href":"/guides/vcs"}]},{"group":"Components","boost":3,"expanded":false,"pages":[{"title":"Component Commands","href":"/guides/managing-components"},{"title":"Component Dependencies","href":"/guides/component-dependencies"},{"title":"Toggleable Components","href":"/guides/toggleable-components"},{"title":"Terraform Components","href":"/guides/terraform-components"},{"title":"Helm Chart Components","href":"/guides/helm-chart-components"},{"title":"Kubernetes Manifest Components","href":"/guides/kubernetes-manifest-components"},{"title":"Container Image Components","href":"/guides/container-image-components"},{"title":"Private Image Registries","href":"/guides/private-image-registries"},{"title":"Verify Container Image Signatures","href":"/guides/image-signature-verification"},{"title":"Track image patches with update policies","href":"/guides/image-update-policies"},{"title":"Pulumi Components","href":"/guides/pulumi-components"},{"title":"Auto Retries","sidebarTitle":"Auto Retries","href":"/concepts/components/auto-retries"}]},{"group":"Stacks","boost":2,"expanded":false,"pages":[{"title":"Stand-alone VPC","href":"/concepts/stacks/stand-alone-vpc"},{"title":"Customer VPC","href":"/concepts/stacks/customer-vpc"},{"title":"Customer Cluster","href":"/concepts/stacks/customer-cluster"},{"title":"Custom Install Stacks","href":"/guides/custom-nested-stacks"},{"title":"Nuon Stack Terraform Provider","href":"/guides/nuon-stack-terraform-provider"},{"title":"Customizing Terraform Stack Templates","href":"/guides/customizing-terraform-stack-templates"},{"title":"Provision Stacks with CloudFormation","href":"/guides/provision-stacks-with-cloudformation"},{"title":"Provision Stacks with a Terraform Module","href":"/guides/provision-stacks-with-terraform-module"},{"title":"Provision Stacks with Terraform","href":"/guides/provision-stacks-with-terraform"},{"title":"Provision Stacks with Spacelift","href":"/guides/provision-stacks-with-spacelift"}]},{"group":"CLI","boost":2,"expanded":false,"pages":[{"title":"CLI Extensions","href":"/guides/cli-extensions"},{"title":"Using Multiple CLI Versions","href":"/guides/cli-versions"},{"title":"Using Terraform CLI","href":"/guides/terraform-cli"}]},{"group":"README","boost":2,"expanded":false,"pages":[{"title":"Using READMEs","href":"/guides/using-readmes"},{"title":"Programmable READMEs","href":"/guides/programmable-readmes"}]},{"group":"Installs","boost":3,"expanded":false,"pages":[{"title":"Positioning Safety of BYOC","href":"/guides/vendor-customers"},{"title":"Creating Installs","href":"/guides/install-configs"},{"title":"Syncing Install Configs from Git","href":"/guides/install-config-syncing"},{"title":"Component Overrides","href":"/guides/component-overrides"},{"title":"Custom Domains","href":"/guides/custom-domains"}]},{"group":"Actions","boost":3,"expanded":false,"pages":[{"title":"Configure actions","href":"/guides/actions"},{"title":"Run adhoc actions","href":"/guides/adhoc-actions"},{"title":"Container Actions","href":"/guides/container-actions"}]},{"group":"Policies","boost":3,"expanded":false,"pages":[{"title":"Configuring Policies","href":"/guides/configuring-policies"},{"title":"External Image Policies","href":"/guides/external-image-policies"}]},{"group":"Updates and Operations","boost":3,"expanded":false,"pages":[{"title":"Configure app branches","href":"/guides/app-branches"},{"title":"App branch migration","href":"/guides/app-branch-migration"},{"title":"Roll back an install","href":"/guides/rollback-install-config"},{"title":"Reprovision an install","href":"/guides/reprovision-installs"},{"title":"Configure runbooks","href":"/guides/runbooks"},{"title":"Database Migrations","href":"/guides/database-migrations"},{"title":"Health Checks","href":"/guides/health-checks"},{"title":"Operation Roles","href":"/guides/operation-roles"},{"title":"Runner Management Mode","href":"/guides/runner-management-mode"},{"title":"Customer-Controlled Runner Shutdown","href":"/guides/runner-kill-switch"},{"title":"Export Runner Audit Logs","href":"/guides/export-runner-audit-logs"},{"title":"Manage Install Telemetry","href":"/guides/manage-install-telemetry"}]},{"group":"Automate and Integrate","boost":2,"expanded":false,"pages":[{"title":"Build a UI integration","href":"/guides/ui-integration"},{"title":"Let customers manage their install","href":"/guides/control-plane-integration"},{"title":"Idempotent operations","href":"/guides/idempotent-operations"},{"title":"GitHub Actions","href":"/guides/github-actions"},{"title":"Webhooks","href":"/guides/webhooks"},{"title":"Configure Triggers","href":"/guides/triggers"},{"title":"Slack","href":"/guides/slack"}]},{"group":"Access and Permission","boost":2,"expanded":false,"pages":[{"title":"Team Management","href":"/guides/team-management"},{"title":"Access Control","href":"/concepts/access-control"},{"title":"API Tokens","description":"Durable tokens for authenticating to the Nuon Control Plane API.","href":"/concepts/api-tokens"},{"title":"Service Accounts","href":"/concepts/service-accounts"},{"title":"OIDC Federation","description":"Exchange OIDC tokens from any trusted workload for short-lived Nuon API tokens — no stored secrets.","href":"/concepts/oidc-federation"}]}]}]},{"tab":"Agents","icon":"robot","pages":[{"title":"Agents","href":"/guides/agents/overview"}]},{"tab":"Reference","icon":"book","pages":[{"title":"Reference","href":"/cli"}]},{"tab":"Changelog","icon":"clock-rotate-left","pages":[{"title":"Changelog","href":"/updates/updates"}]}]},"basePath":"","title":"Service Accounts - Nuon documentation","buildId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","deploymentId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","dynamics":[],"chunks":[]}