Learn what is a Layerform back-end and how to use and provision them.
A Layerform back-end is where Layerform stores layer definitions and the states for each layer instance.There are two moments when you interface with a Layerform back-end. The first is when you provision the back-end with layer definitions.The second is when a Layerform CLI user runs a spawn or kill command. Those commands cause the CLI to fetch layer definitions and the necessary pieces of state. The CLI will also update the state in the back-end when it changes.
There are two types of back-ends: local and s3.The local back-end means you will store state and layer definitions on disk.The problem with using the local back-end is that other members of the team won’t have access to your layer definitions and their state.The s3 back-end specifies the S3 bucket into which Layerform will store layer definitions and state.By using an s3 back-end you enable your whole team to fetch the definitions you provisioned. Additionally, your team can share core pieces of infrastructure because they will have access to shared state in the cloud.
Now, run layerform configure to provision these layers to your S3 bucket.
Please create a bucket exclusively for Layerform when using an S3 bucket as a back-end.Layerform should always have its own bucket for storing layer states and definitions. Otherwise, it may overwrite existing files.
Users directly interface with the back-end when they run layerform spawn and layerform kill.Those commands cause the Layerform CLI to fetch state and layer definitions from the back-end so it knows which Terraform files to run.After running the Terraform files necessary to create an instance of the desired layer definition, Layerform will upload the updated layer state to your back-end.
To configure your CLI to use a particular back-end, you must remember to update the config.yaml file within ~/.layerform so it pulls and writes data to the correct place.To use an S3 bucket, you must add a context entry whose type is s3. That entry must specify the bucket’s name under the bucket key.Then, you should set currentContext to the name of your S3 context, as shown below.
Please create a bucket exclusively for Layerform when using an S3 bucket as a back-end.Layerform should always have its own bucket for storing layer states and definitions. Otherwise, it may overwrite existing files.
{"docsConfig":{"$schema":"https://mintlify.com/docs.json","theme":"mint","name":"Docs","colors":{"primary":"#1E5E46","light":"#89CCAA","dark":"#121212"},"favicon":"/favicon.png","logo":{"light":"https://mintcdn.com/ergomake-83/br_QNJl4feQWyGIg/logo/light.png?fit=max\u0026auto=format\u0026n=br_QNJl4feQWyGIg\u0026q=85\u0026s=8810a4cf7f445e6f94618672fdbaaba0","dark":"https://mintcdn.com/ergomake-83/br_QNJl4feQWyGIg/logo/dark.png?fit=max\u0026auto=format\u0026n=br_QNJl4feQWyGIg\u0026q=85\u0026s=06eeef529ddbf18f851f1c5a1e935f1d"},"appearance":{"default":"light","strict":true},"background":{"image":"https://ergomake.dev/img/gradient.png","decoration":null,"color":{"light":null,"dark":"#121212"}},"navbar":{"links":[{"label":"Support","href":"mailto:layerform@ergomake.dev"}],"primary":{"type":"github","href":"https://github.com/ergomake/layerform"}},"footer":{"socials":{"twitter":"https://twitter.com/GetErgomake","github":"https://github.com/ergomake/layerform","linkedin":"https://www.linkedin.com/company/ergomake","discord":"https://discord.gg/daGzchUGDt"}},"integrations":{"plausible":{"domain":"docs.layerform.dev"}},"navigation":{"global":{"anchors":[{"anchor":"Github","href":"https://github.com/ergomake/layerform","icon":"github"},{"anchor":"Blog","href":"https://layerform.dev/blog","icon":"memo"},{"anchor":"Community","href":"https://discord.gg/daGzchUGDt","icon":"discord"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"ergomake-83","hasAudioNarration":false,"actualSubdomain":"ergomake-83","customDomains":["docs.layerform.dev"],"gitSource":{"type":"github","owner":"ergomake","repo":"layerform-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a21a5d17a4dfbc3fb8ae84d","collectionId":"ffe09497-2149-4279-aad6-4f6c7ad08bed","schemaVersion":"v2"},"entitlements":{},"buildId":"6a21a5d17a4dfbc3fb8ae84d:success","clientVersion":"0.0.3926","searchFilterCounts":[{"language":"default","tag":"Documentation","count":14},{"language":"default","tag":"Reference","count":7},{"language":"default","tag":"Tutorial","count":4},{"language":"default","tag":"Get Started","count":3}]},"assistantConfig":{},"hasChatPermissions":false,"hasWebMcpPermissions":false,"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":"vite-origin","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":"editor-agent-model-picker","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}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"reference/backends","slug":"/reference/backends","pageMetadata":{"title":"Back-ends and provisioning","description":"Learn what is a Layerform back-end and how to use and provision them.","icon":"boxes-packing","href":"/reference/backends"},"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: \"Learn what is a Layerform back-end and how to use and provision them.\"\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,OptimizedImage,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(`div`,{className:`mint-flex mint-justify-center mint-items-center`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/ergomake-83/br_QNJl4feQWyGIg/images/platypus-spawn.png?fit=max\u0026auto=format\u0026n=br_QNJl4feQWyGIg\u0026q=85\u0026s=7d0165c57c50044b89ccf9f6b798b95d`,width:`384px`,\"data-og-width\":`1640`,\"data-og-height\":`1640`,\"data-path\":`images/platypus-spawn.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/ergomake-83/br_QNJl4feQWyGIg/images/platypus-spawn.png?w=280\u0026fit=max\u0026auto=format\u0026n=br_QNJl4feQWyGIg\u0026q=85\u0026s=712438a4e2b7bee816baa88e2aa9afe4 280w, https://mintcdn.com/ergomake-83/br_QNJl4feQWyGIg/images/platypus-spawn.png?w=560\u0026fit=max\u0026auto=format\u0026n=br_QNJl4feQWyGIg\u0026q=85\u0026s=31764d4e0e1deb890981a36e11c8a22f 560w, https://mintcdn.com/ergomake-83/br_QNJl4feQWyGIg/images/platypus-spawn.png?w=840\u0026fit=max\u0026auto=format\u0026n=br_QNJl4feQWyGIg\u0026q=85\u0026s=d3b76800ecaf954ce96fcb1ea2ffc5a1 840w, https://mintcdn.com/ergomake-83/br_QNJl4feQWyGIg/images/platypus-spawn.png?w=1100\u0026fit=max\u0026auto=format\u0026n=br_QNJl4feQWyGIg\u0026q=85\u0026s=9ec728712d748459875deb97a9c2e706 1100w, https://mintcdn.com/ergomake-83/br_QNJl4feQWyGIg/images/platypus-spawn.png?w=1650\u0026fit=max\u0026auto=format\u0026n=br_QNJl4feQWyGIg\u0026q=85\u0026s=f567ee394b0bd13010bb3cf90998bd02 1650w, https://mintcdn.com/ergomake-83/br_QNJl4feQWyGIg/images/platypus-spawn.png?w=2500\u0026fit=max\u0026auto=format\u0026n=br_QNJl4feQWyGIg\u0026q=85\u0026s=7f218e6c8f4397596cc1c817e5da8451 2500w`})}),`\n`,_jsx(_components.p,{children:`A Layerform back-end is where Layerform stores layer definitions and the states for each layer instance.`}),`\n`,_jsx(_components.p,{children:`There are two moments when you interface with a Layerform back-end. The first is when you provision the back-end with layer definitions.`}),`\n`,_jsxs(_components.p,{children:[`The second is when a Layerform CLI user runs a `,_jsx(_components.code,{children:`spawn`}),` or `,_jsx(_components.code,{children:`kill`}),` command. Those commands cause the CLI to fetch layer definitions and the necessary pieces of state. The CLI will also update the state in the back-end when it changes.`]}),`\n`,_jsx(Heading,{level:`2`,id:`types-of-back-ends`,children:`Types of back-ends`}),`\n`,_jsxs(_components.p,{children:[`There are two types of back-ends: `,_jsx(_components.code,{children:`local`}),` and `,_jsx(_components.code,{children:`s3`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`local`}),` back-end means you will store state and layer definitions on disk.`]}),`\n`,_jsxs(_components.p,{children:[`The problem with using the `,_jsx(_components.code,{children:`local`}),` back-end is that other members of the team won’t have access to your layer definitions and their state.`]}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`s3`}),` back-end specifies the S3 bucket into which Layerform will store layer definitions and state.`]}),`\n`,_jsxs(_components.p,{children:[`By using an `,_jsx(_components.code,{children:`s3`}),` back-end you enable your whole team to fetch the definitions you provisioned. Additionally, your team can share core pieces of infrastructure because they will have access to shared state in the cloud.`]}),`\n`,_jsx(Heading,{level:`2`,id:`provisioning-configuration-step`,children:`Provisioning (Configuration Step)`}),`\n`,_jsxs(_components.p,{children:[`To provision a back-end, you must first specify the desired back-end in your `,_jsx(_components.code,{children:`config.yml`}),` file in the `,_jsx(_components.code,{children:`~/.layerform`}),` folder.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`yaml`,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:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`currentContext`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`example-context`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`contexts`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` example-context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` type`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`s3`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` bucket`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`layerform-bucket-example`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` region`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`us-east-1`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Then you should define layers using a `,_jsx(_components.code,{children:`layers.json`}),` file. This file has definitions for each layer, as shown below.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`15`,language:`json`,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:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`15`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"layers\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"name\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"your_layer_name\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"files\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"layers/example.tf\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"layers/example/main.tf\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"layers/example/input.tf\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"layers/example/output.tf\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"layers/example/variables.tf\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"dependencies\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"base_layer\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Now, run `,_jsx(_components.code,{children:`layerform configure`}),` to provision these layers to your S3 bucket.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/ergomake-83/br_QNJl4feQWyGIg/images/backend-pull.png?fit=max\u0026auto=format\u0026n=br_QNJl4feQWyGIg\u0026q=85\u0026s=18d38876eb1fd44e3cc35249e2556336`,alt:``,\"data-og-width\":`2185`,width:`2185`,\"data-og-height\":`1183`,height:`1183`,\"data-path\":`images/backend-pull.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/ergomake-83/br_QNJl4feQWyGIg/images/backend-pull.png?w=280\u0026fit=max\u0026auto=format\u0026n=br_QNJl4feQWyGIg\u0026q=85\u0026s=8b6ee88dbf09251b70306e7c2403a11f 280w, https://mintcdn.com/ergomake-83/br_QNJl4feQWyGIg/images/backend-pull.png?w=560\u0026fit=max\u0026auto=format\u0026n=br_QNJl4feQWyGIg\u0026q=85\u0026s=5dedcf5336d0b2ee22907f100b474b39 560w, https://mintcdn.com/ergomake-83/br_QNJl4feQWyGIg/images/backend-pull.png?w=840\u0026fit=max\u0026auto=format\u0026n=br_QNJl4feQWyGIg\u0026q=85\u0026s=6ae11d56ef60d5065ede11bea6393329 840w, https://mintcdn.com/ergomake-83/br_QNJl4feQWyGIg/images/backend-pull.png?w=1100\u0026fit=max\u0026auto=format\u0026n=br_QNJl4feQWyGIg\u0026q=85\u0026s=38f38c18a536ec4c814fc2aaadfb832a 1100w, https://mintcdn.com/ergomake-83/br_QNJl4feQWyGIg/images/backend-pull.png?w=1650\u0026fit=max\u0026auto=format\u0026n=br_QNJl4feQWyGIg\u0026q=85\u0026s=1f4f551ea3ff3cfd9640a894aade768b 1650w, https://mintcdn.com/ergomake-83/br_QNJl4feQWyGIg/images/backend-pull.png?w=2500\u0026fit=max\u0026auto=format\u0026n=br_QNJl4feQWyGIg\u0026q=85\u0026s=4b5cc6011544b6dca893e85e167ea0c1 2500w`}),`\n`,_jsxs(Warning,{children:[_jsx(_components.p,{children:`Please create a bucket exclusively for Layerform when using an S3 bucket as a back-end.`}),_jsx(_components.p,{children:`Layerform should always have its own bucket for storing layer states and definitions. Otherwise, it may overwrite existing files.`})]}),`\n`,_jsx(Heading,{level:`2`,id:`using-usage-step`,children:`Using (Usage Step)`}),`\n`,_jsxs(_components.p,{children:[`Users directly interface with the back-end when they run `,_jsx(_components.code,{children:`layerform spawn`}),` and `,_jsx(_components.code,{children:`layerform kill`}),`.`]}),`\n`,_jsx(_components.p,{children:`Those commands cause the Layerform CLI to fetch state and layer definitions from the back-end so it knows which Terraform files to run.`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/ergomake-83/br_QNJl4feQWyGIg/images/backend-pull.png?fit=max\u0026auto=format\u0026n=br_QNJl4feQWyGIg\u0026q=85\u0026s=18d38876eb1fd44e3cc35249e2556336`,alt:``,\"data-og-width\":`2185`,width:`2185`,\"data-og-height\":`1183`,height:`1183`,\"data-path\":`images/backend-pull.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/ergomake-83/br_QNJl4feQWyGIg/images/backend-pull.png?w=280\u0026fit=max\u0026auto=format\u0026n=br_QNJl4feQWyGIg\u0026q=85\u0026s=8b6ee88dbf09251b70306e7c2403a11f 280w, https://mintcdn.com/ergomake-83/br_QNJl4feQWyGIg/images/backend-pull.png?w=560\u0026fit=max\u0026auto=format\u0026n=br_QNJl4feQWyGIg\u0026q=85\u0026s=5dedcf5336d0b2ee22907f100b474b39 560w, https://mintcdn.com/ergomake-83/br_QNJl4feQWyGIg/images/backend-pull.png?w=840\u0026fit=max\u0026auto=format\u0026n=br_QNJl4feQWyGIg\u0026q=85\u0026s=6ae11d56ef60d5065ede11bea6393329 840w, https://mintcdn.com/ergomake-83/br_QNJl4feQWyGIg/images/backend-pull.png?w=1100\u0026fit=max\u0026auto=format\u0026n=br_QNJl4feQWyGIg\u0026q=85\u0026s=38f38c18a536ec4c814fc2aaadfb832a 1100w, https://mintcdn.com/ergomake-83/br_QNJl4feQWyGIg/images/backend-pull.png?w=1650\u0026fit=max\u0026auto=format\u0026n=br_QNJl4feQWyGIg\u0026q=85\u0026s=1f4f551ea3ff3cfd9640a894aade768b 1650w, https://mintcdn.com/ergomake-83/br_QNJl4feQWyGIg/images/backend-pull.png?w=2500\u0026fit=max\u0026auto=format\u0026n=br_QNJl4feQWyGIg\u0026q=85\u0026s=4b5cc6011544b6dca893e85e167ea0c1 2500w`}),`\n`,_jsx(_components.p,{children:`After running the Terraform files necessary to create an instance of the desired layer definition, Layerform will upload the updated layer state to your back-end.`}),`\n`,_jsx(Heading,{level:`2`,id:`configuration`,children:`Configuration`}),`\n`,_jsxs(_components.p,{children:[`To configure your CLI to use a particular back-end, you must remember to update the `,_jsx(_components.code,{children:`config.yaml`}),` file within `,_jsx(_components.code,{children:`~/.layerform`}),` so it pulls and writes data to the correct place.`]}),`\n`,_jsxs(_components.p,{children:[`To use an S3 bucket, you must add a `,_jsx(_components.code,{children:`context`}),` entry whose `,_jsx(_components.code,{children:`type`}),` is `,_jsx(_components.code,{children:`s3`}),`. That entry must specify the bucket’s name under the `,_jsx(_components.code,{children:`bucket`}),` key.`]}),`\n`,_jsxs(_components.p,{children:[`Then, you should set `,_jsx(_components.code,{children:`currentContext`}),` to the name of your S3 context, as shown below.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`yaml`,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:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`currentContext`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`remote-context`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`contexts`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` remote-context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` type`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`s3`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` bucket`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`layerform-bucket-example`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` region`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`us-east-1`})]}),`\n`]})})}),`\n`,_jsxs(Warning,{children:[_jsx(_components.p,{children:`Please create a bucket exclusively for Layerform when using an S3 bucket as a back-end.`}),_jsx(_components.p,{children:`Layerform should always have its own bucket for storing layer states and definitions. Otherwise, it may overwrite existing files.`})]}),`\n`,_jsx(Heading,{level:`3`,id:`using-the-local-filesystem`,children:`Using the local filesystem`}),`\n`,_jsxs(_components.p,{children:[`To use the local filesystem back-end your `,_jsx(_components.code,{children:`context`}),` entry must use the type `,_jsx(_components.code,{children:`local`}),` and specify the directory containing your layer definitions and state.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`yaml`,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:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`9`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`currentContext`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`my-local-context`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`contexts`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` my-local-context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` type`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`local`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` dir`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/Users/someone/project/layerform-backend`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` remote-context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` type`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`s3`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` bucket`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`layerform-bucket-example`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` region`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`us-east-1`})]}),`\n`]})})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Back-ends and provisioning","description":"Learn what is a Layerform back-end and how to use and provision them.","icon":"boxes-packing","href":"/reference/backends"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Types of back-ends","slug":"types-of-back-ends","depth":2,"children":[]},{"title":"Provisioning (Configuration Step)","slug":"provisioning-configuration-step","depth":2,"children":[]},{"title":"Using (Usage Step)","slug":"using-usage-step","depth":2,"children":[]},{"title":"Configuration","slug":"configuration","depth":2,"children":[{"title":"Using the local filesystem","slug":"using-the-local-filesystem","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":[],"dynamicCss":".mint-flex {\n display: flex\n}\n.mint-items-center {\n align-items: center\n}\n.mint-justify-center {\n justify-content: center\n}","subdomain":"ergomake-83","siteName":"Docs","title":"Back-ends and provisioning - Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-01-06T23:41:33.630Z","originalFileLocation":"reference/backends.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"light\";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=\"light\"}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=\"Learn what is a Layerform back-end and how to use and provision them.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/ergomake-83/lw9sCWG_S3GPUHR7/_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/ergomake-83/lw9sCWG_S3GPUHR7/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/ergomake-83/lw9sCWG_S3GPUHR7/_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/ergomake-83/lw9sCWG_S3GPUHR7/_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/ergomake-83/lw9sCWG_S3GPUHR7/_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/ergomake-83/lw9sCWG_S3GPUHR7/_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/ergomake-83/lw9sCWG_S3GPUHR7/_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/ergomake-83/lw9sCWG_S3GPUHR7/_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/ergomake-83/lw9sCWG_S3GPUHR7/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Back-ends and provisioning - Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Learn what is a Layerform back-end and how to use and provision them.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.layerform.dev/reference/backends\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://ergomake-83.mintlify.app/_mintlify/api/og/v2?division=Reference\u0026amp;title=Back-ends+and+provisioning\u0026amp;description=Learn+what+is+a+Layerform+back-end+and+how+to+use+and+provision+them.\u0026amp;theme=ac80f503724784a1cdd5a740\u0026amp;signature=9838a39dab2185842edbc83686598ae6288a33d03d5ebc8e35f537bbeffacfef\">\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=\"Back-ends and provisioning - Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Learn what is a Layerform back-end and how to use and provision them.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://ergomake-83.mintlify.app/_mintlify/api/og/v2?division=Reference\u0026amp;title=Back-ends+and+provisioning\u0026amp;description=Learn+what+is+a+Layerform+back-end+and+how+to+use+and+provision+them.\u0026amp;theme=ac80f503724784a1cdd5a740\u0026amp;signature=9838a39dab2185842edbc83686598ae6288a33d03d5ebc8e35f537bbeffacfef\">\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/ergomake-83/lw9sCWG_S3GPUHR7/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1E5E46\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.layerform.dev/reference/backends\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/reference/backends.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.layerform.dev/#organization\",\"name\":\"Docs\",\"url\":\"https://docs.layerform.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/ergomake-83/br_QNJl4feQWyGIg/logo/light.png?fit=max\u0026auto=format\u0026n=br_QNJl4feQWyGIg\u0026q=85\u0026s=8810a4cf7f445e6f94618672fdbaaba0\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.layerform.dev#website\",\"name\":\"Docs\",\"url\":\"https://docs.layerform.dev\",\"publisher\":{\"@id\":\"https://docs.layerform.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.layerform.dev/reference/backends#webpage\",\"url\":\"https://docs.layerform.dev/reference/backends\",\"name\":\"Back-ends and provisioning\",\"description\":\"Learn what is a Layerform back-end and how to use and provision them.\",\"dateModified\":\"2026-01-06T23:41:33.630Z\",\"isPartOf\":{\"@id\":\"https://docs.layerform.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.layerform.dev/reference/backends#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.layerform.dev/reference/backends#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Reference\",\"item\":\"https://docs.layerform.dev/reference/layer_definitions\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Back-ends and provisioning\",\"item\":\"https://docs.layerform.dev/reference/backends\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.layerform.dev/reference/backends#article\",\"headline\":\"Back-ends and provisioning\",\"name\":\"Back-ends and provisioning\",\"description\":\"Learn what is a Layerform back-end and how to use and provision them.\",\"url\":\"https://docs.layerform.dev/reference/backends\",\"mainEntityOfPage\":{\"@id\":\"https://docs.layerform.dev/reference/backends#webpage\"},\"dateModified\":\"2026-01-06T23:41:33.630Z\",\"publisher\":{\"@id\":\"https://docs.layerform.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.layerform.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Docs","nav":{"global":{"anchors":[{"anchor":"Github","href":"https://github.com/ergomake/layerform","icon":"github"},{"anchor":"Blog","href":"https://layerform.dev/blog","icon":"memo"},{"anchor":"Community","href":"https://discord.gg/daGzchUGDt","icon":"discord"}]},"anchors":[{"anchor":"Documentation","icon":"book-open","groups":[{"group":"Get Started","pages":[{"title":"Introduction","href":"/introduction"},{"title":"Why layers","href":"/why"},{"title":"Concepts","href":"/concepts"}]},{"group":"Tutorial","pages":[{"title":"Tutorial overview","href":"/tutorial/overview"},{"title":"Creating layer definitions","href":"/tutorial/layer-definitions"},{"title":"Provisioning layer definitions","href":"/tutorial/provisioning"},{"title":"Running the dev infrastructure","href":"/tutorial/running"}]},{"group":"Reference","pages":[{"title":"Layer definitions","description":"Learn what are layer definitions and how they work.","icon":"layer-group","href":"/reference/layer_definitions"},{"title":"Back-ends and provisioning","icon":"boxes-packing","href":"/reference/backends"},{"title":"Spawning and killing layers","description":"Learn how to spawn new layer instances or kill existing ones.","icon":"square-terminal","href":"/reference/creating_and_deleting"},{"title":"CLI Configs","icon":"sliders","href":"/reference/cli_configs"},{"title":"Listing definitions and instances","icon":"list-check","href":"/reference/managing_layers"},{"title":"Outputs","icon":"file-export","href":"/reference/outputs"},{"title":"Inner workings","icon":"gear","href":"/reference/inner_workings"}]}]}]},"title":"Back-ends and provisioning - Docs","buildId":"dpl_9DauxEjb9gzCtcuhPQFbquJvx7FJ","deploymentId":"dpl_9DauxEjb9gzCtcuhPQFbquJvx7FJ","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-D4WcYaf4.js","PlusIcon-CwhPVjTe.js","lightbox-handle-r17bVUz3.js"]}