App Variables allow you to store values through the API to be used across installs of an app template.
App variables are values that you can store in the API to be used across all
installs of an app template.App variables are meant for sensitive values that you want to manage through the
API, but do not want included in the app as an input or secret. For example, an
API key where you don’t want it visible in the app’s inputs TOML file as
part of a git-backed repo.Nuon’s API stores app variables in the Nuon data plane which is a PostgreSQL
database with no encryption.
App variables are included in the install state, and are available in job plans.
Using our example secret named external_api_key, you could reference its
value in your app config with the template expression {{ .nuon.app.variables.external_api_key }}.
If you add or update an app variable after an install has been created, you
will need to update that install’s state before the value will be included in
plans. Running a deploy or sandbox provision will trigger a state update.
{"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.4087","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":[],"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/app-variables","slug":"/concepts/app-variables","pageMetadata":{"title":"App Variables","description":"App Variables allow you to store values through the API to be used across installs of an app template.","keywords":["app variables","what are app variables","variables","store values in API","nuon apps variables","template values","unencrypted configuration","per-app values"],"href":"/concepts/app-variables"},"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: \"App Variables allow you to store values through the API to be used across installs of an app template.\"\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={code:`code`,p:`p`,pre:`pre`,span:`span`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`App variables are values that you can store in the API to be used across all\ninstalls of an app template.`}),`\n`,_jsx(_components.p,{children:`App variables are meant for sensitive values that you want to manage through the\nAPI, but do not want included in the app as an input or secret. For example, an\nAPI key where you don’t want it visible in the app’s inputs TOML file as\npart of a git-backed repo.`}),`\n`,_jsx(_components.p,{children:`Nuon’s API stores app variables in the Nuon data plane which is a PostgreSQL\ndatabase with no encryption.`}),`\n`,_jsx(Heading,{level:`2`,id:`defining-app-variables`,children:`Defining App Variables`}),`\n`,_jsx(_components.p,{children:`You can create app variables 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:` apps`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` variables`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` create`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --name=external_api_key`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --value=b25yYW5nZXRpZ2h0bHlhdHRlbXB0cGxlbnR5cmVhZGRvdWJsZXdlc3RleWVodW50d2g=`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Once created you should be able to view the default 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:` apps`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` variables`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` list`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`If you no longer need the default, you can delete it using the CLI`}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`nuon variables delete --id=app_variable_id`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(Heading,{level:`2`,id:`using-app-variables`,children:`Using App Variables`}),`\n`,_jsxs(_components.p,{children:[`App variables are included in the install state, and are available in job plans.\nUsing our example secret named `,_jsx(_components.code,{children:`external_api_key`}),`, you could reference its\nvalue in your app config with the template expression `,_jsx(_components.code,{children:`{{ .nuon.app.variables.external_api_key }}`}),`.`]}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`If you add or update an app variable after an install has been created, you\nwill need to update that install’s state before the value will be included in\nplans. Running a deploy or sandbox provision will trigger a state update.`})})]})}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":"App Variables","description":"App Variables allow you to store values through the API to be used across installs of an app template.","keywords":["app variables","what are app variables","variables","store values in API","nuon apps variables","template values","unencrypted configuration","per-app values"],"href":"/concepts/app-variables"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Defining App Variables","slug":"defining-app-variables","depth":2,"children":[]},{"title":"Using App Variables","slug":"using-app-variables","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":"App Variables - Nuon documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-20T15:19:33.477Z","originalFileLocation":"concepts/app-variables.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=\"App Variables allow you to store values through the API to be used across installs of an app template.\">\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=\"App Variables - Nuon documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"App Variables allow you to store values through the API to be used across installs of an app template.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Nuon Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.nuon.co/concepts/app-variables\">\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=App+Templates\u0026amp;title=App+Variables\u0026amp;description=App+Variables+allow+you+to+store+values+through+the+API+to+be+used+across+installs+of+an+app+template.\u0026amp;theme=8d50655c64fafbf225a00426\u0026amp;signature=e91c5e2cbfe84f356de46598f6bd80dab112277d0c080388d7af164aaed77d5c\">\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=\"App Variables - Nuon documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"App Variables allow you to store values through the API to be used across installs of an app template.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://nuoninc.mintlify.site/_mintlify/api/og/v2?division=App+Templates\u0026amp;title=App+Variables\u0026amp;description=App+Variables+allow+you+to+store+values+through+the+API+to+be+used+across+installs+of+an+app+template.\u0026amp;theme=8d50655c64fafbf225a00426\u0026amp;signature=e91c5e2cbfe84f356de46598f6bd80dab112277d0c080388d7af164aaed77d5c\">\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/app-variables\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/concepts/app-variables.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/app-variables#webpage\",\"url\":\"https://docs.nuon.co/concepts/app-variables\",\"name\":\"App Variables\",\"description\":\"App Variables allow you to store values through the API to be used across installs of an app template.\",\"dateModified\":\"2026-10-20T15:19:33.477Z\",\"isPartOf\":{\"@id\":\"https://docs.nuon.co#website\"},\"breadcrumb\":{\"@id\":\"https://docs.nuon.co/concepts/app-variables#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.nuon.co/concepts/app-variables#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"App Templates\",\"item\":\"https://docs.nuon.co/concepts/apps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"App Variables\",\"item\":\"https://docs.nuon.co/concepts/app-variables\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.nuon.co/concepts/app-variables#article\",\"headline\":\"App Variables\",\"name\":\"App Variables\",\"description\":\"App Variables allow you to store values through the API to be used across installs of an app template.\",\"url\":\"https://docs.nuon.co/concepts/app-variables\",\"mainEntityOfPage\":{\"@id\":\"https://docs.nuon.co/concepts/app-variables#webpage\"},\"dateModified\":\"2026-10-20T15:19:33.477Z\",\"keywords\":\"app variables, what are app variables, variables, store values in API, nuon apps variables, template values, unencrypted configuration, per-app values\",\"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":"Nuon Overview","sidebarTitle":"Nuon Overview","mode":"wide","href":"/concepts/overview"},{"group":"App Templates","boost":3,"root":{"title":"App Templates","href":"/concepts/apps"},"expanded":true,"pages":[{"title":"Components","href":"/concepts/components"},{"title":"Inputs","href":"/concepts/app-inputs"},{"title":"Secrets","description":"Define and manage sensitive values, such as credentials, API keys, and tokens, used to configure the components and actions of your app template.","href":"/concepts/app-secrets"},{"title":"App Variables","href":"/concepts/app-variables"}]},{"group":"Installs","boost":3,"root":{"title":"Installs","description":"One deployment of your App Template in a customer's cloud account.","href":"/concepts/installs"},"expanded":true,"pages":[{"title":"Stack","href":"/concepts/stacks"},{"title":"Runner","href":"/concepts/runners"},{"title":"Sandbox","href":"/concepts/sandboxes"}]},{"group":"Updates and Operations","boost":3,"root":{"title":"Updates and Operations","href":"/concepts/updates-and-operations"},"expanded":true,"pages":[{"title":"App Branches","href":"/concepts/app-branches"},{"title":"Workflows","href":"/concepts/workflows"},{"title":"Policies","href":"/concepts/policies"},{"title":"Actions","href":"/concepts/actions"},{"title":"Runbooks","href":"/concepts/runbooks"},{"title":"Operation Roles","href":"/concepts/operation-roles"},{"title":"Break Glass","href":"/concepts/break-glass"},{"title":"Triggers","href":"/concepts/triggers"},{"title":"Install Telemetry","sidebarTitle":"Telemetry","href":"/concepts/install-telemetry"}]}]},{"tab":"Guides","icon":"screwdriver-wrench","pages":[{"title":"Guides","href":"/guides/building-nuon-apps"}]},{"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":"App Variables - Nuon documentation","buildId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","deploymentId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","dynamics":[],"chunks":[]}