Overview of supported cloud platforms — AWS, Azure, and Google Cloud — and what’s available on each.
The first and most obvious challenge of BYOC is supporting all the cloud platforms you want to deploy to. Leveraging our runner architecture, Nuon is able to provide first-class support for the major cloud platforms, while maintaining a constistent experience for day-2 operations.
To install the Nuon runner into your customer’s cloud account, Nuon generates a Stack template in both Terraform and the platform’s native IaC language. Each version of the Stack will create the same resources, so you can pick whichever one suits you and your customers the best.The Stack is meant to be provisioned by your customer in their cloud account, phoning home to the Nuon control plane after it has provisioned. This means no cross-account access is required to provision it — your customer stays in full control of the runner identity and the resources it manages.Nuon will generate links and CLI commands you can share with your customer to install the Stack. You can also download the template if your customer would like to inspect it. If the platform offers a simple, one-click installation method, such as AWS Cloudformation Quickcreate, will support that.
Google Cloud’s IaC solution, Infrastructure Manager, uses Terraform natively, so we do not generate a separate template for Google installs.
Each cloud platform has it’s own conventions, best practices, and tools to manage access control. At the same time, BYOC requires an approach that can be consistently applied across all of them. How does Nuon balance these competing concerns?
The Nuon runner is designed to be platform-independent and stateless. When deployed, it is given an identity by the Stack, which is granted limited access to the cloud environment based on your application config.The runner does not store platform credentials. It will attempt to authenticate for each job it runs, using whatever identity has been assigned to it.Since your customer installs the Stack, they have full control over it, and can revoke the runner identity’s access at any time using their cloud’s native access control. The runner will immediately lose access to the cloud environment if they do this.
The access the runner identity has is controlled by each platform’s native access control features. See the page for each platform for implementation and configuration details.
AWS
Azure
Google Cloud
Custom Roles and Permissions
Kyverno Policies on Runner Jobs
Kyverno Policies in Kubernetes Cluster
{"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"}},"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":""},"chroma":{"liveDeploymentHistoryId":"6ae2443e51449a9936dc63ac","collectionId":"4ce68e07-fe54-446d-ab7a-84200eb64f34","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae2443e51449a9936dc63ac"},"feedback":{"edits":false,"issues":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae2486446012f4c953cf728","clientVersion":"0.0.4005","searchFilterCounts":[{"language":"default","tag":"Guides","count":58},{"language":"default","tag":"Changelog","count":44},{"language":"default","tag":"Reference","count":34},{"language":"default","tag":"Concepts","count":24},{"language":"default","tag":"Configuration","count":21},{"language":"default","tag":"Configuration Types","count":14},{"language":"default","tag":"Getting Started","count":14},{"language":"default","tag":"Operate Installs","count":11},{"language":"default","tag":"Build an App","count":11},{"language":"default","tag":"Advanced","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":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"editor-nav-generations","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":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","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:.6rem;padding:.01rem .25rem;color:#fff;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{margin:0 0 1.75rem;border:1px solid var(--try-border);border-radius:12px;background:var(--try-bg);font-size:.875rem;color:var(--try-text)}.nuon-flow,.nuon-mcp-picker,.nuon-try-agent{--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)}.nuon-flow{font-size:.875rem}.dark .nuon-flow,.dark .nuon-mcp-picker,.dark .nuon-try-agent{--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:.75rem;padding:.5rem .5rem .5rem .75rem}.nuon-try-agent-toggle{display:flex;align-items:center;gap:.625rem;flex:1;min-width:0;background:0 0;border:0;padding:0;text-align:left;color:inherit;cursor:pointer}.nuon-try-agent-badge{display:inline-flex;align-items:center;gap:.35rem;flex-shrink:0;padding:.15rem .5rem;border-radius:999px;background:var(--try-accent-soft);color:var(--try-accent);font-size:.7rem;font-weight:600;letter-spacing:.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 .15s}.nuon-try-agent[data-open=true] .nuon-try-agent-chevron{transform:rotate(180deg)}.nuon-try-agent-actions{display:flex;gap:.375rem;flex-shrink:0}.nuon-try-agent-btn{padding:.3rem .65rem;border:1px solid var(--try-border);border-radius:8px;background:0 0;color:var(--try-text);font-size:.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:.9}.nuon-try-agent-body{padding:0 .75rem .75rem}.nuon-try-agent-prompt{margin:0 0 .5rem;padding:.625rem .75rem;border-radius:8px;background:var(--try-accent-soft);font-size:.8rem;line-height:1.5;white-space:pre-wrap}.nuon-try-agent-note{margin:0;color:var(--try-muted);font-size:.78rem;line-height:1.5}.nuon-try-agent-note a{display:block;margin-top:.25rem;font-weight:500;color:var(--try-accent);text-decoration:underline}.nuon-try-agent-note code{font-size:.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:.75rem;border:1px solid var(--try-border);border-radius:12px;background:var(--try-bg);color:var(--try-text);font-size:.875rem}.nuon-mcp-picker-tabs{display:flex;flex-wrap:wrap;gap:.25rem;margin-bottom:.75rem}.nuon-mcp-picker-tab{padding:.3rem .75rem;border:1px solid transparent;border-radius:999px;background:0 0;color:var(--try-muted);font-size:.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:.625rem}.nuon-mcp-picker-caption{margin:0 0 .3rem;color:var(--try-muted);font-size:.78rem}.nuon-mcp-picker-code{position:relative;border-radius:8px;background:#0f1d22}.nuon-mcp-picker-code pre{margin:0;padding:.75rem 5rem .75rem .875rem;white-space:pre-wrap;word-break:break-word;color:#e5e7eb;font-size:.8rem;line-height:1.6}.dark .nuon-mcp-picker-code{background:rgba(0,0,0,.45)}.nuon-mcp-picker-copy{position:absolute;top:.5rem;right:.5rem}.nuon-mcp-picker-foot{margin:.625rem 0 0;font-size:.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 .875rem}.nuon-flow-step:last-child{padding-bottom:0}.nuon-flow-step:not(:last-child)::before{content:\"\";position:absolute;left:.6875rem;top:1.5rem;bottom:0;border-left:1.5px solid var(--try-border)}.nuon-flow-group{display:block;margin:.25rem 0 .5rem 2.25rem;color:var(--try-accent);font-size:.68rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.nuon-flow-step:first-child .nuon-flow-group{margin-top:0}.nuon-flow-row{display:flex;gap:.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:.7rem;font-weight:600}.dark .nuon-flow-num{color:#0b1d24}.nuon-flow-text{display:flex;flex-direction:column;gap:.1rem;min-width:0;padding-top:.1rem;line-height:1.35}.nuon-flow-title{font-size:.9rem;font-weight:600}.nuon-flow-detail,.nuon-flow-loop{color:var(--try-muted);font-size:.82rem}.nuon-flow-loop{display:flex;gap:.5rem;align-items:center;margin:.875rem 0 0;padding-top:.75rem;border-top:1px dashed var(--try-border);font-size:.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:.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=\"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 .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:.75rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--cmap-accent)}.nuon-cmap-caption{margin-top:.25rem;font-size:.8125rem;color:var(--cmap-muted)}.nuon-cmap-list{list-style:none;margin:.75rem 0 0;padding:0}.nuon-cmap-list li{padding:.45rem 0;border-top:1px solid var(--cmap-border);font-size:.9rem;line-height:1.35}.nuon-cmap-list li:first-child{border-top:0}.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:.15rem;font-size:.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:.35rem 0;transform:rotate(90deg)}}"}],"page":{"pagePath":"platform-support/introduction","slug":"/platform-support/introduction","pageMetadata":{"title":"Introduction","description":"Overview of supported cloud platforms — AWS, Azure, and Google Cloud — and what's available on each.","icon":"layer-group","keywords":["supported clouds","AWS Azure GCP support","cloud platform compatibility","Nuon cloud coverage"],"href":"/platform-support/introduction"},"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: \"Overview of supported cloud platforms — AWS, Azure, and Google Cloud — and what’s available on each.\"\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`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Heading,Icon,Note,Table}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Icon)_missingMdxReference(`Icon`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`The first and most obvious challenge of BYOC is supporting all the cloud platforms you want to deploy to. Leveraging our runner architecture, Nuon is able to provide first-class support for the major cloud platforms, while maintaining a constistent experience for day-2 operations.`}),`\n`,_jsx(Heading,{level:`2`,id:`stacks`,children:`Stacks`}),`\n`,_jsx(_components.p,{children:`To install the Nuon runner into your customer’s cloud account, Nuon generates a Stack template in both Terraform and the platform’s native IaC language. Each version of the Stack will create the same resources, so you can pick whichever one suits you and your customers the best.`}),`\n`,_jsx(_components.p,{children:`The Stack is meant to be provisioned by your customer in their cloud account, phoning home to the Nuon control plane after it has provisioned. This means no cross-account access is required to provision it — your customer stays in full control of the runner identity and the resources it manages.`}),`\n`,_jsx(_components.p,{children:`Nuon will generate links and CLI commands you can share with your customer to install the Stack. You can also download the template if your customer would like to inspect it. If the platform offers a simple, one-click installation method, such as AWS Cloudformation Quickcreate, will support that.`}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`Google Cloud’s IaC solution, Infrastructure Manager, uses Terraform natively, so we do not generate a separate template for Google installs.`})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{}),_jsx(_components.th,{children:`AWS`}),_jsx(_components.th,{children:`Azure`}),_jsx(_components.th,{children:`Google Cloud`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Terraform`})}),_jsx(_components.td,{children:_jsx(Icon,{icon:`check`,color:`#8040bf`})}),_jsx(_components.td,{children:_jsx(Icon,{icon:`check`,color:`#8040bf`})}),_jsx(_components.td,{children:_jsx(Icon,{icon:`check`,color:`#8040bf`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Native IaC`})}),_jsx(_components.td,{children:_jsx(_components.a,{href:`https://aws.amazon.com/cloudformation/`,children:`Cloudformation`})}),_jsx(_components.td,{children:_jsx(_components.a,{href:`https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/`,children:`Bicep`})}),_jsx(_components.td,{children:`N/A`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`GUI Installation`})}),_jsx(_components.td,{children:_jsx(Icon,{icon:`check`,color:`#8040bf`})}),_jsx(_components.td,{children:_jsx(Icon,{icon:`xmark`,color:`#e2e0e4`})}),_jsx(_components.td,{children:_jsx(Icon,{icon:`xmark`,color:`#e2e0e4`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`CLI Installation`})}),_jsx(_components.td,{children:_jsx(Icon,{icon:`check`,color:`#8040bf`})}),_jsx(_components.td,{children:_jsx(Icon,{icon:`check`,color:`#8040bf`})}),_jsx(_components.td,{children:_jsx(Icon,{icon:`check`,color:`#8040bf`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Download Template`})}),_jsx(_components.td,{children:_jsx(Icon,{icon:`check`,color:`#8040bf`})}),_jsx(_components.td,{children:_jsx(Icon,{icon:`check`,color:`#8040bf`})}),_jsx(_components.td,{children:_jsx(Icon,{icon:`check`,color:`#8040bf`})})]})]})]}),`\n`,_jsxs(_components.p,{children:[`You can find more information about Stacks on the `,_jsx(_components.a,{href:`/concepts/stacks`,children:`Stacks Concept page`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`access-control`,children:`Access Control`}),`\n`,_jsx(_components.p,{children:`Each cloud platform has it’s own conventions, best practices, and tools to manage access control. At the same time, BYOC requires an approach that can be consistently applied across all of them. How does Nuon balance these competing concerns?`}),`\n`,_jsx(Heading,{level:`3`,id:`nuon-runner-identity-based-authentication`,children:`Nuon Runner Identity-Based Authentication`}),`\n`,_jsx(_components.p,{children:`The Nuon runner is designed to be platform-independent and stateless. When deployed, it is given an identity by the Stack, which is granted limited access to the cloud environment based on your application config.`}),`\n`,_jsx(_components.p,{children:`The runner does not store platform credentials. It will attempt to authenticate for each job it runs, using whatever identity has been assigned to it.`}),`\n`,_jsx(_components.p,{children:`Since your customer installs the Stack, they have full control over it, and can revoke the runner identity’s access at any time using their cloud’s native access control. The runner will immediately lose access to the cloud environment if they do this.`}),`\n`,_jsx(Heading,{level:`3`,id:`platform-native-permissions`,children:`Platform-Native Permissions`}),`\n`,_jsx(_components.p,{children:`The access the runner identity has is controlled by each platform’s native access control features. See the page for each platform for implementation and configuration details.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{}),_jsx(_components.th,{children:`AWS`}),_jsx(_components.th,{children:`Azure`}),_jsx(_components.th,{children:`Google Cloud`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Custom Roles and Permissions`})}),_jsx(_components.td,{children:_jsx(Icon,{icon:`check`,color:`#8040bf`})}),_jsx(_components.td,{children:_jsx(Icon,{icon:`xmark`,color:`#e2e0e4`})}),_jsx(_components.td,{children:_jsx(Icon,{icon:`check`,color:`#8040bf`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Kyverno Policies on Runner Jobs`})}),_jsx(_components.td,{children:_jsx(Icon,{icon:`check`,color:`#8040bf`})}),_jsx(_components.td,{children:_jsx(Icon,{icon:`xmark`,color:`#e2e0e4`})}),_jsx(_components.td,{children:_jsx(Icon,{icon:`xmark`,color:`#e2e0e4`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Kyverno Policies in Kubernetes Cluster`})}),_jsx(_components.td,{children:_jsx(Icon,{icon:`check`,color:`#8040bf`})}),_jsx(_components.td,{children:_jsx(Icon,{icon:`xmark`,color:`#e2e0e4`})}),_jsx(_components.td,{children:_jsx(Icon,{icon:`xmark`,color:`#e2e0e4`})})]})]})]})]})}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":"Introduction","description":"Overview of supported cloud platforms — AWS, Azure, and Google Cloud — and what's available on each.","icon":"layer-group","keywords":["supported clouds","AWS Azure GCP support","cloud platform compatibility","Nuon cloud coverage"],"href":"/platform-support/introduction"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Stacks","slug":"stacks","depth":2,"children":[]},{"title":"Access Control","slug":"access-control","depth":2,"children":[{"title":"Nuon Runner Identity-Based Authentication","slug":"nuon-runner-identity-based-authentication","depth":3,"children":[]},{"title":"Platform-Native Permissions","slug":"platform-native-permissions","depth":3,"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":"Introduction - Nuon documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-05-05T21:41:03.673Z","originalFileLocation":"platform-support/introduction.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=\"Overview of supported cloud platforms — AWS, Azure, and Google Cloud — and what\u0026#x27;s available on each.\">\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=\"Introduction - Nuon documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Overview of supported cloud platforms — AWS, Azure, and Google Cloud — and what\u0026#x27;s available on each.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Nuon Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.nuon.co/platform-support/introduction\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://nuoninc.mintlify.app/_mintlify/api/og/v2?division=Cloud+Reference\u0026amp;title=Introduction\u0026amp;description=Overview+of+supported+cloud+platforms+%E2%80%94+AWS%2C+Azure%2C+and+Google+Cloud+%E2%80%94+and+what%27s+available+on+each.\u0026amp;theme=8d50655c64fafbf225a00426\u0026amp;signature=de0b197f8c3fa5cb75ee44a7d7ae1df88519cbb14e51c4b99316d6ff55760c64\">\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=\"Introduction - Nuon documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Overview of supported cloud platforms — AWS, Azure, and Google Cloud — and what\u0026#x27;s available on each.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://nuoninc.mintlify.app/_mintlify/api/og/v2?division=Cloud+Reference\u0026amp;title=Introduction\u0026amp;description=Overview+of+supported+cloud+platforms+%E2%80%94+AWS%2C+Azure%2C+and+Google+Cloud+%E2%80%94+and+what%27s+available+on+each.\u0026amp;theme=8d50655c64fafbf225a00426\u0026amp;signature=de0b197f8c3fa5cb75ee44a7d7ae1df88519cbb14e51c4b99316d6ff55760c64\">\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/platform-support/introduction\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/platform-support/introduction.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/platform-support/introduction#webpage\",\"url\":\"https://docs.nuon.co/platform-support/introduction\",\"name\":\"Introduction\",\"description\":\"Overview of supported cloud platforms — AWS, Azure, and Google Cloud — and what's available on each.\",\"dateModified\":\"2026-05-05T21:41:03.673Z\",\"isPartOf\":{\"@id\":\"https://docs.nuon.co#website\"},\"breadcrumb\":{\"@id\":\"https://docs.nuon.co/platform-support/introduction#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.nuon.co/platform-support/introduction#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Nuon documentation\",\"item\":\"https://docs.nuon.co\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introduction\",\"item\":\"https://docs.nuon.co/platform-support/introduction\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.nuon.co/platform-support/introduction#article\",\"headline\":\"Introduction\",\"name\":\"Introduction\",\"description\":\"Overview of supported cloud platforms — AWS, Azure, and Google Cloud — and what's available on each.\",\"url\":\"https://docs.nuon.co/platform-support/introduction\",\"mainEntityOfPage\":{\"@id\":\"https://docs.nuon.co/platform-support/introduction#webpage\"},\"dateModified\":\"2026-05-05T21:41:03.673Z\",\"keywords\":\"supported clouds, AWS Azure GCP support, cloud platform compatibility, Nuon cloud coverage\",\"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/apps"}]},{"tab":"Guides","icon":"screwdriver-wrench","pages":[{"title":"Guides","href":"/guides/managing-apps"}]},{"tab":"Agents","icon":"robot","pages":[{"title":"Agents","href":"/guides/agents/overview"}]},{"tab":"Reference","icon":"book","pages":[{"group":"Interfaces","pages":[{"group":"CLI","root":{"title":"CLI","href":"/cli"},"pages":[{"title":"Common commands","sidebarTitle":"Common commands","href":"/cli-commands"}]},{"title":"TUI","href":"/tui"},{"title":"API","href":"/nuon-api"},{"title":"Go SDK","description":"Use the Nuon Go SDK to integrate with organizations, app templates, installs, components, workflows, and other Nuon resources.","href":"/sdks"}]},{"group":"Cloud Reference","boost":1,"pages":[{"title":"Introduction","icon":"layer-group","href":"/platform-support/introduction"},{"title":"AWS","description":"Deploy and manage BYOC apps on AWS.","icon":"amazon","href":"/platform-support/aws"},{"title":"Azure","icon":"microsoft","href":"/platform-support/azure"},{"title":"Google Cloud","icon":"google","href":"/platform-support/gcp"}]},{"group":"Configuration","pages":[{"title":"Configuration Reference","href":"/config-ref/index"},{"title":"Configuration Files","href":"/configuration-files"},{"group":"Component Types","boost":2.5,"pages":[{"title":"Container Image","href":"/config-ref/container-image"},{"title":"Helm","href":"/config-ref/helm"},{"title":"Kubernetes Manifest","href":"/config-ref/kubernetes-manifest"},{"title":"Pulumi","href":"/config-ref/pulumi"},{"title":"Terraform","href":"/config-ref/terraform"}]},{"group":"Configuration Types","pages":[{"title":"Action","href":"/config-ref/action"},{"title":"Branch","href":"/config-ref/branch"},{"title":"Break Glass","href":"/config-ref/break-glass"},{"title":"Inputs","href":"/config-ref/inputs"},{"title":"Install","href":"/config-ref/install"},{"title":"Installer","href":"/config-ref/installer"},{"title":"Metadata","href":"/config-ref/metadata"},{"title":"Permissions","href":"/config-ref/permissions"},{"title":"Permission Policy","href":"/config-ref/permission-policy"},{"title":"Policies","href":"/config-ref/policies"},{"title":"Runner","href":"/config-ref/runner"},{"title":"Sandbox","href":"/config-ref/sandbox"},{"title":"Secrets","href":"/config-ref/secrets"},{"title":"Stack","href":"/config-ref/stack"}]}]},{"group":"Architecture Reference","boost":1.5,"pages":[{"title":"Platform Architecture","href":"/architecture/platform"},{"title":"Your App Deployment Diagram","href":"/architecture/app-deployment"},{"title":"Runner Authentication","href":"/architecture/runner-auth"},{"title":"Security","href":"/security"}]}]},{"tab":"Changelog","icon":"clock-rotate-left","pages":[{"title":"Changelog","href":"/updates/updates"}]}]},"title":"Introduction - Nuon documentation","buildId":"dpl_48qhjNLiu9iJQQSZJz9Fa2ihBbPH","deploymentId":"dpl_48qhjNLiu9iJQQSZJz9Fa2ihBbPH","dynamics":[],"chunks":[]}