Compare the two ways to autoscale Machines on Fly.io: Fly Proxy autostop/autostart for an existing pool, or a metrics-based autoscaler you deploy as an app.
Autoscaling adjusts the number of running or created Fly Machines dynamically. We support two forms of autoscaling:
Fly Proxy autostop/autostart starts and stops Machines based on load; Machines are never created or deleted. You create a āpoolā of Machines in one or more regions and Fly Proxy starts and stops them as needed.For details about how it works, see Fly Proxy autostop/autostart. To configure autostop/autostart for your app, see Autostop/autostart Machines.
The metrics-based autoscaler scales your application based on any metric. You deploy the autoscaler as an app in your organization. It polls collected metrics and computes the number of machines needed based on the metric you define. The autoscaler can create and delete machines or stop and start existing Machines.To learn how to deploy and configure the autoscaler, see Autoscale based on metrics.
āI
{"docsConfig":{"theme":"maple","$schema":"https://mintlify.com/docs.json","name":"Fly.io","colors":{"primary":"#7C3BED","light":"#A78BFA","dark":"#5B21B6"},"logo":{"light":"https://mintcdn.com/fly-io/izaS1l2UMuz6sm1H/images/logo/light.svg?fit=max\u0026auto=format\u0026n=izaS1l2UMuz6sm1H\u0026q=85\u0026s=5f1256e06beb6fdd5ed68aad3dd32b39","dark":"https://mintcdn.com/fly-io/izaS1l2UMuz6sm1H/images/logo/dark.svg?fit=max\u0026auto=format\u0026n=izaS1l2UMuz6sm1H\u0026q=85\u0026s=67c887e4f1263581cb10ab19ddaf8181"},"favicon":"https://mintcdn.com/fly-io/izaS1l2UMuz6sm1H/images/logo/favicon.ico?fit=max\u0026auto=format\u0026n=izaS1l2UMuz6sm1H\u0026q=85\u0026s=b14504948f2e9d83cd3aa25e07454f22","background":{"decoration":"windows"},"navbar":{"links":[{"href":"https://fly.io/pricing/","label":"Pricing"},{"href":"/about/support","label":"Support"},{"href":"https://fly.io/app/sign-in/","label":"Log In"}],"primary":{"type":"button","label":"Sign Up","href":"https://fly.io/app/sign-up/?s=docs"}},"footer":{"links":[{"header":"Legal","items":[{"label":"Privacy Policy","href":"https://fly.io/legal/privacy-policy"}]}]},"fonts":{"heading":{"family":"P22 Mackinac Pro","source":"https://docs.fly.io/assets/fonts/mackinac-bold.woff2","format":"woff2"},"body":{"family":"Bricolage Grotesque"}},"integrations":{"plausible":{"domain":"docs.fly.io"},"telemetry":{"enabled":false}},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"fly-io","hasAudioNarration":false,"actualSubdomain":"fly-io","customDomains":["docs.fly.io"],"gitSource":{"_id":"6ad7fb4f692c7c940ff1a2d1","type":"github","owner":"superfly","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aedfef5f454d7a4981650c3","clientVersion":"0.0.4087","searchFilterCounts":[{"language":"default","tag":"Fly docs","count":1172},{"language":"default","tag":"Reference","count":273},{"language":"default","tag":"flyctl","count":254},{"language":"default","tag":"Commands","count":252},{"language":"default","tag":"Machines API","count":212},{"language":"default","tag":"Language \u0026 Framework Guides","count":96},{"language":"default","tag":"Sprites API","count":50},{"language":"default","tag":"Guides (Blueprints)","count":37},{"language":"default","tag":"Getting Started","count":34},{"language":"default","tag":"Machines","count":29}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"styles.css","content":"/* vietnamese */\n@font-face {\n font-family: 'Bricolage Grotesque';\n font-style: normal;\n font-weight: 200 800;\n font-stretch: 75% 100%;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/bricolagegrotesque/v9/3y996as8bTXq_nANBjzKo3IeZx8z6up5L-eNGe6N.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Bricolage Grotesque';\n font-style: normal;\n font-weight: 200 800;\n font-stretch: 75% 100%;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/bricolagegrotesque/v9/3y996as8bTXq_nANBjzKo3IeZx8z6up5L-aNGe6N.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Bricolage Grotesque';\n font-style: normal;\n font-weight: 200 800;\n font-stretch: 75% 100%;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/bricolagegrotesque/v9/3y996as8bTXq_nANBjzKo3IeZx8z6up5L-iNGQ.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'Fragment Mono';\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/fragmentmono/v6/4iC16K5wfMRRjxp0DA6-2CLnB4Z3ia0M31U.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Fragment Mono';\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/fragmentmono/v6/4iC16K5wfMRRjxp0DA6-2CLnB4Z3iq0M31U.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Fragment Mono';\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/fragmentmono/v6/4iC16K5wfMRRjxp0DA6-2CLnB4Z3hK0M.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'Fragment Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/fragmentmono/v6/4iCr6K5wfMRRjxp0DA6-2CLnB45HhrUI.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Fragment Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/fragmentmono/v6/4iCr6K5wfMRRjxp0DA6-2CLnB41HhrUI.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Fragment Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/fragmentmono/v6/4iCr6K5wfMRRjxp0DA6-2CLnB4NHhg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n@font-face{font-family:\"P22 Mackinac Pro\";src:url(\"/assets/fonts/mackinac-medium.woff2\") format(\"woff2\");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:\"P22 Mackinac Pro\";src:url(\"/assets/fonts/mackinac-medium-italic.woff2\") format(\"woff2\");font-weight:500;font-style:italic;font-display:swap}@font-face{font-family:\"P22 Mackinac Pro\";src:url(\"/assets/fonts/mackinac-bold.woff2\") format(\"woff2\");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:\"P22 Mackinac Pro\";src:url(\"/assets/fonts/mackinac-bold-italic.woff2\") format(\"woff2\");font-weight:700;font-style:italic;font-display:swap}:root{--default-mono-font-family: \"Fragment Mono\"}#content{font-size:17px;line-height:1.6;font-weight:325;font-variation-settings:\"wdth\" 98.5, \"opsz\" 24}#content strong,#content b{font-weight:575;font-variation-settings:\"wdth\" 97.5, \"opsz\" 24}#content h2,#content h3,#content h4,#content h5,#content h6{font-weight:500}@media (min-width: 1536px){#content-area{max-width:48rem}}.hide_icon_card [data-component-part=\"card-icon\"],.hide_icon_card h2{display:none}div.frame_white>div>div>div.relative.rounded-xl.overflow-hidden.flex.justify-center{background-color:#fff;padding:8px}div.frame_purple>div>div>div.relative.rounded-xl.overflow-hidden.flex.justify-center{background-color:#281950;padding:8px}.small_img img{max-width:200px;padding:12px}.homepage_cards .columns{gap:calc(var(--spacing) * 4)}#fly-auth-nav{display:none}@media (min-width: 1024px){#fly-auth-nav{position:fixed;top:0;right:3rem;z-index:30;height:3rem;display:flex;align-items:center;gap:1.5rem}[data-banner-state=\"visible\"] #fly-auth-nav{top:2.5rem}#sidebar li[id^=\"https://fly.io/app/sign-in/\"],#sidebar li[id^=\"https://fly.io/app/sign-up/\"]{display:none}}#fly-auth-nav a{white-space:nowrap}.fly-auth-nav-signup{display:inline-flex;align-items:center;padding:0.375rem 0.875rem}#content-area:not(:has(#api-playground-2-operation-page)) #header>.prose{display:none}"}],"page":{"pagePath":"reference/autoscaling","slug":"/reference/autoscaling","pageMetadata":{"title":"Autoscaling","description":"Compare the two ways to autoscale Machines on Fly.io: Fly Proxy autostop/autostart for an existing pool, or a metrics-based autoscaler you deploy as an app.","source_url":"https://fly.io/docs/reference/autoscaling/","href":"/reference/autoscaling"},"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: \"Compare the two ways to autoscale Machines on Fly.io: Fly Proxy autostop/autostart for an existing pool, or a metrics-based autoscaler you deploy as an app.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,li:`li`,p:`p`,ul:`ul`,..._provideComponents(),...props.components},{Heading,OptimizedImage}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);return _jsxs(_Fragment,{children:[_jsx(OptimizedImage,{src:`https://mintcdn.com/fly-io/v-XOGeVK6s4rQ-4y/images/autoscaling.png?fit=max\u0026auto=format\u0026n=v-XOGeVK6s4rQ-4y\u0026q=85\u0026s=89df8e7d008844ee4ac8d08584e88ab8`,alt:`Illustration by Annie Ruygt of several machines running`,\"data-og-width\":`1200`,width:`1200`,\"data-og-height\":`515`,height:`515`,\"data-path\":`images/autoscaling.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/fly-io/v-XOGeVK6s4rQ-4y/images/autoscaling.png?w=280\u0026fit=max\u0026auto=format\u0026n=v-XOGeVK6s4rQ-4y\u0026q=85\u0026s=7beb3bfd9fa3f09eee35f617caeea590 280w, https://mintcdn.com/fly-io/v-XOGeVK6s4rQ-4y/images/autoscaling.png?w=560\u0026fit=max\u0026auto=format\u0026n=v-XOGeVK6s4rQ-4y\u0026q=85\u0026s=fb3bee4a3cc159058ed4e025de91359c 560w, https://mintcdn.com/fly-io/v-XOGeVK6s4rQ-4y/images/autoscaling.png?w=840\u0026fit=max\u0026auto=format\u0026n=v-XOGeVK6s4rQ-4y\u0026q=85\u0026s=1ab5c581d3a5ec55ee3c6ddd1fd233cf 840w, https://mintcdn.com/fly-io/v-XOGeVK6s4rQ-4y/images/autoscaling.png?w=1100\u0026fit=max\u0026auto=format\u0026n=v-XOGeVK6s4rQ-4y\u0026q=85\u0026s=1f78f37083735a8543891320ecdc9d2f 1100w, https://mintcdn.com/fly-io/v-XOGeVK6s4rQ-4y/images/autoscaling.png?w=1650\u0026fit=max\u0026auto=format\u0026n=v-XOGeVK6s4rQ-4y\u0026q=85\u0026s=65548dfdfe459f0633ac23bad41aae3e 1650w, https://mintcdn.com/fly-io/v-XOGeVK6s4rQ-4y/images/autoscaling.png?w=2500\u0026fit=max\u0026auto=format\u0026n=v-XOGeVK6s4rQ-4y\u0026q=85\u0026s=098bdec1757268887bdcd8cd9b947171 2500w`}),`\n`,_jsx(_components.p,{children:`Autoscaling adjusts the number of running or created Fly Machines dynamically. We support two forms of autoscaling:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Autostop/autostart Machines`}),`\n`,_jsx(_components.li,{children:`Metrics-based autoscaling`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`autostop-autostart-machines`,children:`Autostop/autostart Machines`}),`\n`,_jsx(_components.p,{children:`Fly Proxy autostop/autostart starts and stops Machines based on load; Machines are never created or deleted. You create a āpoolā of Machines in one or more regions and Fly Proxy starts and stops them as needed.`}),`\n`,_jsxs(_components.p,{children:[`For details about how it works, see `,_jsx(_components.a,{href:`/reference/fly-proxy-autostop-autostart`,children:`Fly Proxy autostop/autostart`}),`. To configure autostop/autostart for your app, see `,_jsx(_components.a,{href:`/launch/autostop-autostart`,children:`Autostop/autostart Machines`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`metrics-based-autoscaling`,children:`Metrics-based autoscaling`}),`\n`,_jsx(_components.p,{children:`The metrics-based autoscaler scales your application based on any metric. You deploy the autoscaler as an app in your organization. It polls collected metrics and computes the number of machines needed based on the metric you define. The autoscaler can create and delete machines or stop and start existing Machines.`}),`\n`,_jsxs(_components.p,{children:[`To learn how to deploy and configure the autoscaler, see `,_jsx(_components.a,{href:`/launch/autoscale-by-metric`,children:`Autoscale based on metrics`}),`.`]})]})}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":"Autoscaling","description":"Compare the two ways to autoscale Machines on Fly.io: Fly Proxy autostop/autostart for an existing pool, or a metrics-based autoscaler you deploy as an app.","source_url":"https://fly.io/docs/reference/autoscaling/","href":"/reference/autoscaling"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Autostop/autostart Machines","slug":"autostop-autostart-machines","depth":2,"children":[]},{"title":"Metrics-based autoscaling","slug":"metrics-based-autoscaling","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/fly-io/08c1baa7d07c2458/auth-nav.js","/_mintlify/custom/fly-io/a1ce438e27d4ce9e/fly-analytics.js"],"subdomain":"fly-io","siteName":"Fly.io","title":"Autoscaling - Fly.io","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-20T17:53:51.704Z","originalFileLocation":"reference/autoscaling.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=\"Compare the two ways to autoscale Machines on Fly.io: Fly Proxy autostop/autostart for an existing pool, or a metrics-based autoscaler you deploy as an app.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Fly.io\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/fly-io/pksrSrIEk6ICJvMM/_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/fly-io/pksrSrIEk6ICJvMM/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/fly-io/pksrSrIEk6ICJvMM/_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/fly-io/pksrSrIEk6ICJvMM/_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/fly-io/pksrSrIEk6ICJvMM/_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/fly-io/pksrSrIEk6ICJvMM/_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/fly-io/pksrSrIEk6ICJvMM/_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/fly-io/pksrSrIEk6ICJvMM/_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/fly-io/pksrSrIEk6ICJvMM/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Autoscaling - Fly.io\">\u003cmeta data-mint-head property=\"og:description\" content=\"Compare the two ways to autoscale Machines on Fly.io: Fly Proxy autostop/autostart for an existing pool, or a metrics-based autoscaler you deploy as an app.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Fly.io\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.fly.io/reference/autoscaling\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://fly-io.mintlify.site/_mintlify/api/og/v2?division=Reference\u0026amp;title=Autoscaling\u0026amp;description=Compare+the+two+ways+to+autoscale+Machines+on+Fly.io%3A+Fly+Proxy+autostop%2Fautostart+for+an+existing+pool%2C+or+a+metrics-based+autoscaler+you+deploy+as+an+app.\u0026amp;theme=8d885d55ffdf567e0c64e798\u0026amp;signature=513bdaf0c5bc70455c81be2ee2a73c8c0c87268f1dc967313d87174197815808\">\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=\"Autoscaling - Fly.io\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Compare the two ways to autoscale Machines on Fly.io: Fly Proxy autostop/autostart for an existing pool, or a metrics-based autoscaler you deploy as an app.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://fly-io.mintlify.site/_mintlify/api/og/v2?division=Reference\u0026amp;title=Autoscaling\u0026amp;description=Compare+the+two+ways+to+autoscale+Machines+on+Fly.io%3A+Fly+Proxy+autostop%2Fautostart+for+an+existing+pool%2C+or+a+metrics-based+autoscaler+you+deploy+as+an+app.\u0026amp;theme=8d885d55ffdf567e0c64e798\u0026amp;signature=513bdaf0c5bc70455c81be2ee2a73c8c0c87268f1dc967313d87174197815808\">\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/fly-io/pksrSrIEk6ICJvMM/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Fly.io\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#7C3BED\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.fly.io/reference/autoscaling\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/reference/autoscaling.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.fly.io/#organization\",\"name\":\"Fly.io\",\"url\":\"https://docs.fly.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/fly-io/izaS1l2UMuz6sm1H/images/logo/light.svg?fit=max\u0026auto=format\u0026n=izaS1l2UMuz6sm1H\u0026q=85\u0026s=5f1256e06beb6fdd5ed68aad3dd32b39\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.fly.io#website\",\"name\":\"Fly.io\",\"url\":\"https://docs.fly.io\",\"publisher\":{\"@id\":\"https://docs.fly.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.fly.io/reference/autoscaling#webpage\",\"url\":\"https://docs.fly.io/reference/autoscaling\",\"name\":\"Autoscaling\",\"description\":\"Compare the two ways to autoscale Machines on Fly.io: Fly Proxy autostop/autostart for an existing pool, or a metrics-based autoscaler you deploy as an app.\",\"dateModified\":\"2026-10-20T17:53:51.704Z\",\"isPartOf\":{\"@id\":\"https://docs.fly.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.fly.io/reference/autoscaling#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.fly.io/reference/autoscaling#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Fly docs\",\"item\":\"https://docs.fly.io/getting-started/sign-up-sign-in\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Reference\",\"item\":\"https://docs.fly.io/reference/index\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Autoscaling\",\"item\":\"https://docs.fly.io/reference/autoscaling\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.fly.io/reference/autoscaling#article\",\"headline\":\"Autoscaling\",\"name\":\"Autoscaling\",\"description\":\"Compare the two ways to autoscale Machines on Fly.io: Fly Proxy autostop/autostart for an existing pool, or a metrics-based autoscaler you deploy as an app.\",\"url\":\"https://docs.fly.io/reference/autoscaling\",\"mainEntityOfPage\":{\"@id\":\"https://docs.fly.io/reference/autoscaling#webpage\"},\"dateModified\":\"2026-10-20T17:53:51.704Z\",\"publisher\":{\"@id\":\"https://docs.fly.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.fly.io#website\"}}]}\u003c/script>","siteName":"Fly.io","nav":{"global":null,"tabs":[{"tab":"Fly docs","groups":[{"group":"Fly docs","pages":[{"group":"Getting Started","root":{"title":"Getting started","href":"/getting-started"},"pages":[{"title":"Sign up and sign in to Fly.io","href":"/getting-started/sign-up-sign-in"},{"title":"Quickstart: Launch your app","href":"/getting-started/launch"},{"title":"Launch a demo app","href":"/getting-started/launch-demo"},{"group":"Deep Dive","root":{"title":"Deep dive demo","href":"/deep-dive/index"},"pages":[{"title":"Launch the demo","href":"/deep-dive/launch-deep-dive"},{"group":"What You Get","pages":[{"title":"Your Fly App","href":"/deep-dive/application"},{"title":"Deep Dive: PostgreSQL","sidebarTitle":"PostgreSQL","href":"/deep-dive/postgresql"},{"title":"Tigris","href":"/deep-dive/tigris"},{"title":"Upstash Redis","href":"/deep-dive/redis"}]},{"title":"Whisper","href":"/deep-dive/whisper"},{"title":"Recap","href":"/deep-dive/recap"},{"group":"Runtimes reference","pages":[{"title":"Django demo reference","sidebarTitle":"Django","href":"/deep-dive/django"},{"title":"Next.js demo reference","sidebarTitle":"Next.js","href":"/deep-dive/nextjs"},{"title":"Node.js demo reference","sidebarTitle":"Node.js","href":"/deep-dive/nodejs"},{"title":"Phoenix demo reference","sidebarTitle":"Phoenix","href":"/deep-dive/phoenix"},{"title":"Rails demo reference","sidebarTitle":"Rails","href":"/deep-dive/rails"}]}]},{"title":"Get started with your language or framework","href":"/getting-started/get-started-by-framework"},{"title":"Fly.io essentials","href":"/getting-started/essentials"},{"title":"Migrate from Heroku","href":"/getting-started/migrate-from-heroku"},{"title":"Troubleshoot your deployment","href":"/getting-started/troubleshooting"},{"title":"Guides and Examples","href":"/guides"}]},{"group":"Guides (Blueprints)","pages":[{"title":"Guides and Blueprints","href":"/blueprints/index"},{"group":"Architecture Patterns","pages":[{"title":"Deploy OpenClaw on Fly.io","href":"/blueprints/deploy-openclaw"},{"title":"Run Hermes Agent on Fly.io","href":"/blueprints/hermes-agent-on-fly-io"},{"title":"Warm pools of user Machines","href":"/blueprints/warm-pool-user-machines"},{"title":"Remote MCP Server Hosting: Deploy MCP Servers on Fly.io","href":"/blueprints/remote-mcp-servers"},{"title":"High availability: run multiple Machines","href":"/blueprints/resilient-apps-multiple-machines"},{"title":"N-tier architecture","href":"/blueprints/n-tier-architecture"},{"title":"Shared Nothing Architecture","href":"/blueprints/shared-nothing"},{"title":"Sticky sessions (session affinity)","href":"/blueprints/sticky-sessions"},{"title":"Multi-region databases with read replicas and fly-replay","href":"/blueprints/multi-region-fly-replay"},{"title":"Cell-based architecture","href":"/blueprints/cell-based"}]},{"group":"Deployment \u0026 Developer Workflow","pages":[{"title":"Working with Docker on Fly.io","href":"/blueprints/working-with-docker"},{"title":"Custom deploy workflows: staggered and selective deploys","href":"/blueprints/custom-deploy-workflows"},{"title":"Zero-downtime deployments","href":"/blueprints/seamless-deployments"},{"title":"Roll back a deploy","href":"/blueprints/rollback-guide"},{"title":"Git Branch Preview Environments on Github","href":"/blueprints/review-apps-guide"},{"title":"Separate staging and production environments","href":"/blueprints/staging-prod-isolation"},{"title":"Per-User Dev Environments with Fly Machines","href":"/blueprints/per-user-dev-environments"},{"title":"Use Docker base images for faster deploys","href":"/blueprints/using-base-images-for-faster-deployments"},{"title":"Managing Docker Images with Fly.io's Private Registry","href":"/blueprints/using-the-fly-docker-registry"}]},{"group":"Networking \u0026 Connectivity","pages":[{"title":"Run private apps with Flycast","href":"/blueprints/private-applications-flycast"},{"title":"Connect to your private network with WireGuard","href":"/blueprints/connect-private-network-wireguard/index"},{"title":"Connect AWS and other clouds with WireGuard","href":"/blueprints/bridge-deployments-wireguard"},{"title":"Route requests to per-user Fly Machines","href":"/blueprints/connecting-to-user-machines"},{"title":"Run an SSH server on a Fly Machine","href":"/blueprints/opensshd"}]},{"group":"Scaling, Performance \u0026 Observability","pages":[{"title":"Stream logs from user apps with NATS","href":"/blueprints/observability-for-user-apps"},{"title":"Autoscale Fly Machines with autostop or fly-autoscaler","href":"/blueprints/autoscale-machines"},{"title":"Autostart and autostop private apps with Flycast","href":"/blueprints/autostart-internal-apps"},{"title":"Setting Hard and Soft Concurrency Limits on Fly.io","href":"/blueprints/setting-concurrency-limits"},{"title":"Using Fly Volume forks for faster startup times","href":"/blueprints/volume-forking"},{"title":"Run HIPAA-compliant healthcare apps","href":"/blueprints/going-to-production-with-healthcare-apps"}]},{"group":"Background Jobs \u0026 Automation","pages":[{"title":"Long-running tasks and machine lifecycle","href":"/blueprints/long-running-tasks"},{"title":"Building Infrastructure Automation without Terraform","href":"/blueprints/infra-automation-without-terraform"},{"title":"Background job queues with Celery, BullMQ, and Fly Machines","href":"/blueprints/work-queues"},{"title":"Task scheduling guide with Cron Manager and friends","href":"/blueprints/task-scheduling"},{"title":"Crontab with Supercronic","href":"/blueprints/supercronic"},{"title":"Deno KV with LiteFS Cloud","href":"/blueprints/deno-kv-litefs"}]}]},{"group":"Model Context Protocol (MCP)","root":{"title":"Model Context Protocol","href":"/model-context-protocol/index"},"pages":[{"title":"Launch an MCP Server with fly mcp launch","sidebarTitle":"fly mcp launch","href":"/model-context-protocol/launch"},{"group":"Deploy with","root":{"title":"Deploy with","href":"/model-context-protocol/deploy-with"},"pages":[{"title":"Deploy an MCP Server with fly launch","sidebarTitle":"fly launch","href":"/model-context-protocol/deploy-with/fly-launch"},{"title":"fly machines run","href":"/model-context-protocol/deploy-with/flyctl-machines"},{"title":"Deploy an MCP Server with the Machines API","sidebarTitle":"Machines API","href":"/model-context-protocol/deploy-with/machines-api"}]},{"group":"Deploy on","root":{"title":"Deploy on","href":"/model-context-protocol/deploy-on"},"pages":[{"title":"A container","href":"/model-context-protocol/deploy-on/container"},{"title":"A Fly Machine","href":"/model-context-protocol/deploy-on/fly-machine"},{"title":"Your application","href":"/model-context-protocol/deploy-on/your-app"}]},{"group":"Transports","root":{"title":"MCP Transports","href":"/model-context-protocol/transports"},"pages":[{"title":"SSE","href":"/model-context-protocol/transports/sse"},{"title":"stdio","href":"/model-context-protocol/transports/stdio"},{"title":"Streaming HTTP","href":"/model-context-protocol/transports/streaming-http"}]},{"group":"Access control","root":{"title":"Access Control","href":"/model-context-protocol/access-control"},"pages":[{"title":"Wireguard tunnels and Flycast","href":"/model-context-protocol/access-control/flycast"},{"title":"HTTP Authorization","href":"/model-context-protocol/access-control/http-authorization"},{"title":"Reverse Proxy","href":"/model-context-protocol/access-control/reverse-proxy"}]},{"title":"flyctl mcp server","href":"/model-context-protocol/flyctl-server"},{"title":"Fly agent setup","sidebarTitle":"Agent setup","href":"/model-context-protocol/setup-agent"},{"title":"Fly agent skills","sidebarTitle":"Agent skills","href":"/model-context-protocol/agent-skills"},{"title":"Examples","href":"/model-context-protocol/examples"}]},{"group":"App Guides","pages":[{"title":"Chat: A 6PN Example with NATS","href":"/app-guides/6pndemochat"},{"title":"Appkata: Gogs - standalone Git Server","href":"/app-guides/git-gogs-server"},{"title":"Run an NGINX proxy on Fly","href":"/app-guides/global-nginx-proxy"},{"title":"Apollo GraphQL + Edge Caching","href":"/app-guides/graphql-edge-caching-apollo"},{"title":"GraphQL on Fly with Hasura","href":"/app-guides/graphql-on-fly-with-hasura"},{"title":"Deploy gRPC and gRPC-Web Services","href":"/app-guides/grpc-and-grpc-web-services"},{"title":"Kong API gateway","href":"/app-guides/kong-api-gateway"},{"title":"Deploy Livebook on Fly.io","href":"/app-guides/livebook"},{"title":"Appkata: MQTT - Event driven messaging","href":"/app-guides/mqtt"},{"title":"Use a MySQL Database","href":"/app-guides/mysql-on-fly"},{"title":"Global NATS Cluster","href":"/app-guides/nats-cluster"},{"title":"Appkata: Node-RED - Flow Programming","href":"/app-guides/node-red"},{"title":"OpenResty: NGINX + Lua","href":"/app-guides/openresty-nginx-plus-lua"},{"title":"Fly.io and PlanetScale","href":"/app-guides/planetscale"},{"title":"Postgres: A single server deployment for Fly","href":"/app-guides/postgres"},{"title":"Puppeteer JS Renderer","href":"/app-guides/puppeteer-js-renderer"},{"title":"Redis - standalone Redis Server","href":"/app-guides/redis"},{"title":"Appkata: Redistls - Redis Server with TLS","href":"/app-guides/redistls"},{"title":"Global Image Processing Service","href":"/app-guides/run-a-global-image-service"},{"title":"Run A Private DNS Over HTTPS Service","href":"/app-guides/run-a-private-dns-over-https-service"},{"title":"Smokescreen - Sanitize outbound web requests","href":"/app-guides/smokescreen"},{"title":"VS Code - Remote Server over SSH","href":"/app-guides/vscode-remote"}]},{"group":"Apps on Fly.io","pages":[{"group":"Apps on Fly.io","root":{"title":"Apps on Fly.io","href":"/apps/index"},"pages":[{"title":"Fly Apps overview","href":"/apps/overview"},{"title":"Get information about an app","href":"/apps/info"},{"title":"Restart apps or Machines","href":"/apps/restart"},{"title":"Delete an app","href":"/apps/delete"},{"title":"Move an app between organizations","href":"/apps/move-app-org"}]},{"group":"Fly Launch","root":{"title":"Fly Launch","href":"/launch/index"},"pages":[{"title":"Create an app with Fly Launch","href":"/launch/create"},{"title":"Deploy an app","href":"/launch/deploy"},{"title":"Scale Machine CPU and RAM","href":"/launch/scale-machine"},{"title":"Scale the Number of Machines","href":"/launch/scale-count"},{"title":"Autostop/autostart Machines","href":"/launch/autostop-autostart"},{"title":"Autoscale based on metrics","href":"/launch/autoscale-by-metric"},{"title":"Add volume storage to a Fly Launch app","href":"/launch/volume-storage"},{"title":"Run multiple process groups in an app","href":"/launch/processes"},{"title":"Continuous Deployment with Fly.io and GitHub Actions","href":"/launch/continuous-deployment-with-github-actions"},{"title":"Monorepo and multi-environment deployments","href":"/launch/monorepo"},{"title":"Troubleshoot apps when a host is unavailable","href":"/apps/trouble-host-unavailable"},{"title":"App configuration (fly.toml)","href":"/reference/configuration"}]},{"group":"Secrets","pages":[{"title":"Secrets and Fly Apps","href":"/apps/secrets"},{"title":"Build Secrets","href":"/apps/build-secrets"}]},{"group":"Production Apps","pages":[{"title":"Going to production checklist","href":"/apps/going-to-production"},{"title":"App Availability and Resiliency","href":"/apps/app-availability"},{"title":"Tips to fine-tune your app on Fly.io","href":"/apps/fine-tune-apps"},{"title":"App handover guide","href":"/apps/app-handover-guide"},{"title":"Guidelines for concurrency settings","href":"/apps/concurrency"}]}]},{"group":"Language \u0026 Framework Guides","root":{"title":"Language \u0026 Framework Guides","href":"/languages-and-frameworks/index"},"pages":[{"group":"Elixir","root":{"title":"Elixir on Fly.io","href":"/elixir/index"},"pages":[{"group":"Getting Started","root":{"title":"Deploy a Phoenix App","sidebarTitle":"Getting Started","href":"/elixir/getting-started/index"},"pages":[{"title":"Migrate an Elixir App from Heroku","sidebarTitle":"Migrate from Heroku","href":"/elixir/getting-started/migrate-from-heroku"},{"title":"Deploy an Existing Elixir App","sidebarTitle":"Existing Elixir Apps","href":"/elixir/getting-started/existing"}]},{"group":"The Basics","root":{"title":"Elixir: The Basics","sidebarTitle":"The Basics","href":"/elixir/the-basics"},"pages":[{"title":"IEx into Your Running App","href":"/elixir/the-basics/iex-into-running-app"},{"title":"Clustering Your Application","href":"/elixir/the-basics/clustering"},{"title":"Troubleshooting","href":"/elixir/the-basics/troubleshooting"}]},{"group":"Advanced guides","root":{"title":"Elixir: Advanced Guides","sidebarTitle":"Advanced guides","href":"/elixir/advanced-guides"},"pages":[{"title":"GitHub Actions for Elixir CI/CD","href":"/elixir/advanced-guides/github-actions-elixir-ci-cd"},{"title":"Connecting Observer to Your App in Production","href":"/elixir/advanced-guides/connect-observer-to-your-app"},{"title":"Connecting Livebook to Your App in Production","href":"/elixir/advanced-guides/connect-livebook-to-your-app"},{"title":"Explore Your Production App with Livebook","sidebarTitle":"Do Interesting Things with Livebook and Your Production App","href":"/elixir/advanced-guides/interesting-things-with-livebook"},{"title":"Easy Clustering from Home to Fly.io","href":"/elixir/advanced-guides/clustering-from-home-to-your-app-in-fly"},{"title":"Elixir: SQLite3","sidebarTitle":"SQLite3","href":"/elixir/advanced-guides/sqlite3"}]}]},{"group":"Rails","root":{"title":"Rails on Fly.io","href":"/rails/index"},"pages":[{"group":"Getting Started","root":{"title":"Deploy a Rails App","sidebarTitle":"Getting Started","href":"/rails/getting-started/index"},"pages":[{"title":"Deploy an Existing Rails App","sidebarTitle":"Existing Rails Apps","href":"/rails/getting-started/existing"},{"title":"Dockerfiles and fly.toml","href":"/rails/getting-started/dockerfiles"},{"title":"Experimental Fly Rails Gem","href":"/rails/getting-started/fly-rails"}]},{"group":"The Basics","root":{"title":"Rails: The Basics","sidebarTitle":"The Basics","href":"/rails/the-basics"},"pages":[{"title":"Environment Configuration","href":"/rails/the-basics/configuration"},{"title":"Deployments","href":"/rails/the-basics/deployments"},{"title":"Active Record","href":"/rails/the-basics/active-record"},{"title":"Active Storage","href":"/rails/the-basics/active-storage"},{"title":"Turbo Streams \u0026 Action Cable","href":"/rails/the-basics/turbo-streams-and-action-cable"},{"title":"Sidekiq Background Workers","href":"/rails/the-basics/sidekiq"},{"title":"Running Tasks \u0026 Consoles","href":"/rails/the-basics/run-tasks-and-consoles"}]},{"group":"Advanced guides","root":{"title":"Rails: Advanced Guides","sidebarTitle":"Advanced guides","href":"/rails/advanced-guides"},"pages":[{"title":"AnyCable","href":"/rails/advanced-guides/anycable"},{"title":"Rails: Multiple Fly Applications","sidebarTitle":"Multiple Fly Applications","href":"/rails/advanced-guides/multiple-applications"},{"title":"LiteFS","href":"/rails/advanced-guides/litefs"},{"title":"Machine API","href":"/rails/advanced-guides/machine"},{"title":"Multi-region Deployments","href":"/rails/advanced-guides/multi-region"},{"title":"Rails: SQLite3","sidebarTitle":"SQLite3","href":"/rails/advanced-guides/sqlite3"},{"title":"Phusion Passenger","href":"/rails/advanced-guides/phusion-passenger"}]},{"group":"Cookbooks","root":{"title":"Cookbooks","href":"/rails/cookbooks/index"},"pages":[{"title":"Minimal Rails application","href":"/rails/cookbooks/minimal"},{"title":"Rails with Databases","href":"/rails/cookbooks/databases"},{"title":"Rails with Node.js","href":"/rails/cookbooks/node"},{"title":"Rails API-only Applications","href":"/rails/cookbooks/api"},{"title":"Copy source","href":"/rails/cookbooks/sources"},{"title":"Optimizing your build","href":"/rails/cookbooks/build"},{"title":"Optimizing your deployment","href":"/rails/cookbooks/deploy"}]}]},{"group":"Laravel","root":{"title":"Laravel on Fly.io","href":"/laravel/index"},"pages":[{"group":"The Basics","root":{"title":"Laravel: The Basics","sidebarTitle":"The Basics","href":"/laravel/the-basics"},"pages":[{"title":"PHP and Node Versions","href":"/laravel/the-basics/php-node-version"},{"title":"Customizing Deployments","href":"/laravel/the-basics/customizing-deployments"},{"title":"Post Deployment","href":"/laravel/the-basics/post-deployment"},{"title":"Logging Stack Traces","href":"/laravel/the-basics/logging-stack-traces"},{"title":"Cron and Queues","href":"/laravel/the-basics/cron-and-queues"},{"title":"Persisting the Storage Folder","href":"/laravel/the-basics/laravel-volume-storage"},{"title":"Tigris for CDN File Storage","href":"/laravel/the-basics/laravel-tigris-file-storage"}]},{"group":"Database guides","root":{"title":"Database guides","href":"/laravel/database-guides"},"pages":[{"title":"Laravel and MySQL","href":"/laravel/database-guides/laravel-mysql"},{"title":"Laravel and PostgreSQL","href":"/laravel/database-guides/laravel-pgsql"},{"title":"Laravel and Redis","href":"/laravel/database-guides/laravel-redis"},{"title":"Laravel and SQlite","href":"/laravel/database-guides/laravel-sqlite"},{"title":"Laravel Database Migration","href":"/laravel/database-guides/laravel-db-migrations"}]},{"group":"Advanced guides","root":{"title":"Laravel: Advanced Guides","sidebarTitle":"Advanced guides","href":"/laravel/advanced-guides"},"pages":[{"title":"Laravel: Multiple Fly Applications","sidebarTitle":"Multiple Fly Applications","href":"/laravel/advanced-guides/multiple-applications"},{"title":"Laravel Multi-SQLite: LiteFS","href":"/laravel/advanced-guides/global-sqlite-litefs"},{"title":"Laravel GitHub Actions: CICD","href":"/laravel/advanced-guides/github-actions"},{"title":"Using Symfony","href":"/laravel/advanced-guides/using-symfony"},{"title":"Using Inertia SSR","href":"/laravel/advanced-guides/using-inertia-ssr"},{"title":"Customizing the Dockerfile","href":"/laravel/advanced-guides/customizing-dockerfile"}]}]},{"group":"Django","root":{"title":"Django on Fly.io","href":"/django/index"},"pages":[{"group":"Getting Started","root":{"title":"Deploy a Django App","sidebarTitle":"Getting Started","href":"/django/getting-started/index"},"pages":[{"title":"Deploy an Existing Django App","sidebarTitle":"Existing Django Apps","href":"/django/getting-started/existing"}]},{"group":"Advanced guides","root":{"title":"Django: Advanced Guides","sidebarTitle":"Advanced guides","href":"/django/advanced-guides"},"pages":[{"title":"Staging environments with GitHub actions","href":"/django/advanced-guides/staging-environments-with-github-actions"}]}]},{"group":"Python","root":{"title":"Python on Fly.io","href":"/python/index"},"pages":[{"group":"The Basics","root":{"title":"Python: The Basics","sidebarTitle":"The Basics","href":"/python/the-basics"},"pages":[{"title":"Setting up a Python Environment","href":"/python/the-basics/initial-setup"},{"title":"Multi-stage Builds","href":"/python/the-basics/multi-stage-builds"}]},{"group":"Python Framework Guides","root":{"title":"Python Framework Guides","href":"/python/frameworks"},"pages":[{"title":"Deploy a FastAPI App","href":"/python/frameworks/fastapi"},{"title":"Deploy a Flask App","href":"/python/frameworks/flask"},{"title":"Deploy a Streamlit App","href":"/python/frameworks/streamlit"}]},{"group":"Do More","root":{"title":"Do More","href":"/python/do-more"},"pages":[{"title":"Add Postgres","href":"/python/do-more/add-postgres"},{"title":"Add Object Storage","href":"/python/do-more/add-object-storage"},{"title":"Add Ollama","href":"/python/do-more/add-ollama"}]}]},{"group":"Javascript","root":{"title":"JavaScript on Fly.io","href":"/js/index"},"pages":[{"group":"The Basics","root":{"title":"JavaScript: The Basics","sidebarTitle":"The Basics","href":"/js/the-basics"},"pages":[{"title":"Dockerfiles","href":"/js/the-basics/dockerfiles"},{"title":"Dependencies","href":"/js/the-basics/dependencies"},{"title":"Databases","href":"/js/the-basics/database"},{"title":"JavaScript: Volumes","sidebarTitle":"Volumes","href":"/js/the-basics/volumes"},{"title":"Object Storage","href":"/js/the-basics/object-storage"},{"title":"Listening Ports","href":"/js/the-basics/listening-ports"},{"title":"Secrets","href":"/js/the-basics/secrets"},{"title":"Scaling","href":"/js/the-basics/scaling"}]},{"title":"Deploy a Shopify App","sidebarTitle":"Shopify","href":"/js/shopify"},{"group":"JS Framework Guides","root":{"title":"JS Framework Guides","href":"/js/frameworks"},"pages":[{"title":"Deploy an Astro App","href":"/js/frameworks/astro"},{"title":"Deploy a Deno App","href":"/js/frameworks/deno"},{"title":"Deploy a Meteor App","href":"/js/frameworks/meteor"},{"title":"Deploy a Next.js App","href":"/js/frameworks/nextjs"},{"title":"Deploy a Nuxt App","href":"/js/frameworks/nuxtjs"},{"title":"Deploy a RedwoodJS App","href":"/js/frameworks/redwood"},{"title":"Deploy a Remix App","href":"/js/frameworks/remix"},{"title":"Deploy a SvelteKit App","href":"/js/frameworks/svelte"}]},{"group":"Prisma","root":{"title":"Prisma","href":"/js/prisma/index"},"pages":[{"title":"Sqlite","href":"/js/prisma/sqlite"},{"title":"Prisma with PostgreSQL","sidebarTitle":"PostgreSQL","href":"/js/prisma/postgres"}]}]},{"group":"Rust","root":{"title":"Rust on Fly.io","href":"/rust/index"},"pages":[{"group":"The Basics","root":{"title":"Rust: The Basics","sidebarTitle":"The Basics","href":"/rust/the-basics"},"pages":[{"title":"Cargo Chef","href":"/rust/the-basics/cargo-chef"}]},{"group":"Rust Framework Guides","root":{"title":"Rust Framework Guides","href":"/rust/frameworks"},"pages":[{"title":"Deploy an Axum App","href":"/rust/frameworks/axum"},{"title":"Deploy an Actix Web App","href":"/rust/frameworks/actix-web"},{"title":"Deploy a Warp App","href":"/rust/frameworks/warp"},{"title":"Deploy a Rocket App","href":"/rust/frameworks/rocket"},{"title":"Deploy a Poem App","href":"/rust/frameworks/poem"},{"title":"Deploy a Dioxus Liveview App","href":"/rust/frameworks/dioxus-liveview"}]}]},{"title":"Deploy a Static Website","href":"/languages-and-frameworks/static"},{"title":"Deploy a .NET App","href":"/languages-and-frameworks/dotnet"},{"title":"Deploy a Go App","href":"/languages-and-frameworks/golang"},{"title":"Deploy with a Dockerfile","href":"/languages-and-frameworks/dockerfile"},{"title":"Deploy a Crystal App","href":"/languages-and-frameworks/crystal"},{"title":"Deploy WordPress","href":"/languages-and-frameworks/wordpress"},{"title":"Deploy a Ruby App","href":"/languages-and-frameworks/ruby"}]},{"group":"Fly Machines","root":{"title":"Fly Machines","href":"/machines/index"},"pages":[{"title":"An introduction to Fly Machines","href":"/machines/overview"},{"group":"Machines API","root":{"title":"Machines API","href":"/machines/api/index"},"pages":[{"title":"Working with the Machines API","href":"/machines/api/working-with-machines-api"},{"title":"Apps","href":"/machines/api/apps-resource"},{"title":"Certificates","href":"/machines/api/certificates-resource"},{"title":"Machines","href":"/machines/api/machines-resource"},{"title":"Tokens","href":"/machines/api/tokens-resource"},{"title":"Volumes","href":"/machines/api/volumes-resource"}]},{"group":"Machines and flyctl","pages":[{"title":"Run a new Machine","href":"/machines/flyctl/fly-machine-run"},{"title":"Update a Machine","href":"/machines/flyctl/fly-machine-update"}]},{"group":"Guides and Examples","root":{"title":"Machines Guides and Examples","sidebarTitle":"Guides and Examples","href":"/machines/guides-examples"},"pages":[{"title":"Run Machines with flyctl","href":"/machines/guides-examples/machines-app-using-flyctl"},{"title":"Managing Machines with the Machines API","tag":"NEW","href":"/machines/guides-examples/managing-machines-with-the-api"},{"title":"Machine Placement and Regional Capacity","href":"/machines/guides-examples/machine-placement"},{"title":"Machine restart policy","href":"/machines/guides-examples/machine-restart-policy"},{"title":"Machine Sizing","href":"/machines/guides-examples/machine-sizing"},{"title":"Multi-container Machines","href":"/machines/guides-examples/multi-container-machines"},{"title":"Network Policies","href":"/machines/guides-examples/network-policies"},{"title":"Run User Code on Fly Machines","href":"/machines/guides-examples/functions-with-machines"},{"title":"One App Per Customer - Why?","href":"/machines/guides-examples/one-app-per-user-why"}]},{"group":"Reference","pages":[{"title":"Machine states and lifecycle","href":"/machines/machine-states"},{"title":"The Machine Runtime Environment","href":"/machines/runtime-environment"},{"title":"CPU Performance","href":"/machines/cpu-performance"}]}]},{"group":"Managed Postgres","root":{"title":"Managed Postgres","href":"/postgres/index"},"pages":[{"group":"Getting Started","pages":[{"title":"Create and Connect to a Managed Postgres Cluster","href":"/postgres/create-and-connect"},{"title":"Connect Your Client","href":"/postgres/client-configuration"},{"title":"Cluster configuration options","href":"/postgres/cluster-configuration"}]},{"group":"Guides and Examples","pages":[{"title":"Phoenix with Managed Postgres","href":"/postgres/guides-examples/phoenix-guide"}]},{"group":"Management","pages":[{"title":"Monitoring and Metrics","href":"/postgres/metrics"},{"title":"Maintenance windows","href":"/postgres/maintenance-windows"},{"title":"Import data from another postgres cluster","href":"/postgres/import"},{"title":"Supported Postgres Extensions","href":"/postgres/extensions"}]}]},{"group":"Databases \u0026 Storage","root":{"title":"Databases and storage","href":"/database-storage-guides"},"pages":[{"title":"Fly Postgres (Unmanaged)","sidebarTitle":"Unmanaged Postgres","href":"/unmanaged-postgres/index"},{"title":"Tigris Global Object Storage","href":"/tigris/index"},{"title":"Upstash for RedisĀ®*","href":"/upstash/redis"},{"title":"Upstash Vector","href":"/upstash/vector"}]},{"group":"Fly Volumes","root":{"title":"Fly Volumes","href":"/volumes/index"},"pages":[{"title":"Fly Volumes overview","href":"/volumes/overview"},{"title":"Create and manage volumes","href":"/volumes/volume-manage"},{"title":"Manage volume snapshots","href":"/volumes/snapshots"},{"title":"Volume states","href":"/volumes/volume-states"}]},{"group":"Networking","root":{"title":"Networking","href":"/networking/index"},"pages":[{"title":"Connect to an App Service","href":"/networking/app-services"},{"title":"Public Network Services","href":"/networking/services"},{"title":"Private Networking","href":"/networking/private-networking"},{"title":"Custom private networks","href":"/networking/custom-private-networks"},{"title":"Flycast - Private Fly Proxy services","href":"/networking/flycast"},{"title":"Egress IP addresses","href":"/networking/egress-ips"},{"title":"Dynamic Request Routing with fly-replay","href":"/networking/dynamic-request-routing"},{"title":"Custom domains","href":"/networking/custom-domain"},{"title":"Understanding Cloudflare","href":"/networking/understanding-cloudflare"},{"title":"Request headers","href":"/networking/request-headers"},{"title":"WebSockets","href":"/networking/websockets"},{"title":"Running apps on UDP and TCP","href":"/networking/udp-and-tcp"},{"title":"TLS Support","href":"/networking/tls"}]},{"group":"Monitoring","root":{"title":"Monitoring on Fly.io","href":"/monitoring/index"},"pages":[{"title":"Logging overview","href":"/monitoring/logging-overview"},{"title":"Metrics on Fly.io","href":"/monitoring/metrics"},{"title":"Application Monitoring by Sentry","href":"/monitoring/sentry"},{"group":"Logging","pages":[{"title":"Live tail logs","href":"/monitoring/live-tail-logs"},{"title":"Logs API options for programmatic access","href":"/monitoring/logs-api-options"},{"title":"Search logs","href":"/monitoring/search-logs"},{"title":"Export logs","href":"/monitoring/exporting-logs"},{"title":"Error codes and troubleshooting","href":"/monitoring/error-codes"}]}]},{"group":"Security","root":{"title":"Security","href":"/security/index"},"pages":[{"title":"Organization Roles and Permissions","href":"/security/org-roles-permissions"},{"title":"Single sign-on for organizations","href":"/security/sso"},{"title":"Remove a member from your organization","href":"/security/remove-org-member"},{"title":"TLS termination by Fly Proxy","href":"/security/tls-termination"},{"title":"Application Security by Arcjet","href":"/security/arcjet"},{"title":"Access tokens","href":"/security/tokens"},{"title":"OpenID Connect","href":"/security/openid-connect"},{"title":"Shared responsibility model","href":"/security/shared-responsibility"},{"title":"Fly.io security practices and compliance","href":"/security/security-at-fly-io"}]},{"group":"Reference","root":{"title":"Fly.io reference","href":"/reference/index"},"pages":[{"group":"flyctl","pages":[{"group":"flyctl - The Fly.io CLI","root":{"title":"flyctl - The Fly.io CLI","href":"/flyctl/index"},"pages":[{"title":"Install flyctl","href":"/flyctl/install"},{"title":"Integrating flyctl","href":"/flyctl/integrating"}]},{"group":"Commands","pages":[{"title":"fly","href":"/flyctl/cmd/fly_help"},{"group":"fly agent","root":{"title":"fly agent","href":"/flyctl/cmd/fly_agent"},"pages":[{"title":"fly agent ping","href":"/flyctl/cmd/fly_agent_ping"},{"title":"fly agent restart","href":"/flyctl/cmd/fly_agent_restart"},{"title":"fly agent run","href":"/flyctl/cmd/fly_agent_run"},{"title":"fly agent start","href":"/flyctl/cmd/fly_agent_start"},{"title":"fly agent stop","href":"/flyctl/cmd/fly_agent_stop"}]},{"group":"fly apps","root":{"title":"fly apps","sidebarTitle":"Manage Apps (apps)","href":"/flyctl/cmd/fly_apps"},"pages":[{"title":"fly apps create","href":"/flyctl/cmd/fly_apps_create"},{"title":"fly apps destroy","href":"/flyctl/cmd/fly_apps_destroy"},{"title":"fly apps errors","href":"/flyctl/cmd/fly_apps_errors"},{"title":"fly apps list","href":"/flyctl/cmd/fly_apps_list"},{"title":"fly apps move","href":"/flyctl/cmd/fly_apps_move"},{"title":"fly apps open","href":"/flyctl/cmd/fly_apps_open"},{"title":"fly apps releases","href":"/flyctl/cmd/fly_apps_releases"},{"title":"fly apps restart","href":"/flyctl/cmd/fly_apps_restart"}]},{"group":"fly auth","root":{"title":"fly auth","sidebarTitle":"Login and Authentication (auth)","href":"/flyctl/cmd/fly_auth"},"pages":[{"title":"fly auth docker","href":"/flyctl/cmd/fly_auth_docker"},{"title":"fly auth login","href":"/flyctl/cmd/fly_auth_login"},{"title":"fly auth logout","href":"/flyctl/cmd/fly_auth_logout"},{"title":"fly auth signup","href":"/flyctl/cmd/fly_auth_signup"},{"title":"fly auth whoami","href":"/flyctl/cmd/fly_auth_whoami"}]},{"group":"fly certs","root":{"title":"fly certs","sidebarTitle":"Certificates for Apps (certs)","href":"/flyctl/cmd/fly_certs"},"pages":[{"title":"fly certs add","href":"/flyctl/cmd/fly_certs_add"},{"title":"fly certs check","href":"/flyctl/cmd/fly_certs_check"},{"title":"fly certs import","href":"/flyctl/cmd/fly_certs_import"},{"title":"fly certs list","href":"/flyctl/cmd/fly_certs_list"},{"title":"fly certs remove","href":"/flyctl/cmd/fly_certs_remove"},{"title":"fly certs setup","href":"/flyctl/cmd/fly_certs_setup"}]},{"group":"fly checks","root":{"title":"fly checks","sidebarTitle":"Manage health checks (checks)","href":"/flyctl/cmd/fly_checks"},"pages":[{"title":"fly checks list","href":"/flyctl/cmd/fly_checks_list"}]},{"group":"fly config","root":{"title":"fly config","sidebarTitle":"Get or check App config (config)","href":"/flyctl/cmd/fly_config"},"pages":[{"title":"fly config env","href":"/flyctl/cmd/fly_config_env"},{"title":"fly config save","href":"/flyctl/cmd/fly_config_save"},{"title":"fly config show","href":"/flyctl/cmd/fly_config_show"},{"title":"fly config validate","href":"/flyctl/cmd/fly_config_validate"}]},{"title":"fly console","sidebarTitle":"Run a console (console)","href":"/flyctl/cmd/fly_console"},{"group":"fly consul","root":{"title":"fly consul","sidebarTitle":"Manage Consul clusters (consul)","href":"/flyctl/cmd/fly_consul"},"pages":[{"title":"fly consul attach","href":"/flyctl/cmd/fly_consul_attach"},{"title":"fly consul detach","href":"/flyctl/cmd/fly_consul_detach"}]},{"group":"fly dashboard","root":{"title":"fly dashboard","sidebarTitle":"Open web dashboard (dashboard)","href":"/flyctl/cmd/fly_dashboard"},"pages":[{"title":"fly dashboard metrics","href":"/flyctl/cmd/fly_dashboard_metrics"}]},{"title":"fly deploy","sidebarTitle":"Deploy an App (deploy)","href":"/flyctl/cmd/fly_deploy"},{"title":"fly dig","href":"/flyctl/cmd/fly_dig"},{"title":"fly docs","sidebarTitle":"View Fly.io docs (docs)","href":"/flyctl/cmd/fly_docs"},{"group":"fly doctor","root":{"title":"fly doctor","href":"/flyctl/cmd/fly_doctor"},"pages":[{"title":"fly doctor diag","href":"/flyctl/cmd/fly_doctor_diag"}]},{"group":"fly extensions","root":{"title":"fly extensions","href":"/flyctl/cmd/fly_extensions"},"pages":[{"group":"fly extensions arcjet","root":{"title":"fly extensions arcjet","href":"/flyctl/cmd/fly_extensions_arcjet"},"pages":[{"title":"fly extensions arcjet create","href":"/flyctl/cmd/fly_extensions_arcjet_create"},{"title":"fly extensions arcjet dashboard","href":"/flyctl/cmd/fly_extensions_arcjet_dashboard"},{"title":"fly extensions arcjet destroy","href":"/flyctl/cmd/fly_extensions_arcjet_destroy"},{"title":"fly extensions arcjet list","href":"/flyctl/cmd/fly_extensions_arcjet_list"},{"title":"fly extensions arcjet status","href":"/flyctl/cmd/fly_extensions_arcjet_status"}]},{"group":"fly extensions kubernetes","root":{"title":"fly extensions kubernetes","href":"/flyctl/cmd/fly_extensions_kubernetes"},"pages":[{"title":"fly extensions kubernetes create","href":"/flyctl/cmd/fly_extensions_kubernetes_create"},{"title":"fly extensions kubernetes destroy","href":"/flyctl/cmd/fly_extensions_kubernetes_destroy"},{"title":"fly extensions kubernetes list","href":"/flyctl/cmd/fly_extensions_kubernetes_list"},{"title":"fly extensions kubernetes save-kubeconfig","href":"/flyctl/cmd/fly_extensions_kubernetes_save-kubeconfig"}]},{"group":"fly extensions sentry","root":{"title":"fly extensions sentry","href":"/flyctl/cmd/fly_extensions_sentry"},"pages":[{"title":"fly extensions sentry create","href":"/flyctl/cmd/fly_extensions_sentry_create"},{"title":"fly extensions sentry dashboard","href":"/flyctl/cmd/fly_extensions_sentry_dashboard"},{"title":"fly extensions sentry destroy","href":"/flyctl/cmd/fly_extensions_sentry_destroy"},{"title":"fly extensions sentry list","href":"/flyctl/cmd/fly_extensions_sentry_list"}]},{"group":"fly extensions storage","root":{"title":"fly extensions storage","href":"/flyctl/cmd/fly_extensions_storage"},"pages":[{"title":"fly extensions storage create","href":"/flyctl/cmd/fly_extensions_storage_create"},{"title":"fly extensions storage dashboard","href":"/flyctl/cmd/fly_extensions_storage_dashboard"},{"title":"fly extensions storage destroy","href":"/flyctl/cmd/fly_extensions_storage_destroy"},{"title":"fly extensions storage list","href":"/flyctl/cmd/fly_extensions_storage_list"},{"title":"fly extensions storage status","href":"/flyctl/cmd/fly_extensions_storage_status"},{"title":"fly extensions storage update","href":"/flyctl/cmd/fly_extensions_storage_update"}]},{"group":"fly extensions vector","root":{"title":"fly extensions vector","href":"/flyctl/cmd/fly_extensions_vector"},"pages":[{"title":"fly extensions vector create","href":"/flyctl/cmd/fly_extensions_vector_create"},{"title":"fly extensions vector dashboard","href":"/flyctl/cmd/fly_extensions_vector_dashboard"},{"title":"fly extensions vector destroy","href":"/flyctl/cmd/fly_extensions_vector_destroy"},{"title":"fly extensions vector list","href":"/flyctl/cmd/fly_extensions_vector_list"},{"title":"fly extensions vector status","href":"/flyctl/cmd/fly_extensions_vector_status"}]},{"group":"fly extensions wafris","root":{"title":"fly extensions wafris","href":"/flyctl/cmd/fly_extensions_wafris"},"pages":[{"title":"fly extensions wafris create","href":"/flyctl/cmd/fly_extensions_wafris_create"},{"title":"fly extensions wafris dashboard","href":"/flyctl/cmd/fly_extensions_wafris_dashboard"},{"title":"fly extensions wafris destroy","href":"/flyctl/cmd/fly_extensions_wafris_destroy"}]}]},{"title":"fly feedback","href":"/flyctl/cmd/fly_feedback"},{"group":"fly image","root":{"title":"fly image","sidebarTitle":"View or update App image (image)","href":"/flyctl/cmd/fly_image"},"pages":[{"title":"fly image show","href":"/flyctl/cmd/fly_image_show"},{"title":"fly image update","href":"/flyctl/cmd/fly_image_update"}]},{"group":"fly incidents","root":{"title":"fly incidents","href":"/flyctl/cmd/fly_incidents"},"pages":[{"group":"fly incidents hosts","root":{"title":"fly incidents hosts","href":"/flyctl/cmd/fly_incidents_hosts"},"pages":[{"title":"fly incidents hosts list","href":"/flyctl/cmd/fly_incidents_hosts_list"}]},{"title":"fly incidents list","href":"/flyctl/cmd/fly_incidents_list"}]},{"group":"fly ips","root":{"title":"fly ips","sidebarTitle":"Manage IP addresses (ips)","href":"/flyctl/cmd/fly_ips"},"pages":[{"title":"fly ips allocate","href":"/flyctl/cmd/fly_ips_allocate"},{"title":"fly ips allocate-egress","href":"/flyctl/cmd/fly_ips_allocate-egress"},{"title":"fly ips allocate-v4","href":"/flyctl/cmd/fly_ips_allocate-v4"},{"title":"fly ips allocate-v6","href":"/flyctl/cmd/fly_ips_allocate-v6"},{"title":"fly ips list","href":"/flyctl/cmd/fly_ips_list"},{"title":"fly ips private","href":"/flyctl/cmd/fly_ips_private"},{"title":"fly ips release","href":"/flyctl/cmd/fly_ips_release"},{"title":"fly ips release-egress","href":"/flyctl/cmd/fly_ips_release-egress"}]},{"group":"fly jobs","root":{"title":"fly jobs","href":"/flyctl/cmd/fly_jobs"},"pages":[{"title":"fly jobs open","href":"/flyctl/cmd/fly_jobs_open"}]},{"title":"fly launch","sidebarTitle":"Launch an App (launch)","href":"/flyctl/cmd/fly_launch"},{"title":"fly logs","sidebarTitle":"View App logs (logs)","href":"/flyctl/cmd/fly_logs"},{"group":"fly machine","root":{"title":"fly machine","sidebarTitle":"Manage Machines (machine)","href":"/flyctl/cmd/fly_machine"},"pages":[{"title":"fly machine api-proxy","href":"/flyctl/cmd/fly_machine_api-proxy"},{"title":"fly machine clone","href":"/flyctl/cmd/fly_machine_clone"},{"title":"fly machine cordon","href":"/flyctl/cmd/fly_machine_cordon"},{"title":"fly machine create","href":"/flyctl/cmd/fly_machine_create"},{"title":"fly machine destroy","href":"/flyctl/cmd/fly_machine_destroy"},{"title":"fly machine exec","href":"/flyctl/cmd/fly_machine_exec"},{"title":"fly machine kill","href":"/flyctl/cmd/fly_machine_kill"},{"group":"fly machine leases","root":{"title":"fly machine leases","href":"/flyctl/cmd/fly_machine_leases"},"pages":[{"title":"fly machine leases clear","href":"/flyctl/cmd/fly_machine_leases_clear"},{"title":"fly machine leases view","href":"/flyctl/cmd/fly_machine_leases_view"}]},{"title":"fly machine list","href":"/flyctl/cmd/fly_machine_list"},{"title":"fly machine place","href":"/flyctl/cmd/fly_machine_place"},{"title":"fly machine restart","href":"/flyctl/cmd/fly_machine_restart"},{"title":"fly machine run","href":"/flyctl/cmd/fly_machine_run"},{"title":"fly machine start","href":"/flyctl/cmd/fly_machine_start"},{"title":"fly machine status","href":"/flyctl/cmd/fly_machine_status"},{"title":"fly machine stop","href":"/flyctl/cmd/fly_machine_stop"},{"title":"fly machine suspend","href":"/flyctl/cmd/fly_machine_suspend"},{"title":"fly machine uncordon","href":"/flyctl/cmd/fly_machine_uncordon"},{"title":"fly machine update","href":"/flyctl/cmd/fly_machine_update"},{"title":"fly machine wait","href":"/flyctl/cmd/fly_machine_wait"}]},{"group":"fly mcp","root":{"title":"fly mcp","href":"/flyctl/cmd/fly_mcp"},"pages":[{"title":"fly mcp add","href":"/flyctl/cmd/fly_mcp_add"},{"title":"fly mcp destroy","href":"/flyctl/cmd/fly_mcp_destroy"},{"title":"fly mcp inspect","href":"/flyctl/cmd/fly_mcp_inspect"},{"title":"fly mcp launch","href":"/flyctl/cmd/fly_mcp_launch"},{"title":"fly mcp list","href":"/flyctl/cmd/fly_mcp_list"},{"title":"fly mcp logs","href":"/flyctl/cmd/fly_mcp_logs"},{"title":"fly mcp proxy","href":"/flyctl/cmd/fly_mcp_proxy"},{"title":"fly mcp remove","href":"/flyctl/cmd/fly_mcp_remove"},{"title":"fly mcp server","href":"/flyctl/cmd/fly_mcp_server"},{"title":"fly mcp wrap","href":"/flyctl/cmd/fly_mcp_wrap"}]},{"group":"fly mpg","root":{"title":"fly mpg","sidebarTitle":"Managed Postgres clusters (mpg)","href":"/flyctl/cmd/fly_mpg"},"pages":[{"title":"fly mpg attach","href":"/flyctl/cmd/fly_mpg_attach"},{"group":"fly mpg backup","root":{"title":"fly mpg backup","href":"/flyctl/cmd/fly_mpg_backup"},"pages":[{"title":"fly mpg backup create","href":"/flyctl/cmd/fly_mpg_backup_create"},{"title":"fly mpg backup list","href":"/flyctl/cmd/fly_mpg_backup_list"}]},{"title":"fly mpg connect","href":"/flyctl/cmd/fly_mpg_connect"},{"title":"fly mpg create","href":"/flyctl/cmd/fly_mpg_create"},{"group":"fly mpg databases","root":{"title":"fly mpg databases","href":"/flyctl/cmd/fly_mpg_databases"},"pages":[{"title":"fly mpg databases create","href":"/flyctl/cmd/fly_mpg_databases_create"},{"group":"fly mpg databases extensions","root":{"title":"fly mpg databases extensions","href":"/flyctl/cmd/fly_mpg_databases_extensions"},"pages":[{"title":"fly mpg databases extensions disable","href":"/flyctl/cmd/fly_mpg_databases_extensions_disable"},{"title":"fly mpg databases extensions enable","href":"/flyctl/cmd/fly_mpg_databases_extensions_enable"},{"title":"fly mpg databases extensions list","href":"/flyctl/cmd/fly_mpg_databases_extensions_list"}]},{"title":"fly mpg databases list","href":"/flyctl/cmd/fly_mpg_databases_list"}]},{"title":"fly mpg destroy","href":"/flyctl/cmd/fly_mpg_destroy"},{"title":"fly mpg detach","href":"/flyctl/cmd/fly_mpg_detach"},{"title":"fly mpg fork","href":"/flyctl/cmd/fly_mpg_fork"},{"title":"fly mpg list","href":"/flyctl/cmd/fly_mpg_list"},{"title":"fly mpg proxy","href":"/flyctl/cmd/fly_mpg_proxy"},{"title":"fly mpg restore","href":"/flyctl/cmd/fly_mpg_restore"},{"title":"fly mpg status","href":"/flyctl/cmd/fly_mpg_status"},{"group":"fly mpg users","root":{"title":"fly mpg users","href":"/flyctl/cmd/fly_mpg_users"},"pages":[{"title":"fly mpg users create","href":"/flyctl/cmd/fly_mpg_users_create"},{"title":"fly mpg users delete","href":"/flyctl/cmd/fly_mpg_users_delete"},{"title":"fly mpg users list","href":"/flyctl/cmd/fly_mpg_users_list"},{"title":"fly mpg users rotate-password","href":"/flyctl/cmd/fly_mpg_users_rotate-password"},{"title":"fly mpg users set-role","href":"/flyctl/cmd/fly_mpg_users_set-role"}]}]},{"group":"fly orgs","root":{"title":"fly orgs","sidebarTitle":"Manage Organizations (orgs)","href":"/flyctl/cmd/fly_orgs"},"pages":[{"title":"fly orgs create","href":"/flyctl/cmd/fly_orgs_create"},{"group":"fly orgs cross-network-replays","root":{"title":"fly orgs cross-network-replays","href":"/flyctl/cmd/fly_orgs_cross-network-replays"},"pages":[{"title":"fly orgs cross-network-replays disable","href":"/flyctl/cmd/fly_orgs_cross-network-replays_disable"},{"title":"fly orgs cross-network-replays enable","href":"/flyctl/cmd/fly_orgs_cross-network-replays_enable"},{"title":"fly orgs cross-network-replays status","href":"/flyctl/cmd/fly_orgs_cross-network-replays_status"}]},{"title":"fly orgs delete","href":"/flyctl/cmd/fly_orgs_delete"},{"title":"fly orgs invite","href":"/flyctl/cmd/fly_orgs_invite"},{"title":"fly orgs list","href":"/flyctl/cmd/fly_orgs_list"},{"title":"fly orgs remove","href":"/flyctl/cmd/fly_orgs_remove"},{"group":"fly orgs replay-sources","root":{"title":"fly orgs replay-sources","href":"/flyctl/cmd/fly_orgs_replay-sources"},"pages":[{"title":"fly orgs replay-sources add","href":"/flyctl/cmd/fly_orgs_replay-sources_add"},{"title":"fly orgs replay-sources list","href":"/flyctl/cmd/fly_orgs_replay-sources_list"},{"title":"fly orgs replay-sources remove","href":"/flyctl/cmd/fly_orgs_replay-sources_remove"}]},{"title":"fly orgs show","href":"/flyctl/cmd/fly_orgs_show"}]},{"title":"fly ping","sidebarTitle":"Ping your App (ping)","href":"/flyctl/cmd/fly_ping"},{"group":"fly platform","root":{"title":"fly platform","sidebarTitle":"Platform information (platform)","href":"/flyctl/cmd/fly_platform"},"pages":[{"title":"fly platform regions","href":"/flyctl/cmd/fly_platform_regions"},{"title":"fly platform status","href":"/flyctl/cmd/fly_platform_status"},{"title":"fly platform vm-sizes","href":"/flyctl/cmd/fly_platform_vm-sizes"}]},{"group":"fly postgres","root":{"title":"fly postgres","sidebarTitle":"Legacy Postgres clusters (postgres)","href":"/flyctl/cmd/fly_postgres"},"pages":[{"title":"fly postgres attach","href":"/flyctl/cmd/fly_postgres_attach"},{"group":"fly postgres backup","root":{"title":"fly postgres backup","href":"/flyctl/cmd/fly_postgres_backup"},"pages":[{"group":"fly postgres backup config","root":{"title":"fly postgres backup config","href":"/flyctl/cmd/fly_postgres_backup_config"},"pages":[{"title":"fly postgres backup config show","href":"/flyctl/cmd/fly_postgres_backup_config_show"},{"title":"fly postgres backup config update","href":"/flyctl/cmd/fly_postgres_backup_config_update"}]},{"title":"fly postgres backup create","href":"/flyctl/cmd/fly_postgres_backup_create"},{"title":"fly postgres backup enable","href":"/flyctl/cmd/fly_postgres_backup_enable"},{"title":"fly postgres backup list","href":"/flyctl/cmd/fly_postgres_backup_list"},{"title":"fly postgres backup restore","href":"/flyctl/cmd/fly_postgres_backup_restore"}]},{"group":"fly postgres config","root":{"title":"fly postgres config","href":"/flyctl/cmd/fly_postgres_config"},"pages":[{"title":"fly postgres config show","href":"/flyctl/cmd/fly_postgres_config_show"},{"title":"fly postgres config update","href":"/flyctl/cmd/fly_postgres_config_update"}]},{"title":"fly postgres connect","href":"/flyctl/cmd/fly_postgres_connect"},{"title":"fly postgres create","href":"/flyctl/cmd/fly_postgres_create"},{"group":"fly postgres db","root":{"title":"fly postgres db","href":"/flyctl/cmd/fly_postgres_db"},"pages":[{"title":"fly postgres db list","href":"/flyctl/cmd/fly_postgres_db_list"}]},{"title":"fly postgres detach","href":"/flyctl/cmd/fly_postgres_detach"},{"group":"fly postgres events","root":{"title":"fly postgres events","href":"/flyctl/cmd/fly_postgres_events"},"pages":[{"title":"fly postgres events list","href":"/flyctl/cmd/fly_postgres_events_list"}]},{"title":"fly postgres failover","href":"/flyctl/cmd/fly_postgres_failover"},{"title":"fly postgres import","href":"/flyctl/cmd/fly_postgres_import"},{"title":"fly postgres list","href":"/flyctl/cmd/fly_postgres_list"},{"title":"fly postgres renew-certs","href":"/flyctl/cmd/fly_postgres_renew-certs"},{"title":"fly postgres restart","href":"/flyctl/cmd/fly_postgres_restart"},{"group":"fly postgres users","root":{"title":"fly postgres users","href":"/flyctl/cmd/fly_postgres_users"},"pages":[{"title":"fly postgres users list","href":"/flyctl/cmd/fly_postgres_users_list"}]}]},{"title":"fly proxy","sidebarTitle":"Proxy connection to App (proxy)","href":"/flyctl/cmd/fly_proxy"},{"group":"fly redis","root":{"title":"fly redis","sidebarTitle":"Manage Redis instances (redis)","href":"/flyctl/cmd/fly_redis"},"pages":[{"title":"fly redis connect","href":"/flyctl/cmd/fly_redis_connect"},{"title":"fly redis create","href":"/flyctl/cmd/fly_redis_create"},{"title":"fly redis dashboard","href":"/flyctl/cmd/fly_redis_dashboard"},{"title":"fly redis destroy","href":"/flyctl/cmd/fly_redis_destroy"},{"title":"fly redis list","href":"/flyctl/cmd/fly_redis_list"},{"title":"fly redis plans","href":"/flyctl/cmd/fly_redis_plans"},{"title":"fly redis proxy","href":"/flyctl/cmd/fly_redis_proxy"},{"title":"fly redis reset","href":"/flyctl/cmd/fly_redis_reset"},{"title":"fly redis status","href":"/flyctl/cmd/fly_redis_status"},{"title":"fly redis update","href":"/flyctl/cmd/fly_redis_update"}]},{"title":"fly releases","sidebarTitle":"Manage App releases (releases)","href":"/flyctl/cmd/fly_releases"},{"group":"fly scale","root":{"title":"fly scale","sidebarTitle":"Scaling Apps (scale)","href":"/flyctl/cmd/fly_scale"},"pages":[{"title":"fly scale count","href":"/flyctl/cmd/fly_scale_count"},{"title":"fly scale memory","href":"/flyctl/cmd/fly_scale_memory"},{"title":"fly scale show","href":"/flyctl/cmd/fly_scale_show"},{"title":"fly scale vm","href":"/flyctl/cmd/fly_scale_vm"}]},{"group":"fly secrets","root":{"title":"fly secrets","sidebarTitle":"Manage App secrets (secrets)","href":"/flyctl/cmd/fly_secrets"},"pages":[{"title":"fly secrets deploy","href":"/flyctl/cmd/fly_secrets_deploy"},{"title":"fly secrets import","href":"/flyctl/cmd/fly_secrets_import"},{"title":"fly secrets list","href":"/flyctl/cmd/fly_secrets_list"},{"title":"fly secrets set","href":"/flyctl/cmd/fly_secrets_set"},{"title":"fly secrets sync","href":"/flyctl/cmd/fly_secrets_sync"},{"title":"fly secrets unset","href":"/flyctl/cmd/fly_secrets_unset"}]},{"group":"fly services","root":{"title":"fly services","sidebarTitle":"View services configured on an App (services)","href":"/flyctl/cmd/fly_services"},"pages":[{"title":"fly services list","href":"/flyctl/cmd/fly_services_list"}]},{"group":"fly settings","root":{"title":"fly settings","sidebarTitle":"Manage settings (settings)","href":"/flyctl/cmd/fly_settings"},"pages":[{"group":"fly settings analytics","root":{"title":"fly settings analytics","href":"/flyctl/cmd/fly_settings_analytics"},"pages":[{"title":"fly settings analytics disable","href":"/flyctl/cmd/fly_settings_analytics_disable"},{"title":"fly settings analytics enable","href":"/flyctl/cmd/fly_settings_analytics_enable"}]},{"group":"fly settings autoupdate","root":{"title":"fly settings autoupdate","href":"/flyctl/cmd/fly_settings_autoupdate"},"pages":[{"title":"fly settings autoupdate disable","href":"/flyctl/cmd/fly_settings_autoupdate_disable"},{"title":"fly settings autoupdate enable","href":"/flyctl/cmd/fly_settings_autoupdate_enable"}]},{"group":"fly settings synthetics","root":{"title":"fly settings synthetics","href":"/flyctl/cmd/fly_settings_synthetics"},"pages":[{"title":"fly settings synthetics disable","href":"/flyctl/cmd/fly_settings_synthetics_disable"},{"title":"fly settings synthetics enable","href":"/flyctl/cmd/fly_settings_synthetics_enable"}]}]},{"group":"fly setup","root":{"title":"fly setup","href":"/flyctl/cmd/fly_setup"},"pages":[{"title":"fly setup agent","href":"/flyctl/cmd/fly_setup_agent"}]},{"group":"fly sftp","root":{"title":"fly sftp","sidebarTitle":"Move files to or from a VM (sftp)","href":"/flyctl/cmd/fly_sftp"},"pages":[{"title":"fly sftp find","href":"/flyctl/cmd/fly_sftp_find"},{"title":"fly sftp get","href":"/flyctl/cmd/fly_sftp_get"},{"title":"fly sftp put","href":"/flyctl/cmd/fly_sftp_put"},{"title":"fly sftp shell","href":"/flyctl/cmd/fly_sftp_shell"}]},{"group":"fly skills","root":{"title":"fly skills","href":"/flyctl/cmd/fly_skills"},"pages":[{"title":"fly skills install","href":"/flyctl/cmd/fly_skills_install"},{"title":"fly skills remove","href":"/flyctl/cmd/fly_skills_remove"},{"title":"fly skills status","href":"/flyctl/cmd/fly_skills_status"},{"title":"fly skills update","href":"/flyctl/cmd/fly_skills_update"}]},{"group":"fly ssh","root":{"title":"fly ssh","sidebarTitle":"Manage SSH (ssh)","href":"/flyctl/cmd/fly_ssh"},"pages":[{"title":"fly ssh console","href":"/flyctl/cmd/fly_ssh_console"},{"title":"fly ssh issue","href":"/flyctl/cmd/fly_ssh_issue"},{"title":"fly ssh log","href":"/flyctl/cmd/fly_ssh_log"},{"group":"fly ssh sftp","root":{"title":"fly ssh sftp","href":"/flyctl/cmd/fly_ssh_sftp"},"pages":[{"title":"fly ssh sftp find","href":"/flyctl/cmd/fly_ssh_sftp_find"},{"title":"fly ssh sftp get","href":"/flyctl/cmd/fly_ssh_sftp_get"},{"title":"fly ssh sftp put","href":"/flyctl/cmd/fly_ssh_sftp_put"},{"title":"fly ssh sftp shell","href":"/flyctl/cmd/fly_ssh_sftp_shell"}]}]},{"title":"fly status","sidebarTitle":"View App status (status)","href":"/flyctl/cmd/fly_status"},{"group":"fly storage","root":{"title":"fly storage","sidebarTitle":"Manage Tigris storage (storage)","href":"/flyctl/cmd/fly_storage"},"pages":[{"title":"fly storage create","href":"/flyctl/cmd/fly_storage_create"},{"title":"fly storage dashboard","href":"/flyctl/cmd/fly_storage_dashboard"},{"title":"fly storage destroy","href":"/flyctl/cmd/fly_storage_destroy"},{"title":"fly storage list","href":"/flyctl/cmd/fly_storage_list"},{"title":"fly storage status","href":"/flyctl/cmd/fly_storage_status"},{"title":"fly storage update","href":"/flyctl/cmd/fly_storage_update"}]},{"group":"fly synthetics","root":{"title":"fly synthetics","href":"/flyctl/cmd/fly_synthetics"},"pages":[{"title":"fly synthetics agent","href":"/flyctl/cmd/fly_synthetics_agent"}]},{"group":"fly tokens","root":{"title":"fly tokens","sidebarTitle":"Create a token (tokens)","href":"/flyctl/cmd/fly_tokens"},"pages":[{"group":"fly tokens 3p","root":{"title":"fly tokens 3p","href":"/flyctl/cmd/fly_tokens_3p"},"pages":[{"title":"fly tokens 3p add","href":"/flyctl/cmd/fly_tokens_3p_add"},{"title":"fly tokens 3p add-discharge","href":"/flyctl/cmd/fly_tokens_3p_add-discharge"},{"title":"fly tokens 3p discharge","href":"/flyctl/cmd/fly_tokens_3p_discharge"},{"title":"fly tokens 3p ticket","href":"/flyctl/cmd/fly_tokens_3p_ticket"}]},{"title":"fly tokens attenuate","href":"/flyctl/cmd/fly_tokens_attenuate"},{"group":"fly tokens create","root":{"title":"fly tokens create","href":"/flyctl/cmd/fly_tokens_create"},"pages":[{"title":"fly tokens create deploy","href":"/flyctl/cmd/fly_tokens_create_deploy"},{"title":"fly tokens create machine-exec","href":"/flyctl/cmd/fly_tokens_create_machine-exec"},{"title":"fly tokens create org","href":"/flyctl/cmd/fly_tokens_create_org"},{"title":"fly tokens create readonly","href":"/flyctl/cmd/fly_tokens_create_readonly"},{"title":"fly tokens create ssh","href":"/flyctl/cmd/fly_tokens_create_ssh"},{"title":"fly tokens create wireguard","href":"/flyctl/cmd/fly_tokens_create_wireguard"}]},{"title":"fly tokens debug","href":"/flyctl/cmd/fly_tokens_debug"},{"title":"fly tokens list","href":"/flyctl/cmd/fly_tokens_list"},{"group":"fly tokens revoke","root":{"title":"fly tokens revoke","href":"/flyctl/cmd/fly_tokens_revoke"},"pages":[{"title":"fly tokens revoke supplied","href":"/flyctl/cmd/fly_tokens_revoke_supplied"}]}]},{"group":"fly version","root":{"title":"fly version","sidebarTitle":"Check flyctl version (version)","href":"/flyctl/cmd/fly_version"},"pages":[{"title":"fly version upgrade","href":"/flyctl/cmd/fly_version_upgrade"}]},{"group":"fly volumes","root":{"title":"fly volumes","sidebarTitle":"Manage Disks (volumes)","href":"/flyctl/cmd/fly_volumes"},"pages":[{"title":"fly volumes create","href":"/flyctl/cmd/fly_volumes_create"},{"title":"fly volumes destroy","href":"/flyctl/cmd/fly_volumes_destroy"},{"title":"fly volumes extend","href":"/flyctl/cmd/fly_volumes_extend"},{"title":"fly volumes fork","href":"/flyctl/cmd/fly_volumes_fork"},{"title":"fly volumes list","href":"/flyctl/cmd/fly_volumes_list"},{"title":"fly volumes show","href":"/flyctl/cmd/fly_volumes_show"},{"group":"fly volumes snapshots","root":{"title":"fly volumes snapshots","href":"/flyctl/cmd/fly_volumes_snapshots"},"pages":[{"title":"fly volumes snapshots create","href":"/flyctl/cmd/fly_volumes_snapshots_create"},{"title":"fly volumes snapshots list","href":"/flyctl/cmd/fly_volumes_snapshots_list"}]},{"title":"fly volumes update","href":"/flyctl/cmd/fly_volumes_update"}]},{"group":"fly wireguard","root":{"title":"fly wireguard","sidebarTitle":"WireGuard VPN (wireguard)","href":"/flyctl/cmd/fly_wireguard"},"pages":[{"title":"fly wireguard create","href":"/flyctl/cmd/fly_wireguard_create"},{"title":"fly wireguard list","href":"/flyctl/cmd/fly_wireguard_list"},{"title":"fly wireguard remove","href":"/flyctl/cmd/fly_wireguard_remove"},{"title":"fly wireguard reset","href":"/flyctl/cmd/fly_wireguard_reset"},{"title":"fly wireguard token-mode","href":"/flyctl/cmd/fly_wireguard_token-mode"},{"title":"fly wireguard websockets","href":"/flyctl/cmd/fly_wireguard_websockets"}]}]}]},{"title":"App configuration (fly.toml)","href":"/reference/configuration"},{"title":"The Fly.io Architecture","description":"See how Fly.io runs your code in Firecracker microVMs on dedicated servers and routes traffic with BGP Anycast, fly-proxy, and WireGuard backhaul.","href":"/reference/architecture"},{"title":"Autoscaling","href":"/reference/autoscaling"},{"title":"Migrating from AWS to Fly.io Overview","description":"Moving from AWS to Fly.io: how EC2, EBS, S3, VPCs, RDS, and CloudWatch map to Fly Machines, Volumes, Tigris, 6PN, Managed Postgres, and Grafana.","href":"/reference/aws-to-fly-guide"},{"title":"Builders and Fly.io","href":"/reference/builders"},{"title":"Content Encoding with the Fly Proxy","href":"/reference/content-encoding"},{"title":"Fly Launch overview","href":"/reference/fly-launch"},{"title":"Health Checks","href":"/reference/health-checks"},{"title":"Load Balancing","href":"/reference/load-balancing"},{"title":"Machine migration","href":"/reference/machine-migration"},{"title":"Multiple processes inside a Fly.io app","href":"/app-guides/multiple-processes"},{"title":"Fly Proxy","href":"/reference/fly-proxy"},{"title":"Fly Proxy autostop/autostart","href":"/reference/fly-proxy-autostop-autostart"},{"title":"Feedback API","href":"/reference/feedback-api"},{"title":"Regions","href":"/reference/regions"},{"title":"Machine Suspend and Resume","href":"/reference/suspend-resume"}]},{"group":"About","root":{"title":"About Fly.io","href":"/about/index"},"pages":[{"title":"Discontinued Plans","href":"/about/discontinued-plans"},{"title":"Fly.io Resource Pricing","href":"/about/pricing"},{"title":"Fly.io Billing","href":"/about/billing"},{"title":"Cost Management on Fly.io","href":"/about/cost-management"},{"title":"Fly.io Free Trial","href":"/about/free-trial"},{"title":"Support","href":"/about/support"},{"group":"Jobs","root":{"title":"Join Our Team","href":"/hiring/index"},"pages":[{"title":"Our Hiring Process","href":"/hiring/hiring"},{"title":"How To Ask Us Questions","href":"/hiring/questions"},{"title":"Working at Fly.io","href":"/hiring/working"},{"title":"Our Levels","href":"/hiring/levels"}]},{"title":"Healthcare apps on Fly","href":"/about/healthcare"},{"title":"Fly.io Extensions Program","href":"/about/extensions"},{"title":"Provisioning Fly.io Extensions","href":"/reference/extensions_api"},{"title":"Fly.io Merchandise","href":"/about/merch"},{"title":"Fly.io and Open Source","href":"/about/open-source"},{"title":"Using Our Brand","href":"/about/brand"}]},{"group":"LiteFS","pages":[{"group":"Get Started with LiteFS","pages":[{"title":"LiteFS - Distributed SQLite","href":"/litefs/index"},{"title":"Speedrun: Add LiteFS to your app","href":"/litefs/speedrun"},{"title":"Getting Started with LiteFS on Fly.io","href":"/litefs/getting-started-fly"},{"title":"Getting Started with LiteFS in Docker","href":"/litefs/getting-started-docker"},{"title":"How LiteFS Works","href":"/litefs/how-it-works"},{"sidebarTitle":"FAQ","title":"LiteFS FAQ","href":"/litefs/faq"}]},{"group":"Using LiteFS","pages":[{"title":"LiteFS Releases","sidebarTitle":"Releases","href":"/litefs/releases"},{"title":"Built-in HTTP Proxy","href":"/litefs/proxy"},{"title":"Running database migrations","href":"/litefs/migrations"},{"title":"Backing up your LiteFS cluster","sidebarTitle":"Backing up your cluster","href":"/litefs/backup"},{"title":"Determining the LiteFS primary","sidebarTitle":"Determining the primary","href":"/litefs/primary"},{"sidebarTitle":"Tracking replication position","title":"Tracking LiteFS replication position","href":"/litefs/position"},{"title":"Reading the LiteFS event stream","sidebarTitle":"Reading the event stream","href":"/litefs/events"},{"title":"Using LiteFS Cloud for Backups","sidebarTitle":"Using Cloud for Backups","href":"/litefs/cloud-backups"},{"title":"Restoring from a LiteFS Cloud Backup","sidebarTitle":"Restoring from a Cloud Backup","href":"/litefs/cloud-restore"},{"title":"Disaster Recovery from LiteFS Cloud","sidebarTitle":"Disaster Recovery from Cloud","href":"/litefs/disaster-recovery"}]},{"group":"LiteFS Reference","pages":[{"sidebarTitle":"Export Command","title":"LiteFS Export Command","href":"/litefs/export"},{"sidebarTitle":"Import Command","title":"LiteFS Import Command","href":"/litefs/import"},{"sidebarTitle":"Mount Command","title":"LiteFS Mount Command","href":"/litefs/mount"},{"title":"LiteFS Run Command","sidebarTitle":"Run Command","href":"/litefs/run"},{"sidebarTitle":"Config Reference","title":"LiteFS Config Reference","href":"/litefs/config"}]}]}]}]},{"tab":"Machines API","pages":[{"title":"Machines API","href":"/api/machines"}]},{"tab":"Sprite docs","pages":[{"title":"Sprite docs","href":"/sprites"}]},{"tab":"Sprites API","pages":[{"title":"Sprites API","href":"/sprites/api/connectors/list-connectors"}]}]},"basePath":"","title":"Autoscaling - Fly.io","buildId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","deploymentId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-CE4cYsJE.js","lightbox-handle-r17bVUz3.js"]}