Send diagnostic information about your applications back to Fly.io,
to help diagnose problems.This command will collect some local system information and a few files
that youād be sending us anyways in order to deploy, notably any Dockerfiles
you might have associated with this application.
Usage
fly doctor diag [flags]
Options
-a, --app string Application name -c, --config string Path to application configuration file --force Send diagnostics even if we can't find your local Fly.io app -h, --help help for diag
Global Options
-t, --access-token string Fly API Access Token --debug Print additional logs and traces --verbose Verbose output
See Also
fly doctor - The DOCTOR command allows you to debug your Fly environment
ā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":"6af75ebc4b8e87b6b5423e4a","clientVersion":"0.0.4131","searchFilterCounts":[{"language":"default","tag":"Fly docs","count":1174},{"language":"default","tag":"Reference","count":273},{"language":"default","tag":"flyctl","count":254},{"language":"default","tag":"Commands","count":252},{"language":"default","tag":"Machines API","count":214},{"language":"default","tag":"Language \u0026 Framework Guides","count":96},{"language":"default","tag":"Sprites API","count":58},{"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":"custom-rbac-roles","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":"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":"llms-txt-v2","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":"flyctl/cmd/fly_doctor_diag","slug":"/flyctl/cmd/fly_doctor_diag","pageMetadata":{"title":"fly doctor diag","source_url":"https://docs.fly.io/flyctl/cmd/fly_doctor_diag","description":null,"href":"/flyctl/cmd/fly_doctor_diag"},"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`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Send diagnostic information about your applications back to Fly.io,\nto help diagnose problems.`}),`\n`,_jsx(_components.p,{children:`This command will collect some local system information and a few files\nthat youād be sending us anyways in order to deploy, notably any Dockerfiles\nyou might have associated with this application.`}),`\n`,_jsx(Heading,{level:`2`,id:`usage`,children:`Usage`}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`fly doctor diag [flags]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(Heading,{level:`2`,id:`options`,children:`Options`}),`\n`,_jsx(CodeBlock,{numberOfLines:`5`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` -a, --app string Application name`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` -c, --config string Path to application configuration file`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` --force Send diagnostics even if we can't find your local Fly.io app`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` -h, --help help for diag`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(Heading,{level:`2`,id:`global-options`,children:`Global Options`}),`\n`,_jsx(CodeBlock,{numberOfLines:`4`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` -t, --access-token string Fly API Access Token`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` --debug Print additional logs and traces`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` --verbose Verbose output`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(Heading,{level:`2`,id:`see-also`,children:`See Also`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/flyctl/cmd/fly_doctor`,children:`fly doctor`}),`\t - The DOCTOR command allows you to debug your Fly environment`]}),`\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":"fly doctor diag","source_url":"https://docs.fly.io/flyctl/cmd/fly_doctor_diag","description":null,"href":"/flyctl/cmd/fly_doctor_diag"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Usage","slug":"usage","depth":2,"children":[]},{"title":"Options","slug":"options","depth":2,"children":[]},{"title":"Global Options","slug":"global-options","depth":2,"children":[]},{"title":"See Also","slug":"see-also","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":"fly doctor diag - Fly.io","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-12T00:56:30.302Z","originalFileLocation":"flyctl/cmd/fly_doctor_diag.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=\"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=\"fly doctor diag - Fly.io\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Fly.io\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.fly.io/flyctl/cmd/fly_doctor_diag\">\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=fly+doctor\u0026amp;title=fly+doctor+diag\u0026amp;theme=330e095e1cdff8ad27970bff\u0026amp;signature=e395401ac8fc0ded053657dc68594b960747387039a86af5a3f234f488270df9\">\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=\"fly doctor diag - Fly.io\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://fly-io.mintlify.site/_mintlify/api/og/v2?division=fly+doctor\u0026amp;title=fly+doctor+diag\u0026amp;theme=330e095e1cdff8ad27970bff\u0026amp;signature=e395401ac8fc0ded053657dc68594b960747387039a86af5a3f234f488270df9\">\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/flyctl/cmd/fly_doctor_diag\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/flyctl/cmd/fly_doctor_diag.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/flyctl/cmd/fly_doctor_diag#webpage\",\"url\":\"https://docs.fly.io/flyctl/cmd/fly_doctor_diag\",\"name\":\"fly doctor diag\",\"dateModified\":\"2026-11-12T00:56:30.302Z\",\"isPartOf\":{\"@id\":\"https://docs.fly.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.fly.io/flyctl/cmd/fly_doctor_diag#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.fly.io/flyctl/cmd/fly_doctor_diag#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\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"flyctl\",\"item\":\"https://docs.fly.io/flyctl/install\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Commands\",\"item\":\"https://docs.fly.io/flyctl/cmd/fly_help\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"fly doctor\",\"item\":\"https://docs.fly.io/flyctl/cmd/fly_doctor\"},{\"@type\":\"ListItem\",\"position\":6,\"name\":\"fly doctor diag\",\"item\":\"https://docs.fly.io/flyctl/cmd/fly_doctor_diag\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.fly.io/flyctl/cmd/fly_doctor_diag#article\",\"headline\":\"fly doctor diag\",\"name\":\"fly doctor diag\",\"url\":\"https://docs.fly.io/flyctl/cmd/fly_doctor_diag\",\"mainEntityOfPage\":{\"@id\":\"https://docs.fly.io/flyctl/cmd/fly_doctor_diag#webpage\"},\"dateModified\":\"2026-11-12T00:56:30.302Z\",\"publisher\":{\"@id\":\"https://docs.fly.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.fly.io#website\"}}]}\u003c/script>","agentPointerHref":"/flyctl/cmd/fly_doctor_diag.md","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","description":null,"href":"/flyctl/cmd/fly_doctor"},"pages":[{"title":"fly doctor diag","href":"/flyctl/cmd/fly_doctor_diag"}]},{"group":"fly extensions","root":{"title":"fly extensions","description":null,"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","href":"/reference/architecture"},{"title":"Autoscaling","href":"/reference/autoscaling"},{"title":"Migrating from AWS to Fly.io Overview","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":"Free Waiver for Bills Under $5","sidebarTitle":"Free Waiver","href":"/about/free-waiver"},{"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":"fly doctor diag - Fly.io","buildId":"dpl_5joLUXmnJgwqjrHAS4dxZrQTdxgh","deploymentId":"dpl_5joLUXmnJgwqjrHAS4dxZrQTdxgh","dynamics":[],"chunks":[]}