Run a bot, scraper, queue consumer or scheduled job on a pod with no public URL.
Not everything you deploy is a website. A Telegram bot, a Discord bot, a queue consumer, a scraper or a cron-driven script has no web server and nothing to serve - but on a normal pod, InstaPods still gives it a public URL, points nginx at it, and issues a certificate. Nothing is listening, so every request comes back as an error, and the platform’s health checks flag the pod as broken.A worker pod is the answer. It’s an ordinary pod in every way except one: it has no public ingress at all.
What changes
Web pod (default)
Worker pod
Public URL
my-app.nbg1-1.instapods.app
none
nginx vhost and TLS certificate
yes
no
DNS record
yes
no
Health checks against the URL
yes
no
SSH, Web Terminal, Web IDE, files, logs
yes
yes
Databases and managed services
yes
yes
Backups
yes
yes
Everything you use to build and operate the pod still works. What goes away is only the front door.
A worker pod has no address to visit, so a browser pointed at its old URL returns “no such host” rather than a misleading 502. That is the correct answer: the pod is running, it just isn’t a website.
Converting a pod
The switch is reversible, and you can flip it at any time.
Dashboard
API
Open the pod, go to the Settings tab, and use the Pod type card. Click Convert to worker (or Convert to web pod to go back).Switching to a worker removes the pod’s public URL, its nginx vhost and its certificate. Switching back regenerates the URL and re-provisions ingress - if the pod is stopped, that happens the next time you start it.
# Convert to a background workercurl -X POST https://app.instapods.com/api/pods/my-bot/kind \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"kind": "worker"}'# Convert back to a websitecurl -X POST https://app.instapods.com/api/pods/my-bot/kind \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"kind": ""}'
kind accepts "worker" or "" (a normal web pod). Converting to the state the pod is already in is a no-op.
Converting a web pod to a worker drops its domain. Converting back issues a fresh per-host domain - it may not be the same name you had before, and any custom domain will need to be re-pointed. Don’t flip a pod that people are visiting.
Running your code
A worker pod runs the same start command as any other pod. Point it at your long-running process instead of a web server:
# Deploy your code as usualinstapods deploy my-bot# Watch it runinstapods logs my-bot -n 200
For a Git-deployed worker, set a Custom Start Command on the pod’s Git tab (for example node bot.js or python -m worker) so the deploy knows what to run.
A worker that only needs to run on a schedule doesn’t need to stay resident. Use cron inside the pod (via the Web Terminal or SSH) and keep the pod on the Launch plan.
1-Click Apps
The pod-type switch isn’t offered on 1-Click App pods. Those apps ship a web interface as the whole point of the app, so taking the URL away would leave you no way to use them.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"InstaPods","colors":{"primary":"#22C55E","light":"#4ADE80","dark":"#16A34A"},"logo":{"light":"https://mintcdn.com/instapods/Eo_UebmFKktn__Oo/logo/light.svg?fit=max\u0026auto=format\u0026n=Eo_UebmFKktn__Oo\u0026q=85\u0026s=656c06357db1c2920070d105fcd54372","dark":"https://mintcdn.com/instapods/Eo_UebmFKktn__Oo/logo/dark.svg?fit=max\u0026auto=format\u0026n=Eo_UebmFKktn__Oo\u0026q=85\u0026s=7faaa1a7ebdd870f6e17ad2fea85c2ea"},"favicon":"https://mintcdn.com/instapods/Eo_UebmFKktn__Oo/logo/favicon.svg?fit=max\u0026auto=format\u0026n=Eo_UebmFKktn__Oo\u0026q=85\u0026s=d791be1fb3e40fb9d83d93e1a2bb5ac0","api":{"openapi":"api-reference/openapi.yaml"},"appearance":{"default":"dark"},"footer":{"socials":{"github":"https://github.com/instapods","x":"https://x.com/instapods"}},"fonts":{"family":"Outfit"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"instapods","hasAudioNarration":false,"actualSubdomain":"instapods","customDomains":["docs.instapods.com"],"gitSource":{"type":"github","owner":"instapods","repo":"instapods","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6af2b9e3b8835b0cc325a53c","clientVersion":"0.0.4143","searchFilterCounts":[{"language":"default","tag":"Documentation","count":41},{"language":"default","tag":"API Reference","count":24},{"language":"default","tag":"CLI Reference","count":22},{"language":"default","tag":"Guides","count":12},{"language":"default","tag":"Dashboard","count":9},{"language":"default","tag":"MCP Reference","count":8},{"language":"default","tag":"Presets","count":6},{"language":"default","tag":"Getting Started","count":5},{"language":"default","tag":"Services","count":4},{"language":"default","tag":"SSH \u0026 Files","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"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":[],"page":{"pagePath":"guides/worker-pods","slug":"/guides/worker-pods","pageMetadata":{"title":"Worker Pods","description":"Run a bot, scraper, queue consumer or scheduled job on a pod with no public URL.","href":"/guides/worker-pods"},"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: \"Run a bot, scraper, queue consumer or scheduled job on a pod with no public URL.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note,Tab,Table,Tabs,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Not everything you deploy is a website. A Telegram bot, a Discord bot, a queue consumer, a scraper or a cron-driven script has no web server and nothing to serve - but on a normal pod, InstaPods still gives it a public URL, points nginx at it, and issues a certificate. Nothing is listening, so every request comes back as an error, and the platform’s health checks flag the pod as broken.`}),`\n`,_jsxs(_components.p,{children:[`A `,_jsx(_components.strong,{children:`worker pod`}),` is the answer. It’s an ordinary pod in every way except one: it has no public ingress at all.`]}),`\n`,_jsx(Heading,{level:`2`,id:`what-changes`,children:`What changes`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{}),_jsx(_components.th,{children:`Web pod (default)`}),_jsx(_components.th,{children:`Worker pod`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Public URL`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`my-app.nbg1-1.instapods.app`})}),_jsx(_components.td,{children:`none`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`nginx vhost and TLS certificate`}),_jsx(_components.td,{children:`yes`}),_jsx(_components.td,{children:`no`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`DNS record`}),_jsx(_components.td,{children:`yes`}),_jsx(_components.td,{children:`no`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Health checks against the URL`}),_jsx(_components.td,{children:`yes`}),_jsx(_components.td,{children:`no`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`SSH, Web Terminal, Web IDE, files, logs`}),_jsx(_components.td,{children:`yes`}),_jsx(_components.td,{children:`yes`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Databases and managed services`}),_jsx(_components.td,{children:`yes`}),_jsx(_components.td,{children:`yes`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Backups`}),_jsx(_components.td,{children:`yes`}),_jsx(_components.td,{children:`yes`})]})]})]}),`\n`,_jsx(_components.p,{children:`Everything you use to build and operate the pod still works. What goes away is only the front door.`}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`A worker pod has no address to visit, so a browser pointed at its old URL returns “no such host” rather than a misleading `,_jsx(_components.code,{children:`502`}),`. That is the correct answer: the pod is running, it just isn’t a website.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`converting-a-pod`,children:`Converting a pod`}),`\n`,_jsx(_components.p,{children:`The switch is reversible, and you can flip it at any time.`}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Dashboard`,id:`dashboard`,children:[_jsxs(_components.p,{children:[`Open the pod, go to the `,_jsx(_components.strong,{children:`Settings`}),` tab, and use the `,_jsx(_components.strong,{children:`Pod type`}),` card. Click `,_jsx(_components.strong,{children:`Convert to worker`}),` (or `,_jsx(_components.strong,{children:`Convert to web pod`}),` to go back).`]}),_jsx(_components.p,{children:`Switching to a worker removes the pod’s public URL, its nginx vhost and its certificate. Switching back regenerates the URL and re-provisions ingress - if the pod is stopped, that happens the next time you start it.`})]}),_jsxs(Tab,{title:`API`,id:`api`,children:[_jsx(CodeBlock,{filename:``,numberOfLines:`11`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`11`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Convert to a background worker`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://app.instapods.com/api/pods/my-bot/kind`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer YOUR_TOKEN\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/json\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{\"kind\": \"worker\"}'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Convert back to a website`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://app.instapods.com/api/pods/my-bot/kind`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer YOUR_TOKEN\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/json\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{\"kind\": \"\"}'`})]}),`\n`]})})}),_jsxs(_components.p,{children:[_jsx(_components.code,{children:`kind`}),` accepts `,_jsx(_components.code,{children:`\"worker\"`}),` or `,_jsx(_components.code,{children:`\"\"`}),` (a normal web pod). Converting to the state the pod is already in is a no-op.`]})]})]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Converting a web pod to a worker `,_jsx(_components.strong,{children:`drops its domain`}),`. Converting back issues a fresh per-host domain - it may not be the same name you had before, and any custom domain will need to be re-pointed. Don’t flip a pod that people are visiting.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`running-your-code`,children:`Running your code`}),`\n`,_jsx(_components.p,{children:`A worker pod runs the same start command as any other pod. Point it at your long-running process instead of a web server:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Deploy your code as usual`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`instapods`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` deploy`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` my-bot`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Watch it run`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`instapods`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` logs`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` my-bot`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -n`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 200`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`For a Git-deployed worker, set a `,_jsx(_components.strong,{children:`Custom Start Command`}),` on the pod’s Git tab (for example `,_jsx(_components.code,{children:`node bot.js`}),` or `,_jsx(_components.code,{children:`python -m worker`}),`) so the deploy knows what to run.`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`A worker that only needs to run on a schedule doesn’t need to stay resident. Use `,_jsx(_components.code,{children:`cron`}),` inside the pod (via the Web Terminal or SSH) and keep the pod on the Launch plan.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`1-click-apps`,children:`1-Click Apps`}),`\n`,_jsx(_components.p,{children:`The pod-type switch isn’t offered on 1-Click App pods. Those apps ship a web interface as the whole point of the app, so taking the URL away would leave you no way to use them.`})]})}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":"Worker Pods","description":"Run a bot, scraper, queue consumer or scheduled job on a pod with no public URL.","href":"/guides/worker-pods"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"What changes","slug":"what-changes","depth":2,"children":[]},{"title":"Converting a pod","slug":"converting-a-pod","depth":2,"children":[]},{"title":"Running your code","slug":"running-your-code","depth":2,"children":[]},{"title":"1-Click Apps","slug":"1-click-apps","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"instapods","siteName":"InstaPods","title":"Worker Pods - InstaPods","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-13T12:42:51.946Z","originalFileLocation":"guides/worker-pods.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=\"dark\"}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=\"Run a bot, scraper, queue consumer or scheduled job on a pod with no public URL.\">\u003cmeta data-mint-head name=\"application-name\" content=\"InstaPods\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/instapods/iSf5azwbd99lVhXv/_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/instapods/iSf5azwbd99lVhXv/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/instapods/iSf5azwbd99lVhXv/_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/instapods/iSf5azwbd99lVhXv/_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/instapods/iSf5azwbd99lVhXv/_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/instapods/iSf5azwbd99lVhXv/_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/instapods/iSf5azwbd99lVhXv/_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/instapods/iSf5azwbd99lVhXv/_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/instapods/iSf5azwbd99lVhXv/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Worker Pods - InstaPods\">\u003cmeta data-mint-head property=\"og:description\" content=\"Run a bot, scraper, queue consumer or scheduled job on a pod with no public URL.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"InstaPods\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.instapods.com/guides/worker-pods\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://instapods.mintlify.site/_mintlify/api/og/v2?division=Guides\u0026amp;title=Worker+Pods\u0026amp;description=Run+a+bot%2C+scraper%2C+queue+consumer+or+scheduled+job+on+a+pod+with+no+public+URL.\u0026amp;theme=35486980542f3316af81148a\u0026amp;signature=43743913ddceee3a1f1c74af3e465f47945d23161c2169d084f72e2923330d6a\">\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=\"Worker Pods - InstaPods\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Run a bot, scraper, queue consumer or scheduled job on a pod with no public URL.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://instapods.mintlify.site/_mintlify/api/og/v2?division=Guides\u0026amp;title=Worker+Pods\u0026amp;description=Run+a+bot%2C+scraper%2C+queue+consumer+or+scheduled+job+on+a+pod+with+no+public+URL.\u0026amp;theme=35486980542f3316af81148a\u0026amp;signature=43743913ddceee3a1f1c74af3e465f47945d23161c2169d084f72e2923330d6a\">\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/instapods/iSf5azwbd99lVhXv/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"InstaPods\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#22C55E\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.instapods.com/guides/worker-pods\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/worker-pods.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.instapods.com/#organization\",\"name\":\"InstaPods\",\"url\":\"https://docs.instapods.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/instapods/Eo_UebmFKktn__Oo/logo/light.svg?fit=max\u0026auto=format\u0026n=Eo_UebmFKktn__Oo\u0026q=85\u0026s=656c06357db1c2920070d105fcd54372\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.instapods.com#website\",\"name\":\"InstaPods\",\"url\":\"https://docs.instapods.com\",\"publisher\":{\"@id\":\"https://docs.instapods.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.instapods.com/guides/worker-pods#webpage\",\"url\":\"https://docs.instapods.com/guides/worker-pods\",\"name\":\"Worker Pods\",\"description\":\"Run a bot, scraper, queue consumer or scheduled job on a pod with no public URL.\",\"dateModified\":\"2026-08-13T12:42:51.946Z\",\"isPartOf\":{\"@id\":\"https://docs.instapods.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.instapods.com/guides/worker-pods#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.instapods.com/guides/worker-pods#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Guides\",\"item\":\"https://docs.instapods.com/guides/ai-builder\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Worker Pods\",\"item\":\"https://docs.instapods.com/guides/worker-pods\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.instapods.com/guides/worker-pods#article\",\"headline\":\"Worker Pods\",\"name\":\"Worker Pods\",\"description\":\"Run a bot, scraper, queue consumer or scheduled job on a pod with no public URL.\",\"url\":\"https://docs.instapods.com/guides/worker-pods\",\"mainEntityOfPage\":{\"@id\":\"https://docs.instapods.com/guides/worker-pods#webpage\"},\"dateModified\":\"2026-08-13T12:42:51.946Z\",\"publisher\":{\"@id\":\"https://docs.instapods.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.instapods.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"InstaPods\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"InstaPods\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/guides/worker-pods.md","siteName":"InstaPods","nav":{"global":null,"tabs":[{"tab":"Documentation","groups":[{"group":"Getting Started","pages":[{"title":"Welcome to InstaPods","href":"/introduction"},{"title":"Quickstart","href":"/quickstart"},{"title":"Core Concepts","href":"/getting-started/concepts"},{"title":"Creating a Pod","href":"/getting-started/creating-a-pod"},{"title":"Managing Pods","href":"/getting-started/managing-pods"}]},{"group":"Dashboard","pages":[{"title":"Dashboard Overview","href":"/dashboard/overview"},{"title":"Pod Detail","href":"/dashboard/pod-detail"},{"title":"Web IDE","href":"/dashboard/web-ide"},{"title":"Web Terminal","href":"/dashboard/web-terminal"},{"title":"Backups","href":"/dashboard/backups"},{"title":"Custom Domains","href":"/dashboard/custom-domains"},{"title":"Teams","href":"/dashboard/teams"},{"title":"Billing","href":"/dashboard/billing"},{"title":"Account Settings","href":"/dashboard/account-settings"}]},{"group":"Presets","pages":[{"title":"Presets Overview","href":"/presets/overview"},{"title":"Static Site","href":"/presets/static"},{"title":"PHP","href":"/presets/php"},{"title":"Node.js","href":"/presets/nodejs"},{"title":"Python","href":"/presets/python"},{"title":"Go","href":"/presets/go"}]},{"group":"Services","pages":[{"title":"Services Overview","href":"/services/overview"},{"title":"MySQL","href":"/services/mysql"},{"title":"PostgreSQL","href":"/services/postgresql"},{"title":"Redis","href":"/services/redis"}]},{"group":"SSH \u0026 Files","pages":[{"title":"SSH Access","href":"/ssh-and-files/ssh-access"},{"title":"File Management","href":"/ssh-and-files/file-management"}]},{"group":"Guides","pages":[{"title":"Build with AI in your browser","href":"/guides/ai-builder"},{"title":"Deploy a Lovable app","href":"/guides/deploy-lovable-app"},{"title":"Git Deployment","href":"/guides/git-deployment"},{"title":"Add a \"Deploy to InstaPods\" button","href":"/guides/deploy-button"},{"title":"Deploy a Docker image","href":"/guides/deploy-docker-image"},{"title":"1-Click Apps","description":"Deploy ready-to-run self-hosted apps like n8n, AutoMem, and Vaultwarden in seconds, then configure them with environment variables.","href":"/guides/one-click-apps"},{"title":"Worker Pods","href":"/guides/worker-pods"},{"title":"Transfer a Pod","description":"Hand a pod and its billing over to another InstaPods account.","href":"/guides/transfer-a-pod"},{"title":"Deploy, Reload, Restart","href":"/guides/operations"},{"title":"Environment Variables","href":"/guides/environment-variables"},{"title":"Import an existing app","href":"/guides/import-existing-app"},{"title":"Import from AI builders","href":"/guides/import-artifacts"}]},{"group":"Partners","pages":[{"title":"Hosting Partnership","href":"/partners/hosting-partnership"}]},{"group":"Support","pages":[{"title":"FAQ","href":"/support/faq"},{"title":"Troubleshooting","href":"/support/troubleshooting"}]}]},{"tab":"CLI Reference","pages":[{"title":"CLI Reference","href":"/cli/installation"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/overview"}]},{"tab":"MCP Reference","pages":[{"title":"MCP Reference","href":"/mcp/overview"}]}]},"basePath":"","title":"Worker Pods - InstaPods","buildId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","deploymentId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","dynamics":[],"chunks":[]}