[{"data":1,"prerenderedAt":625},["ShallowReactive",2],{"navigation":3,"page-\u002Freference\u002Fvariables":213,"surround-\u002Freference\u002Fvariables":620},[4,17,48,79,95,118,133,144,155,167,186],{"title":5,"path":6,"stem":7,"children":8,"icon":16,"exact":11},"Getting started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,12],{"title":10,"path":6,"stem":7,"exact":11,"children":-1},"Introduction",true,{"title":13,"path":14,"stem":15,"exact":11,"children":-1},"Quickstart","\u002Fgetting-started\u002Fquickstart","1.getting-started\u002F2.quickstart","i-lucide-rocket",{"title":18,"path":19,"stem":20,"children":21,"icon":47,"exact":11},"Reference","\u002Freference","10.reference\u002F1.index",[22,23,27,31,35,39,43],{"title":18,"path":19,"stem":20,"exact":11,"children":-1},{"title":24,"path":25,"stem":26,"exact":11,"children":-1},"Variables","\u002Freference\u002Fvariables","10.reference\u002F2.variables",{"title":28,"path":29,"stem":30,"exact":11,"children":-1},"Hostnames and DNS","\u002Freference\u002Fhostnames-and-dns","10.reference\u002F3.hostnames-and-dns",{"title":32,"path":33,"stem":34,"exact":11,"children":-1},"Statuses","\u002Freference\u002Fstatuses","10.reference\u002F4.statuses",{"title":36,"path":37,"stem":38,"exact":11,"children":-1},"Limits","\u002Freference\u002Flimits","10.reference\u002F5.limits",{"title":40,"path":41,"stem":42,"exact":11,"children":-1},"Sizes","\u002Freference\u002Fsizes","10.reference\u002F6.sizes",{"title":44,"path":45,"stem":46,"exact":11,"children":-1},"The GitHub App","\u002Freference\u002Fgithub-app","10.reference\u002F7.github-app","i-lucide-book-open",{"title":49,"path":50,"stem":51,"children":52,"icon":78,"exact":11},"Troubleshooting","\u002Ftroubleshooting","11.troubleshooting\u002F1.index",[53,54,58,62,66,70,74],{"title":49,"path":50,"stem":51,"exact":11,"children":-1},{"title":55,"path":56,"stem":57,"exact":11,"children":-1},"Build failures","\u002Ftroubleshooting\u002Fbuild-failures","11.troubleshooting\u002F2.build-failures",{"title":59,"path":60,"stem":61,"exact":11,"children":-1},"Start and health failures","\u002Ftroubleshooting\u002Fstart-and-health-failures","11.troubleshooting\u002F3.start-and-health-failures",{"title":63,"path":64,"stem":65,"exact":11,"children":-1},"Reference failures","\u002Ftroubleshooting\u002Freference-failures","11.troubleshooting\u002F4.reference-failures",{"title":67,"path":68,"stem":69,"exact":11,"children":-1},"Failures that are Kuppit's","\u002Ftroubleshooting\u002Ffailures-that-are-kuppits","11.troubleshooting\u002F5.failures-that-are-kuppits",{"title":71,"path":72,"stem":73,"exact":11,"children":-1},"Domain issues","\u002Ftroubleshooting\u002Fdomain-issues","11.troubleshooting\u002F6.domain-issues",{"title":75,"path":76,"stem":77,"exact":11,"children":-1},"No preview for a pull request","\u002Ftroubleshooting\u002Fno-preview-for-a-pull-request","11.troubleshooting\u002F7.no-preview-for-a-pull-request","i-lucide-life-buoy",{"title":80,"path":81,"stem":82,"children":83,"icon":94,"exact":11},"Concepts","\u002Fconcepts","2.concepts\u002F1.index",[84,86,90],{"title":85,"path":81,"stem":82,"exact":11,"children":-1},"The Kuppit model",{"title":87,"path":88,"stem":89,"exact":11,"children":-1},"The application graph","\u002Fconcepts\u002Fthe-application-graph","2.concepts\u002F2.the-application-graph",{"title":91,"path":92,"stem":93,"exact":11,"children":-1},"How a service runs","\u002Fconcepts\u002Fhow-a-service-runs","2.concepts\u002F3.how-a-service-runs","i-lucide-shapes",{"title":96,"path":97,"stem":98,"children":99,"icon":117,"exact":11},"Deployments","\u002Fdeployments","3.deployments\u002F1.index",[100,101,105,109,113],{"title":96,"path":97,"stem":98,"exact":11,"children":-1},{"title":102,"path":103,"stem":104,"exact":11,"children":-1},"Builds","\u002Fdeployments\u002Fbuilds","3.deployments\u002F2.builds",{"title":106,"path":107,"stem":108,"exact":11,"children":-1},"Redeploy and roll back","\u002Fdeployments\u002Fredeploy-and-rollback","3.deployments\u002F3.redeploy-and-rollback",{"title":110,"path":111,"stem":112,"exact":11,"children":-1},"Logs","\u002Fdeployments\u002Flogs","3.deployments\u002F4.logs",{"title":114,"path":115,"stem":116,"exact":11,"children":-1},"When a deployment fails","\u002Fdeployments\u002Fwhen-a-deployment-fails","3.deployments\u002F5.when-a-deployment-fails","i-lucide-cloud-upload",{"title":119,"path":120,"stem":121,"children":122,"icon":132,"exact":11},"Resources","\u002Fresources","4.resources\u002F1.index",[123,124,128],{"title":119,"path":120,"stem":121,"exact":11,"children":-1},{"title":125,"path":126,"stem":127,"exact":11,"children":-1},"Web services","\u002Fresources\u002Fweb-services","4.resources\u002F2.web-services",{"title":129,"path":130,"stem":131,"exact":11,"children":-1},"PostgreSQL","\u002Fresources\u002Fpostgresql","4.resources\u002F3.postgresql","i-lucide-boxes",{"title":134,"icon":135,"path":136,"stem":137,"children":138,"page":143,"exact":11},"Configuration","i-lucide-sliders-horizontal","\u002Fconfiguration","5.configuration",[139],{"title":140,"path":141,"stem":142,"exact":11,"children":-1},"Environment variables","\u002Fconfiguration\u002Fvariables","5.configuration\u002F1.variables",false,{"title":145,"path":146,"stem":147,"children":148,"icon":154,"exact":11},"Networking","\u002Fnetworking","6.networking\u002F1.index",[149,150],{"title":145,"path":146,"stem":147,"exact":11,"children":-1},{"title":151,"path":152,"stem":153,"exact":11,"children":-1},"Reaching a database","\u002Fnetworking\u002Freaching-a-database","6.networking\u002F2.reaching-a-database","i-lucide-network",{"title":156,"path":157,"stem":158,"children":159,"icon":166,"exact":11},"Domains","\u002Fdomains","7.domains\u002F1.index",[160,162],{"title":161,"path":157,"stem":158,"exact":11,"children":-1},"Hostnames",{"title":163,"path":164,"stem":165,"exact":11,"children":-1},"Custom domains","\u002Fdomains\u002Fcustom-domains","7.domains\u002F2.custom-domains","i-lucide-globe",{"title":168,"path":169,"stem":170,"children":171,"icon":185,"exact":11},"Environments","\u002Fenvironments","8.environments\u002F1.index",[172,173,177,181],{"title":168,"path":169,"stem":170,"exact":11,"children":-1},{"title":174,"path":175,"stem":176,"exact":11,"children":-1},"Preview environments","\u002Fenvironments\u002Fpreview-environments","8.environments\u002F2.preview-environments",{"title":178,"path":179,"stem":180,"exact":11,"children":-1},"Named environments","\u002Fenvironments\u002Fnamed-environments","8.environments\u002F3.named-environments",{"title":182,"path":183,"stem":184,"exact":11,"children":-1},"Deleting an environment","\u002Fenvironments\u002Fdeleting-an-environment","8.environments\u002F4.deleting-an-environment","i-lucide-git-branch",{"title":187,"path":188,"stem":189,"children":190,"icon":212,"exact":11},"Guides","\u002Fguides","9.guides\u002F1.index",[191,192,196,200,204,208],{"title":187,"path":188,"stem":189,"exact":11,"children":-1},{"title":193,"path":194,"stem":195,"exact":11,"children":-1},"Deploy a Nuxt application","\u002Fguides\u002Fdeploy-a-nuxt-application","9.guides\u002F2.deploy-a-nuxt-application",{"title":197,"path":198,"stem":199,"exact":11,"children":-1},"Deploy a Next.js application","\u002Fguides\u002Fdeploy-a-nextjs-application","9.guides\u002F3.deploy-a-nextjs-application",{"title":201,"path":202,"stem":203,"exact":11,"children":-1},"Deploy an Express application","\u002Fguides\u002Fdeploy-an-express-application","9.guides\u002F4.deploy-an-express-application",{"title":205,"path":206,"stem":207,"exact":11,"children":-1},"Deploy with a Dockerfile","\u002Fguides\u002Fdeploy-with-a-dockerfile","9.guides\u002F5.deploy-with-a-dockerfile",{"title":209,"path":210,"stem":211,"exact":11,"children":-1},"Create a staging environment","\u002Fguides\u002Fcreate-a-staging-environment","9.guides\u002F6.create-a-staging-environment","i-lucide-map",{"id":214,"title":24,"badge":215,"body":216,"category":215,"description":614,"draft":143,"extension":615,"links":215,"meta":616,"navigation":11,"path":25,"seo":617,"sitemap":618,"stem":26,"__hash__":619},"docs\u002F10.reference\u002F2.variables.md",null,{"type":217,"value":218,"toc":603},"minimark",[219,226,231,307,311,365,369,419,423,517,524,528,592,596],[220,221,222,225],"p",{},[223,224,140],"a",{"href":141}," explains how variables work. These are the rules.",[227,228,230],"h2",{"id":229},"names-and-values","Names and values",[232,233,234,247],"table",{},[235,236,237],"thead",{},[238,239,240,244],"tr",{},[241,242,243],"th",{},"Rule",[241,245,246],{},"Value",[248,249,250,262,270,278,299],"tbody",{},[238,251,252,256],{},[253,254,255],"td",{},"Name pattern",[253,257,258],{},[259,260,261],"code",{},"[A-Za-z_][A-Za-z0-9_]*",[238,263,264,267],{},[253,265,266],{},"Name length",[253,268,269],{},"At most 128 characters.",[238,271,272,275],{},[253,273,274],{},"Value size",[253,276,277],{},"At most 32 KiB.",[238,279,280,283],{},[253,281,282],{},"Reserved names",[253,284,285,288,289,288,292,288,295,298],{},[259,286,287],{},"PORT",", ",[259,290,291],{},"K_SERVICE",[259,293,294],{},"K_REVISION",[259,296,297],{},"K_CONFIGURATION",". Set by the runtime; refused as a variable name on a service or an environment.",[238,300,301,304],{},[253,302,303],{},"Uniqueness",[253,305,306],{},"One value per name per service, and one per name per environment. A service's own value wins over the environment's.",[227,308,310],{"id":309},"where-a-variable-can-be-set","Where a variable can be set",[232,312,313,329],{},[235,314,315],{},[238,316,317,320,323,326],{},[241,318,319],{},"Scope",[241,321,322],{},"Set on",[241,324,325],{},"Read by",[241,327,328],{},"Values allowed",[248,330,331,349],{},[238,332,333,336,343,346],{},[253,334,335],{},"Service",[253,337,338,339,342],{},"The service's ",[340,341,24],"strong",{}," tab",[253,344,345],{},"That service",[253,347,348],{},"Literals and references",[238,350,351,354,359,362],{},[253,352,353],{},"Environment",[253,355,356,357,342],{},"The environment's ",[340,358,24],{},[253,360,361],{},"Every web service in the environment",[253,363,364],{},"Literals only",[227,366,368],{"id":367},"references","References",[232,370,371,379],{},[235,372,373],{},[238,374,375,377],{},[241,376],{},[241,378],{},[248,380,381,395,403,411],{},[238,382,383,386],{},[253,384,385],{},"Syntax",[253,387,388,391,392],{},[259,389,390],{},"${{ \u003Cresource>.\u003CVARIABLE> }}",", for example ",[259,393,394],{},"${{ database.DATABASE_URL }}",[238,396,397,400],{},[253,398,399],{},"Target",[253,401,402],{},"A resource in the same environment as the service. Never another environment, never the service itself.",[238,404,405,408],{},[253,406,407],{},"Resolved",[253,409,410],{},"When Kuppit prepares a deployment, from the target's state at that moment. Never stored.",[238,412,413,416],{},[253,414,415],{},"Secrecy",[253,417,418],{},"Follows the referenced variable, whatever the referencing variable is named.",[227,420,422],{"id":421},"what-each-resource-exposes","What each resource exposes",[232,424,425,438],{},[235,426,427],{},[238,428,429,432,435],{},[241,430,431],{},"Resource",[241,433,434],{},"Variable",[241,436,437],{},"Secret",[248,439,440,451,462,473,485,496,507],{},[238,441,442,444,449],{},[253,443,129],{},[253,445,446],{},[259,447,448],{},"PGHOST",[253,450],{},[238,452,453,455,460],{},[253,454],{},[253,456,457],{},[259,458,459],{},"PGPORT",[253,461],{},[238,463,464,466,471],{},[253,465],{},[253,467,468],{},[259,469,470],{},"PGUSER",[253,472],{},[238,474,475,477,482],{},[253,476],{},[253,478,479],{},[259,480,481],{},"PGPASSWORD",[253,483,484],{},"Yes",[238,486,487,489,494],{},[253,488],{},[253,490,491],{},[259,492,493],{},"PGDATABASE",[253,495],{},[238,497,498,500,505],{},[253,499],{},[253,501,502],{},[259,503,504],{},"DATABASE_URL",[253,506,484],{},[238,508,509,512,515],{},[253,510,511],{},"Web service",[253,513,514],{},"Nothing",[253,516],{},[220,518,519,520,523],{},"The shape of each value is on ",[223,521,522],{"href":152},"reaching a database",".",[227,525,527],{"id":526},"secrets","Secrets",[232,529,530,538],{},[235,531,532],{},[238,533,534,536],{},[241,535],{},[241,537],{},[248,539,540,548,556,564,572,584],{},[238,541,542,545],{},[253,543,544],{},"Marking",[253,546,547],{},"Per variable, on creation or afterwards.",[238,549,550,553],{},[253,551,552],{},"Reading back",[253,554,555],{},"Never. The dashboard shows the name only.",[238,557,558,561],{},[253,559,560],{},"Changing",[253,562,563],{},"Enter a complete replacement; saving overwrites the previous value for future deployments.",[238,565,566,569],{},[253,567,568],{},"In logs",[253,570,571],{},"The service's secret values are redacted from every log line before it is shown.",[238,573,574,577],{},[253,575,576],{},"Copied to a preview",[253,578,579,580,583],{},"Only when ",[340,581,582],{},"Give previews the production secrets"," is on for the project.",[238,585,586,589],{},[253,587,588],{},"Copied to a named environment",[253,590,591],{},"Only the ones ticked by name when the environment is created.",[227,593,595],{"id":594},"when-a-change-takes-effect","When a change takes effect",[220,597,598,599,602],{},"At the next deployment, never on the running one. The service shows ",[340,600,601],{},"Runtime configuration has changed"," until it is redeployed. A rollback restores the variables the earlier deployment ran with.",{"title":604,"searchDepth":605,"depth":605,"links":606},"",3,[607,609,610,611,612,613],{"id":229,"depth":608,"text":230},2,{"id":309,"depth":608,"text":310},{"id":367,"depth":608,"text":368},{"id":421,"depth":608,"text":422},{"id":526,"depth":608,"text":527},{"id":594,"depth":608,"text":595},"The rules a variable must follow, what a reference looks like, what each resource exposes, and which values are secret.","md",{},{"title":24,"description":614},{"loc":25},"cy8nSqb8-GF4X1S8dp_NcV4Q-qfAN2KjlqHb9KUj5tc",[621,623],{"title":18,"path":19,"stem":20,"description":622,"children":-1},"The exact rules, values and vocabularies, in tables, for when the other pages have explained enough.",{"title":28,"path":29,"stem":30,"description":624,"children":-1},"The generated hostname rule, the labels Kuppit reserves, and the exact records a custom domain takes.",1788549619029]