Install Tailscale on both your computer and your phone or tablet.
Sign in with the same account on both devices.
Find your computer’s Tailscale IP in the Tailscale app. It usually looks like 100.x.y.z.
Start Agent Canvas on your computer:
agent-canvas
Open http://<tailscale-ip>:8000/ in your phone or tablet browser.
That’s it. The connection is encrypted and only devices in your Tailscale network can reach it.
If the mobile browser still points at 127.0.0.1 or localhost, open Manage Backends and edit the local backend’s Host / Base URL to http://<tailscale-ip>:8000. If it keeps reverting, clear site data for the Agent Canvas URL in your browser settings and reload the page.
Use ngrok when Tailscale is not an option or when you need a temporary public URL. Because the URL is reachable from the internet, run Agent Canvas in public mode with a strong backend API key first:
Open the ngrok forwarding URL in your phone or tablet browser.
Do not expose Agent Canvas over the internet without authentication. Public mode requires users to enter LOCAL_BACKEND_API_KEY before the backend can be used. Without authentication, anyone with the URL can use your instance and the LLM API keys configured in it. See VM / Self-Hosted Backend for the full remote-access setup.
ngrok also supports OAuth, IP allowlists, and other access controls for additional protection.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"OpenHands Docs","colors":{"primary":"#99873c","light":"#ffe165","dark":"#ffe165"},"logo":{"light":"https://mintcdn.com/allhandsai/DjhqLcIy_hW6pRTg/logo/light.png?fit=max\u0026auto=format\u0026n=DjhqLcIy_hW6pRTg\u0026q=85\u0026s=49b636402b03f7279ca5e1afefeec1d2","dark":"https://mintcdn.com/allhandsai/DjhqLcIy_hW6pRTg/logo/dark.png?fit=max\u0026auto=format\u0026n=DjhqLcIy_hW6pRTg\u0026q=85\u0026s=e0c4017631cebc3a289798438e2c0d7a"},"favicon":"https://mintcdn.com/allhandsai/DjhqLcIy_hW6pRTg/openhands/logo-square.png?fit=max\u0026auto=format\u0026n=DjhqLcIy_hW6pRTg\u0026q=85\u0026s=6ef1bab575660ae6e2d44fcc57bc675f","appearance":{"default":"light"},"background":{"color":{"light":"#f7f3ee","dark":"#0B0D0E"}},"navbar":{"links":[],"primary":{"type":"github","href":"https://github.com/OpenHands/OpenHands"}},"footer":{"socials":{"slack":"https://openhands.dev/joinslack","github":"https://github.com/OpenHands"},"links":[{"header":"Links","items":[{"label":"Company","href":"https://openhands.dev/"},{"label":"Blog","href":"https://openhands.dev/blog"},{"label":"Cloud","href":"https://app.all-hands.dev"},{"label":"Enterprise","href":"https://openhands.dev/enterprise"}]}]},"seo":{"indexing":"navigable"},"contextual":{"options":["copy","view","download-spec","chatgpt","claude"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"allhandsai","hasAudioNarration":false,"actualSubdomain":"allhandsai","customDomains":["docs.openhands.dev"],"gitSource":{"type":"github","owner":"openhands","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af1ee07ca20d619cf5085e9","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"Cloud","count":196},{"language":"default","tag":"Cloud API","count":187},{"language":"default","tag":"REST API Reference","count":185},{"language":"default","tag":"SDK","count":128},{"language":"default","tag":"Guides","count":105},{"language":"default","tag":"API Reference","count":95},{"language":"default","tag":"Enterprise","count":70},{"language":"default","tag":"Agent Canvas","count":60},{"language":"default","tag":"Home","count":58},{"language":"default","tag":"Remote Agent Server","count":55}]},"assistantConfig":{"deflection":{"enabled":true,"email":"contact@openhands.dev","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#banner *{color:rgb(67, 66, 64)}"}],"page":{"pagePath":"openhands/usage/agent-canvas/mobile-access","slug":"/openhands/usage/agent-canvas/mobile-access","pageMetadata":{"title":"Phone \u0026 Tablet Access","description":"Access Agent Canvas from a phone or tablet using Tailscale or ngrok.","href":"/openhands/usage/agent-canvas/mobile-access"},"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: \"Access Agent Canvas from a phone or tablet using Tailscale or ngrok.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,..._provideComponents(),...props.components},{CodeBlock,Heading,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`If Agent Canvas is running on your computer, you can access it from a phone, tablet, or another device without exposing it to the public internet.`}),`\n`,_jsx(Heading,{level:`2`,id:`tailscale-recommended`,children:`Tailscale (Recommended)`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://tailscale.com/`,children:`Tailscale`}),` creates a private network between your devices. No port forwarding, DNS, or firewall rules are required.`]}),`\n`,_jsx(Heading,{level:`3`,id:`setup`,children:`Setup`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Install `,_jsx(_components.a,{href:`https://tailscale.com/download`,children:`Tailscale`}),` on both your computer and your phone or tablet.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Sign in with the same account on both devices.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Find your computer’s Tailscale IP in the Tailscale app. It usually looks like `,_jsx(_components.code,{children:`100.x.y.z`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Start Agent Canvas on your computer:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,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:`1`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`agent-canvas`})}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Open `,_jsx(_components.code,{children:`http://\u003ctailscale-ip>:8000/`}),` in your phone or tablet browser.`]}),`\n`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`That’s it. The connection is encrypted and only devices in your Tailscale network can reach it.`}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`If the mobile browser still points at `,_jsx(_components.code,{children:`127.0.0.1`}),` or `,_jsx(_components.code,{children:`localhost`}),`, open `,_jsx(_components.code,{children:`Manage Backends`}),` and edit the local backend’s `,_jsx(_components.code,{children:`Host / Base URL`}),` to `,_jsx(_components.code,{children:`http://\u003ctailscale-ip>:8000`}),`. If it keeps reverting, clear site data for the Agent Canvas URL in your browser settings and reload the page.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`ngrok-remote-/-public-access`,children:`ngrok (Remote / Public Access)`}),`\n`,_jsxs(_components.p,{children:[`Use `,_jsx(_components.a,{href:`https://ngrok.com/`,children:`ngrok`}),` when Tailscale is not an option or when you need a temporary public URL. Because the URL is reachable from the internet, run Agent Canvas in public mode with a strong backend API key first:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,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:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` LOCAL_BACKEND_API_KEY`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003cchoose-a-strong-secret>\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`agent-canvas`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --public`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Then start ngrok in a second terminal:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,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:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`ngrok`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` http`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 8000`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Open the ngrok forwarding URL in your phone or tablet browser.`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Do not expose Agent Canvas over the internet without authentication. Public mode requires users to enter `,_jsx(_components.code,{children:`LOCAL_BACKEND_API_KEY`}),` before the backend can be used. Without authentication, anyone with the URL can use your instance and the LLM API keys configured in it. See `,_jsx(_components.a,{href:`/openhands/usage/agent-canvas/backend-setup/vm`,children:`VM / Self-Hosted Backend`}),` for the full remote-access setup.`]})}),`\n`,_jsx(_components.p,{children:`ngrok also supports OAuth, IP allowlists, and other access controls for additional protection.`})]})}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":"Phone \u0026 Tablet Access","description":"Access Agent Canvas from a phone or tablet using Tailscale or ngrok.","href":"/openhands/usage/agent-canvas/mobile-access"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Tailscale (Recommended)","slug":"tailscale-recommended","depth":2,"children":[{"title":"Setup","slug":"setup","depth":3,"children":[]}]},{"title":"ngrok (Remote / Public Access)","slug":"ngrok-remote-/-public-access","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/allhandsai/dddab338317a519d/openhands/reo-init.js","/_mintlify/custom/allhandsai/ae719f15d762e1fe/openhands/posthog-init.js","/_mintlify/custom/allhandsai/b35f7f3c3c83fb4c/openhands/canvas-handoff.js","/_mintlify/custom/allhandsai/771d6371c43b73b7/openhands/linkedin-copy-tracking.js"],"subdomain":"allhandsai","siteName":"OpenHands Docs","title":"Phone \u0026 Tablet Access - OpenHands Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-07-01T17:05:15.239Z","originalFileLocation":"openhands/usage/agent-canvas/mobile-access.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=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Access Agent Canvas from a phone or tablet using Tailscale or ngrok.\">\u003cmeta data-mint-head name=\"application-name\" content=\"OpenHands Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/allhandsai/NJyVpY-OoVetrcKF/_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/allhandsai/NJyVpY-OoVetrcKF/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/allhandsai/NJyVpY-OoVetrcKF/_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/allhandsai/NJyVpY-OoVetrcKF/_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/allhandsai/NJyVpY-OoVetrcKF/_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/allhandsai/NJyVpY-OoVetrcKF/_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/allhandsai/NJyVpY-OoVetrcKF/_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/allhandsai/NJyVpY-OoVetrcKF/_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/allhandsai/NJyVpY-OoVetrcKF/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Phone \u0026amp; Tablet Access - OpenHands Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Access Agent Canvas from a phone or tablet using Tailscale or ngrok.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"OpenHands Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.openhands.dev/openhands/usage/agent-canvas/mobile-access\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://allhandsai.mintlify.site/_mintlify/api/og/v2?division=Use+Canvas\u0026amp;title=Phone+%26+Tablet+Access\u0026amp;description=Access+Agent+Canvas+from+a+phone+or+tablet+using+Tailscale+or+ngrok.\u0026amp;theme=2eb43b0b1453a2072ec6e8c0\u0026amp;signature=6bf82f3b1279ba004d7efad141cd5526b8afaae14d79e89caf3053f6b05f0cfd\">\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=\"Phone \u0026amp; Tablet Access - OpenHands Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Access Agent Canvas from a phone or tablet using Tailscale or ngrok.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://allhandsai.mintlify.site/_mintlify/api/og/v2?division=Use+Canvas\u0026amp;title=Phone+%26+Tablet+Access\u0026amp;description=Access+Agent+Canvas+from+a+phone+or+tablet+using+Tailscale+or+ngrok.\u0026amp;theme=2eb43b0b1453a2072ec6e8c0\u0026amp;signature=6bf82f3b1279ba004d7efad141cd5526b8afaae14d79e89caf3053f6b05f0cfd\">\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/allhandsai/NJyVpY-OoVetrcKF/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"OpenHands Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#99873c\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.openhands.dev/openhands/usage/agent-canvas/mobile-access\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/openhands/usage/agent-canvas/mobile-access.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.openhands.dev/#organization\",\"name\":\"OpenHands Docs\",\"url\":\"https://docs.openhands.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/allhandsai/DjhqLcIy_hW6pRTg/logo/light.png?fit=max\u0026auto=format\u0026n=DjhqLcIy_hW6pRTg\u0026q=85\u0026s=49b636402b03f7279ca5e1afefeec1d2\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.openhands.dev#website\",\"name\":\"OpenHands Docs\",\"url\":\"https://docs.openhands.dev\",\"publisher\":{\"@id\":\"https://docs.openhands.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.openhands.dev/openhands/usage/agent-canvas/mobile-access#webpage\",\"url\":\"https://docs.openhands.dev/openhands/usage/agent-canvas/mobile-access\",\"name\":\"Phone \u0026 Tablet Access\",\"description\":\"Access Agent Canvas from a phone or tablet using Tailscale or ngrok.\",\"dateModified\":\"2026-07-01T17:05:15.239Z\",\"isPartOf\":{\"@id\":\"https://docs.openhands.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.openhands.dev/openhands/usage/agent-canvas/mobile-access#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.openhands.dev/openhands/usage/agent-canvas/mobile-access#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Use Canvas\",\"item\":\"https://docs.openhands.dev/openhands/usage/agent-canvas/conversations\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Phone \u0026 Tablet Access\",\"item\":\"https://docs.openhands.dev/openhands/usage/agent-canvas/mobile-access\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.openhands.dev/openhands/usage/agent-canvas/mobile-access#article\",\"headline\":\"Phone \u0026 Tablet Access\",\"name\":\"Phone \u0026 Tablet Access\",\"description\":\"Access Agent Canvas from a phone or tablet using Tailscale or ngrok.\",\"url\":\"https://docs.openhands.dev/openhands/usage/agent-canvas/mobile-access\",\"mainEntityOfPage\":{\"@id\":\"https://docs.openhands.dev/openhands/usage/agent-canvas/mobile-access#webpage\"},\"dateModified\":\"2026-07-01T17:05:15.239Z\",\"publisher\":{\"@id\":\"https://docs.openhands.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.openhands.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"OpenHands Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"OpenHands Docs","nav":{"global":null,"tabs":[{"tab":"Home","pages":[{"title":"Home","href":"/overview/introduction"}]},{"tab":"Agent Canvas","pages":[{"title":"Agent Canvas Overview","href":"/openhands/usage/agent-canvas/overview"},{"title":"Agent Canvas Architecture","href":"/openhands/usage/agent-canvas/architecture"},{"group":"Install Canvas","pages":[{"title":"Install Agent Canvas","href":"/openhands/usage/agent-canvas/setup"},{"title":"First Time Setup","href":"/openhands/usage/agent-canvas/first-time-setup"}]},{"group":"Automations","pages":[{"title":"Managing automations","href":"/openhands/usage/agent-canvas/managing-automations"},{"title":"Event Sources","href":"/openhands/usage/agent-canvas/automation-events"},{"title":"Sync Automations with Git","href":"/openhands/usage/agent-canvas/git-sync"},{"title":"Setup a Pre-built Automation","href":"/openhands/usage/agent-canvas/prebuilt-automations"},{"title":"Issue to Pull Request Automation","href":"/openhands/usage/agent-canvas/prebuilt/issue-to-pr"},{"title":"GitHub PR Review Assistant","href":"/openhands/usage/agent-canvas/prebuilt/github-pr-review"},{"title":"GitHub Repository Monitor","href":"/openhands/usage/agent-canvas/prebuilt/github-repo-monitor"},{"title":"Slack Channel Monitor","href":"/openhands/usage/agent-canvas/prebuilt/slack-channel-monitor"}]},{"group":"Use Canvas","pages":[{"title":"Conversations","href":"/openhands/usage/agent-canvas/conversations"},{"title":"Agent Profiles","href":"/openhands/usage/agent-canvas/agent-profiles"},{"title":"Manage LLM Profiles","href":"/openhands/usage/agent-canvas/llm-profiles"},{"title":"Configure a Model","href":"/openhands/usage/agent-canvas/model-configuration"},{"title":"ACP Agents","href":"/openhands/usage/agent-canvas/acp-agents"},{"title":"Plugins in Agent Canvas","href":"/openhands/usage/agent-canvas/plugins"},{"title":"Apps (Beta)","href":"/openhands/usage/agent-canvas/canvas-extensions"},{"title":"Critic","href":"/openhands/usage/agent-canvas/critic"},{"title":"Customize and Settings","description":"Teach your agent with skills and MCP servers, and configure how it runs with settings.","href":"/openhands/usage/agent-canvas/customize-and-settings"},{"title":"Phone \u0026 Tablet Access","href":"/openhands/usage/agent-canvas/mobile-access"}]},{"group":"Connect Backends","pages":[{"title":"Backends","description":"Understand and manage Agent Canvas backends.","href":"/openhands/usage/agent-canvas/backends"},{"title":"Local Backend","href":"/openhands/usage/agent-canvas/backend-setup/local"},{"title":"Remote Backend","href":"/openhands/usage/agent-canvas/backend-setup/remote"},{"title":"Cloud Backend","href":"/openhands/usage/agent-canvas/backend-setup/cloud"},{"title":"DigitalOcean Managed Agents","href":"/openhands/usage/agent-canvas/backend-setup/digitalocean"}]},{"group":"Self-Host Backend Services","pages":[{"title":"VM / Self-Hosted Installation","href":"/openhands/usage/agent-canvas/backend-setup/vm"},{"title":"Use Docker with Agent Canvas","href":"/openhands/usage/agent-canvas/backend-setup/docker"},{"title":"Run Each Conversation in Its Own Docker Container","href":"/openhands/usage/agent-canvas/backend-setup/docker-execution"},{"title":"Kubernetes (Helm)","href":"/openhands/usage/agent-canvas/backend-setup/kubernetes"},{"title":"Modal Backend","href":"/openhands/usage/agent-canvas/backend-setup/modal"}]},{"group":"Contribute And Troubleshoot","pages":[{"title":"Contributing","href":"/openhands/usage/agent-canvas/development"},{"title":"Troubleshooting","href":"/openhands/usage/agent-canvas/troubleshooting"}]},{"group":"Release Notes","pages":[{"title":"Agent Canvas 1.35.0","href":"/openhands/usage/agent-canvas/release-notes/v1.35.0"},{"title":"Agent Canvas 1.34.0","href":"/openhands/usage/agent-canvas/release-notes/v1.34.0"},{"title":"Agent Canvas 1.33.0","href":"/openhands/usage/agent-canvas/release-notes/v1.33.0"},{"title":"Agent Canvas 1.32.0","href":"/openhands/usage/agent-canvas/release-notes/v1.32.0"},{"title":"Agent Canvas 1.31.0","href":"/openhands/usage/agent-canvas/release-notes/v1.31.0"},{"title":"Agent Canvas 1.30.0","href":"/openhands/usage/agent-canvas/release-notes/v1.30.0"},{"title":"Agent Canvas 1.29.0","href":"/openhands/usage/agent-canvas/release-notes/v1.29.0"},{"title":"Agent Canvas 1.28.0","href":"/openhands/usage/agent-canvas/release-notes/v1.28.0"},{"title":"Agent Canvas 1.27.0","href":"/openhands/usage/agent-canvas/release-notes/v1.27.0"},{"title":"Agent Canvas 1.26.0","href":"/openhands/usage/agent-canvas/release-notes/v1.26.0"},{"title":"Agent Canvas 1.25.0","href":"/openhands/usage/agent-canvas/release-notes/v1.25.0"},{"title":"Agent Canvas 1.24.0","href":"/openhands/usage/agent-canvas/release-notes/v1.24.0"},{"title":"Agent Canvas 1.23.0","href":"/openhands/usage/agent-canvas/release-notes/v1.23.0"},{"title":"Agent Canvas 1.22.0","href":"/openhands/usage/agent-canvas/release-notes/v1.22.0"},{"title":"Agent Canvas 1.21.0","href":"/openhands/usage/agent-canvas/release-notes/v1.21.0"},{"title":"Agent Canvas 1.20.0","href":"/openhands/usage/agent-canvas/release-notes/v1.20.0"},{"title":"Agent Canvas 1.19.0","href":"/openhands/usage/agent-canvas/release-notes/v1.19.0"},{"title":"Agent Canvas 1.18.0","href":"/openhands/usage/agent-canvas/release-notes/v1.18.0"},{"title":"Agent Canvas 1.17.0","href":"/openhands/usage/agent-canvas/release-notes/v1.17.0"},{"title":"Agent Canvas 1.16.0","href":"/openhands/usage/agent-canvas/release-notes/v1.16.0"},{"title":"Agent Canvas 1.15.0","href":"/openhands/usage/agent-canvas/release-notes/v1.15.0"},{"title":"Agent Canvas 1.14.0","href":"/openhands/usage/agent-canvas/release-notes/v1.14.0"},{"title":"Agent Canvas 1.13.0","href":"/openhands/usage/agent-canvas/release-notes/v1.13.0"},{"title":"Agent Canvas 1.12.0","href":"/openhands/usage/agent-canvas/release-notes/v1.12.0"},{"title":"Agent Canvas 1.11.0","href":"/openhands/usage/agent-canvas/release-notes/v1.11.0"},{"title":"Agent Canvas 1.10.0","href":"/openhands/usage/agent-canvas/release-notes/v1.10.0"}]}]},{"tab":"SDK","pages":[{"title":"SDK","href":"/sdk"}]},{"tab":"Cloud","pages":[{"title":"Cloud","href":"/openhands/usage/cloud/openhands-cloud"}]},{"tab":"Enterprise","pages":[{"title":"Enterprise","href":"/enterprise"}]},{"tab":"Enterprise Cookbook","pages":[{"title":"Enterprise Cookbook","href":"/cookbook"}]}]},"basePath":"","title":"Phone \u0026 Tablet Access - OpenHands Docs","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":[],"chunks":[]}