Mobile से Claude Code कैसे चलाएं: पूरी गाइड
अपने फोन से Claude Code चलाने के लिए VPS पर tmux और mosh का उपयोग करें। यह गाइड बताती है कि कैसे SSH keys के जरिए सर्वर से जुड़ें और मोबाइल पर टर्मिनल की समस्याओं को हल करें।
अपने phone से Claude Code: यह वास्तव में कैसे काम करता है
इस guide में आपके phone पर एक terminal app का उपयोग किया जाता है। Claude Code एक VPS (virtual private server) पर, खुले रहने वाले tmux session के अंदर चलता है। आपका phone उस session से SSH (secure shell) connection खोलता है, जब तक आप उसे देख रहे होते हैं। app बंद करने पर भी agent काम करता रहता है, क्योंकि process phone पर चला ही नहीं था।
Claude Code Remote Control भी उपलब्ध कराता है: किसी session के अंदर /remote-control चलाकर आप इसे Claude mobile app या browser के माध्यम से उपयोग कर सकते हैं, जबकि process server पर चलता रहता है।
यही इस design का पूरा आधार है। Phone का operating system किसी app से दूर जाते ही कुछ seconds बाद उसे suspend कर देता है। इसलिए phone पर शुरू किया गया कोई भी लंबा काम रुक जाता है। इसके अलावा, wifi से mobile data पर जाते समय phone को हर बार नया network address मिलता है। जब process server पर चलता है और phone केवल screen दिखाता है, तो दोनों समस्याएँ समाप्त हो जाती हैं।
आपको server पर चार चीज़ों की आवश्यकता है: session को बनाए रखने के लिए tmux, प्रवेश के लिए SSH keys, network changes के लिए mosh और स्वयं Claude Code। Phone की ओर से एक ऐसा terminal app चाहिए जिसमें key row तक पहुँचना आसान हो।
VPS पर आपको क्या चाहिए
SSH और tmux वाले हिस्सों के लिए एक छोटा Ubuntu 24.04 box पर्याप्त है। Claude Code के लिए अधिक संसाधन चाहिए। October 2026 तक की आधिकारिक आवश्यकताओं के अनुसार x64 या ARM64 processor पर Ubuntu 20.04 या नया version और 4 GB या अधिक RAM चाहिए। Claude Code के लिए paid Claude account (Pro, Max, Team या Enterprise), API access वाला Console account, या Amazon Bedrock जैसे supported cloud provider के माध्यम से access भी चाहिए, क्योंकि free Claude.ai plan में यह सुविधा शामिल नहीं है।
box को sudo वाले सामान्य user के रूप में सेट करें, root के रूप में नहीं। यदि server नया है, तो पहले नए VPS पर पहले दस मिनट वाली प्रक्रिया पूरी करें, क्योंकि इस guide में बाद में किए जाने वाले SSH बदलाव user और firewall बनने के बाद अधिक सरल होंगे।
sudo apt update && sudo apt install -y tmux mosh
curl -fsSL https://claude.ai/install.sh | bash
claude --versionInstaller binary को ~/.local/bin/claude पर रखता है और claude --version, 2.1.211 (Claude Code) जैसी line दिखाता है। यदि यह command not found दिखाए, तो वह directory अभी आपके PATH में शामिल नहीं है: log out करें, फिर log in करें और command -v claude से जाँच करें। claude doctor session शुरू किए बिना installation और settings की diagnostics दिखाता है।
अब phone पर निर्भर होने से पहले laptop से एक बार log in करें। किसी project directory में claude चलाएँ और login prompt का पालन करें। इस प्रक्रिया में browser में एक URL खोलकर code वापस terminal में डालना होता है, और phone की screen पर दो apps के बीच ऐसा करना धीमा होता है। यह काम एक बार वास्तविक keyboard पर करें; credentials server पर बने रहते हैं।
Claude Code को tmux के अंदर शुरू करें ताकि कनेक्शन टूटने पर यह बंद न हो
tmux new -s claude
cd ~/projects/api
claudeCtrl-b और फिर d दबाकर detach करें। tmux [detached (from session claude)] प्रिंट करता है और आपको वापस शेल दे देता है। अब आप ऐप बंद कर सकते हैं, सिग्नल खो सकते हैं, या फोन को अपनी जेब में रख सकते हैं। pane चलता रहेगा।
tmux ls
tmux attach -t claudetmux ls प्रति सेशन एक लाइन प्रिंट करता है, जैसे कि claude: 1 windows (created Thu Jul 30 09:14:02 2026)। tmux attach -t claude आपको ठीक उसी जगह वापस ले आता है जहाँ आपने काम छोड़ा था, जिसमें अधूरा संपादन भी शामिल है।
यह इसलिए काम करता है क्योंकि tmux अपनी खुद की एक सर्वर प्रक्रिया चलाता है, और आपका शेल तथा Claude Code उस सर्वर के चाइल्ड प्रोसेस होते हैं, न कि sshd के। जब SSH कनेक्शन समाप्त होता है, तो कर्नेल उस कनेक्शन से जुड़ी प्रक्रियाओं को hangup सिग्नल, SIGHUP भेजता है, और tmux सर्वर उनमें से एक नहीं होता है। tmux के बिना, वही स्क्रीन लॉक जो आपका कनेक्शन तोड़ता है, Claude Code को टूल कॉल के बीच में ही रोक देता है। tmux के अंदर VPS पर Claude Code चलाना सेशन लेआउट के बारे में अधिक विस्तार से जानकारी देता है।
tmux को सर्वर पर चलाएं, फोन पर कभी नहीं। जिस सेशन से आप पहले से जुड़े हैं, उसके अंदर tmux टाइप करने पर sessions should be nested with care, unset $TMUX to force प्रिंट होता है, और इसे जबरन चलाने पर आपको दो prefix keys के बीच संघर्ष करना पड़ेगा।
हर login पर automatically attach करें
Touch keyboard पर attach command टाइप करना जल्दी ही परेशानी वाला हो जाता है। इसे server पर ~/.profile के अंत में जोड़ें:
if command -v tmux >/dev/null 2>&1 && [ -z "$TMUX" ] && [ -t 1 ]; then
exec tmux new-session -A -s claude
fiअगर claude नाम का session मौजूद है, तो new-session -A -s claude उससे attach करता है; अगर मौजूद नहीं है, तो उसे create करता है। इस तरह एक command दोनों स्थितियों को संभालती है। exec login shell को tmux से replace करता है, इसलिए tmux से बाहर निकलने पर bare prompt पर आने के बजाय connection बंद हो जाता है। जब आपको plain shell चाहिए, तो file को skip करें: ssh you@server -t "bash --noprofile"।
इसे ~/.profile में रखें, ~/.bashrc में नहीं। Non-interactive SSH commands के लिए Bash ~/.bashrc भी पढ़ता है, लेकिन ऊपर का [ -t 1 ] guard file transfer के दौरान इस block को tmux शुरू करने से रोकता है। ऐसे startup commands, जिनमें guard न हो और जो output print करें, Received message too long जैसी errors के साथ transfer protocols को तोड़ देते हैं। ~/.profile केवल login shells के लिए चलता है, और interactive SSH session में यही आवश्यक है।
~/.profile वह स्थान भी है जहाँ Ubuntu ~/.local/bin को PATH में जोड़ता है। अगर login के तुरंत बाद claude काम करता है, लेकिन tmux के अंदर का shell command not found कहता है, तो इसका कारण यही ordering है। इसलिए ऊपर बताए अनुसार tmux को login shell से शुरू करें, न कि ऐसी script से जो profile को skip करती हो।
iOS: Termius या Blink Shell
दोनों apps SSH और mosh को सपोर्ट करते हैं और दोनों ही app के भीतर keys को स्टोर करते हैं। मुख्य अंतर इनके इंटरफेस का है।
Blink Shell कमांड-आधारित है। इसके प्रॉम्प्ट पर आप ssh you@server या mosh you@server टाइप करते हैं, जो डेस्कटॉप टर्मिनल के समान सिंटैक्स है। सेटिंग्स खोलने के लिए config टाइप करें, और Keys सेक्शन आपके लिए एक पेयर (pair) बना देता है।
Termius फॉर्म-आधारित है। आप एक होस्ट एंट्री भरते हैं, फिर होस्ट डिटेल्स में जाकर उस होस्ट को SSH से Mosh पर स्विच करते हैं। Termius अपना खुद का mosh इम्प्लीमेंटेशन इस्तेमाल करता है और mosh 1.3.0 या उससे नए वर्ज़न को सपोर्ट करता है, इसलिए सर्वर पर mosh पैकेज का इंस्टॉल होना अभी भी आवश्यक है।
दोनों ही मामलों में key को app के भीतर ही जनरेट करें, और किसी मौजूदा प्राइवेट key को कभी भी फोन पर कॉपी न करें। App आपको पब्लिक हिस्सा दिखाता है, जो कि एक सिंगल लाइन होती है जिसे आप सर्वर पर ~/.ssh/authorized_keys में जोड़ते हैं। प्रति डिवाइस SSH keys और उन्हें रिवोक (revoke) करने का तरीका में नामकरण और रिवोक करने के स्टेप्स बताए गए हैं, जो लैपटॉप की तुलना में फोन के लिए अधिक महत्वपूर्ण हैं।
टर्मिनल app का अपना बायोमेट्रिक या पासकोड लॉक चालू रखें। इसके बिना, अनलॉक किया हुआ फोन तब तक आपके सर्वर के लिए एक खुला शेल (open shell) बना रहता है जब तक स्क्रीन चालू रहती है।
Android: Termux
pkg upgrade
pkg install openssh mosh
ssh-keygen -t ed25519 -C "pixel"
cat ~/.ssh/id_ed25519.pubTermux अपने स्वयं के रिपॉजिटरी में OpenSSH और mosh को पैकेज करता है, इसलिए ssh, ssh-keygen और mosh बिल्कुल वैसे ही काम करते हैं जैसे वे डेस्कटॉप पर करते हैं। प्रिंट की गई public key लाइन को सर्वर पर ~/.ssh/authorized_keys में जोड़ें, फिर mosh you@server के साथ कनेक्ट करें।
Android के ऑन-स्क्रीन कीबोर्ड में न तो Esc की और न ही Ctrl की होती है, और Claude Code को इन दोनों की आवश्यकता होती है। Termux अपनी खुद की की-रो (key row) दिखा सकता है। ~/.termux/termux.properties में एक लाइन डालें:
extra-keys = [['ESC','|','/','HOME','UP','END','PGUP'],['TAB','CTRL','ALT','LEFT','DOWN','RIGHT','PGDN']]फिर termux-reload-settings चलाएं और कीबोर्ड के ऊपर वह रो दिखाई देने लगेगी। यही रीलोड ~/.termux/font.ttf पर रखी गई monospace TrueType फॉन्ट को भी लागू कर देता है।
जब Termux बैकग्राउंड में होता है तो Android उसे रोक सकता है, लेकिन यहाँ आपको केवल फिर से कनेक्ट करने के अलावा कोई नुकसान नहीं होता है। सेशन और एजेंट सर्वर पर ही रहते हैं।
wifi से बाहर जाते ही terminal freeze क्यों हो जाता है, और mosh इसे कैसे ठीक करता है?
SSH connection एक TCP (transmission control protocol) connection है, और TCP connection की पहचान दोनों addresses और दोनों ports से होती है। wifi range से बाहर जाने पर phone को mobile network से नया address मिलता है, इसलिए पुराना connection किसी भी endpoint से match नहीं होता। इसकी कोई सूचना नहीं मिलती। TCP के हार मानने तक terminal केवल response देना बंद कर देता है, और फिर ssh client_loop: send disconnect: Broken pipe print करता है। Frozen session को तुरंत बंद करने के लिए Enter दबाएँ, फिर ~, और फिर .।
mosh (mobile shell) इस failure mode को हटा देता है। यह एक बार SSH का उपयोग करके login करता है और एक mosh-server process शुरू करता है, server द्वारा चुना गया UDP (user datagram protocol) port पढ़ता है, और SSH connection बंद कर देता है। इसके बाद दोनों sides shared session key से authenticated UDP datagrams exchange करते हैं, इसलिए session की पहचान आपके address से नहीं, बल्कि उस key से होती है। नया address मिलने पर session चलता रहता है। mosh आपकी typing को locally echo भी करता है और server की असहमति होने पर screen को फिर से paint करता है। इसी कारण slow mobile link पर भी यह usable रहता है।
mosh 60000 और 61000 के बीच UDP port का उपयोग करता है, इसलिए यह range खोलें:
sudo ufw allow 60000:61000/udp
sudo ufw statusufw से ports खोलना firewall configuration के बाकी हिस्से को समझाता है। यदि आपका provider अपने control panel में अलग network firewall देता है, तो वहाँ भी यही range जोड़ें, क्योंकि ufw rule उस filter को प्रभावित नहीं कर सकता जो machine के सामने लगा हो।
mosh की दो failures आम हैं। Login सफल होने के बाद hang होना और Nothing received from server on UDP port 60001. दिखना बताता है कि mosh-server शुरू हो गया, लेकिन client उस UDP port पर उससे संपर्क नहीं कर पा रहा है। आम तौर पर इसका अर्थ है कि phone और server के बीच कहीं firewall mosh range में UDP को block कर रहा है। mosh-server not found की सूचना देने वाला connection बताता है कि package server पर missing है या login PATH में मौजूद नहीं है। इसे install करें, या mosh --server=/usr/bin/mosh-server you@server से सीधे इसका path दें।
यदि server का login locale UTF-8 नहीं है, तो mosh-server client द्वारा दिए गए locale settings को आजमाता है और फिर जाँच करता है। यह केवल तब run करने से मना करता है जब उससे भी UTF-8 उपलब्ध नहीं होता और mosh-server needs a UTF-8 native locale to run. report होता है। पहले server पर locale ठीक करें।
locale
sudo locale-gen en_US.UTF-8
sudo update-locale LANG=en_US.UTF-8दोनों ends पर UTF-8 locale आवश्यक है, और mosh-server client द्वारा भेजी गई locale settings भी लागू करता है। यदि server ठीक करने के बाद भी error बना रहता है, तो phone के terminal app में भी LANG को UTF-8 value पर set करें। mosh के अपने FAQ में लिखा है कि mosh-client को भी इसे UTF-8 value पर set करने की आवश्यकता हो सकती है।
mosh दो काम नहीं करता। इसके README के अनुसार mosh X forwarding या SSH के non-interactive उपयोगों का support नहीं करता, जिनमें port forwarding भी शामिल है। इसलिए Claude Code द्वारा अभी शुरू किए गए web app का preview देखने के लिए plain ssh -L 8080:127.0.0.1:8080 you@server अभी भी आवश्यक है। यह केवल visible screen को synchronise करता है, इसलिए इसका अपना scrollback नहीं होता। यहाँ इस दूसरी सीमा से कोई समस्या नहीं होती, क्योंकि tmux scrollback बनाए रखता है: Ctrl-b, फिर [ copy mode में प्रवेश करता है; drag या arrow keys से scroll करें, और q से बाहर निकलें।
फ़ोन स्क्रीन को उपयोगी बनाएँ
Server पर ~/.tmux.conf की चार lines अधिकांश काम कर देती हैं:
set -g mouse on
set -g status-position top
set -g default-terminal "tmux-256color"
set -g history-limit 20000mouse on touch drag को scroll और tap को pane या window selection में बदलता है। इससे वे अधिकांश prefix keys बदल जाती हैं जिन्हें type करना असुविधाजनक होता है। status-position top tmux status line को निचले किनारे से हटा देता है, जहाँ on-screen keyboard और उसका suggestion bar उसे ढक देते हैं। default-terminal उस terminal name को स्थिर करता है जिसे tmux Claude Code को बताता है। इस line के बिना tmux वही name बताता है जिसे उसका build चुनता है। tmux 3.4 का configure script screen से शुरू होता है। इसके बाद वह क्रम से screen-256color, tmux और tmux-256color का परीक्षण करता है। कोई test fail होने पर पिछला चयन बना रहता है। इसलिए tmux-256color terminfo entry न मिलने वाला build अंततः tmux, screen-256color या साधारण screen पर पहुँच जाता है। इसके परिणामस्वरूप colours और box drawing आवश्यकता से अधिक खराब दिख सकते हैं।
चार keys सीख लें। इसके बाद बाकी काम सहज हो जाता है।
EscClaude की response के बीच में उसे interrupt करता है और पहले से किया गया काम बनाए रखता है। इसलिए यह वह key है जिसे आप अपने thumb के सबसे पास रखना चाहेंगे।Ctrl+Cचल रही operation को भी interrupt करता है। Idle prompt पर पहली press input clear करती है और दूसरी press Claude Code से बाहर निकलती है। इसलिए यह अधिक कठोर विकल्प है।Escको दो बार दबाने से draft prompt clear होता है। Empty prompt पर इसके बजाय rewind menu खुलता है।- Multi-line prompt के लिए
\type करें और फिर Enter दबाएँ। यह तरीका हर terminal में काम करता है। Shift+Enter केवल कुछ desktop terminals में native है, और mobile clients उनमें शामिल नहीं हैं।
Split panes से बचें। Portrait mode में phone की चौड़ाई लगभग 40 columns होती है। इसलिए vertical split में प्रत्येक pane के लिए 20 columns बचते हैं और हर diff noise में wrap हो जाता है। इसके बजाय tmux windows का उपयोग करें: Ctrl-b c एक window बनाता है और Ctrl-b n अगली window पर ले जाता है। यदि दूसरी window में अपना Claude Code session चलने लगे, तो दोनों sessions एक-दूसरे को सीधे काम सौंप सकते हैं। इससे touchscreen पर windows के बीच text copy करने की जरूरत नहीं रहती। जब diff को ठीक से पढ़ना हो, तो phone को sideways कर लें।
उस screen पर कितना text दिखाई देता है, इसे जानबूझकर निर्धारित करना उपयोगी है, क्योंकि output style हर reply के पीछे system prompt को संपादित करता है और छोटा output style phone पर scroll करने के लिए कम screenfuls देता है।
छोटी screen पर लंबा session मुख्यतः context की समस्या होता है। इसलिए train से पूरे दिन का काम चलाने से पहले Claude Code context window को manage करना पढ़ लेना उपयोगी है।
इसे सुरक्षित करें: केवल keys, passwords नहीं
अब phone में उस machine की key है जो आपका code edit करती है और commands चलाती है। Password authentication बंद करें। sshd_config को सीधे edit करने से drop-in file अधिक सुरक्षित है, क्योंकि Ubuntu का sshd_config ऊपर /etc/ssh/sshd_config.d/*.conf शामिल करता है और किसी setting के लिए मिली पहली value ही उपयोग की जाती है।
sudo tee /etc/ssh/sshd_config.d/00-phone.conf >/dev/null <<'EOF'
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
EOF
sudo sshd -t && sudo systemctl reload sshDrop-ins को filename order में पढ़ा जाता है। passwordauthentication no के लिए sudo sshd -T, kbdinteractiveauthentication no, pubkeyauthentication yes और permitrootlogin no जाँचें; इनमें से किसी एक को set करने वाली पहले की file को वहीं ठीक करना होगा, क्योंकि वही प्राथमिकता लेती है।
sshd -t config को parse करता है और valid होने पर कुछ print नहीं करता। इसे छोड़ने पर एक typo के कारण reload के दौरान sshd fail हो जाता है। अपनी working session खुली रखें और कुछ भी बंद करने से पहले दूसरी connection से test करें, क्योंकि गलत key से आपको Permission denied (publickey). मिलेगा और passwords बंद होने पर कोई fallback नहीं होगा। उस स्थिति में recovery path आपके provider का console है। यदि वह test connection fail हो जाए, तो ssh -v से reconnect करें और पहली session खुली रहते हुए समस्या ठीक करें, क्योंकि वह एक error message पाँच अलग faults को दर्शाता है और verbose output बताता है कि इनमें से कौन-सा fault मौजूद है।
हर device के लिए अपनी key रखें। Phone खो जाने पर ~/.ssh/authorized_keys से केवल एक line delete करनी होगी और आपका laptop काम करता रहेगा। एक shared key होने पर आपके स्वामित्व वाले हर device पर key बदलनी पड़ेगी।
यदि Ubuntu 24.04 पर SSH को किसी दूसरे port पर ले जाते हैं, तो ध्यान दें कि listener ssh.socket का है। systemd generator आपके SSH config की Port line से उस socket को बनाता है, इसलिए आपको ListenStream override की आवश्यकता नहीं है; लेकिन केवल ssh को restart करने पर server port 22 पर listening करता रहेगा। Port line को drop-in में रखें, नए port को ufw में allow करें, फिर sudo systemctl daemon-reload और उसके बाद sudo systemctl restart ssh.socket चलाएँ। VPS पर SSH को harden करना इसमें और बाकी attack surface में मदद करता है।
SSH के लिए fail2ban passwords बंद होने के बाद बहुत कम security जोड़ता है, क्योंकि guessed password को बिल्कुल स्वीकार नहीं किया जा सकता। इससे जो लाभ मिलता है, वह शांत logs हैं, जिससे वास्तविक login attempt आसानी से दिखाई देता है।
इससे मजबूत विकल्प SSH को public internet से दूर रखना है। Server को अपने host किए हुए WireGuard VPN के पीछे रखें, आवश्यकता होने पर phone पर tunnel चालू करें और sshd को केवल tunnel पर ListenAddress दें। mosh tunnel पर काम करता है, क्योंकि दोनों sides UDP का उपयोग करती हैं। एक बात ध्यान रखें: tunnel packet overhead जोड़ता है, इसलिए यदि बड़े transfers रुकने लगें, तो phone के WireGuard config में MTU (maximum transmission unit) कम करें।
इस तरीके से काम करने के बारे में एक अंतिम बात। Phone से आप ऐसी screen पर permission prompts approve करते हैं, जिसमें हर बार diff की कुछ ही lines दिखाई देती हैं। यह guardrails बंद करने का नहीं, उन्हें बनाए रखने का कारण है। यह भी जाँचें कि आपकी sessions किस permission mode में शुरू होती हैं, क्योंकि Claude Code v2.1.283 से interactive terminal sessions के लिए auto mode अब built-in starting mode है और यह working directory में file edits आपसे पूछे बिना कर देता है। VPS पर Claude Code को सुरक्षित रूप से चलाना उन user और directory limits को समझाता है जिन्हें touchscreen को आपका मुख्य प्रवेश माध्यम बनाने से पहले set करना उपयोगी है।
पुनः attach करने पर कुछ गलत दिखे
tmux attach का output no server running on /tmp/tmux-1000/default दिखने का अर्थ है कि tmux को उस socket पर कोई server नहीं मिला। आम तौर पर server समाप्त हो चुका होता है, जिसका लगभग हमेशा अर्थ है कि machine reboot हुई है। uptime से जाँच करें। यदि machine reboot नहीं हुई और pgrep tmux में अभी भी server दिख रहा है, तो इसका अकेला अर्थ यह नहीं है कि socket file delete हो गई है, क्योंकि -L और -S flags server को किसी दूसरे socket पर listen करने देते हैं। यदि आपने tmux को इनमें से किसी एक के साथ शुरू किया था, तो tmux attach में वही flag दें। यदि socket वास्तव में गलती से हट गई है, तो pkill -USR1 tmux server से उसे फिर बनाने के लिए कहता है। tmux manual के अनुसार, कोई parent directory missing होने पर यह विफल होता है। Automatic security updates से आने वाले kernel updates प्रभावी होने के लिए reboot मांगते हैं, लेकिन unattended-upgrades केवल तभी अपने-आप reboot करता है जब Unattended-Upgrade::Automatic-Reboot enabled हो; इसका default false है। Reboot की गई machine में कोई tmux session नहीं होता, इसलिए किसी भी Claude Code run को ऐसी प्रक्रिया मानें जिसे आप फिर शुरू कर सकते हैं।
can't find session: claude अलग स्थिति है। tmux server चल रहा है, लेकिन वह नाम मौजूद नहीं है। tmux ls से देखें कि कौन-से नाम मौजूद हैं।
यदि attach करने पर वहाँ Claude Code के स्थान पर सामान्य shell prompt दिखे, तो process session समाप्त हुए बिना बंद हो गया है। dmesg -T | tail में Out of memory: Killed process 4821 (claude) जैसी line देखें। इससे out-of-memory kill की पुष्टि होती है। Prompt के ऊपर shell के scrollback में अन्य exit messages भी देखें।
यदि window गलत size में लौटे, किनारे पर कटी हुई दिखे या उसके आसपास खाली जगह हो, तो इसका अर्थ है कि दो clients अलग-अलग sizes पर attached हैं। Default रूप से tmux 3.4 सबसे हाल की activity वाले client के अनुसार window का size तय करता है (window-size latest)। इसलिए 200 columns चौड़े आकार पर अभी भी attached आपका laptop और 40 columns वाला phone बारी-बारी से उसका size बदलते हैं। Attach करते समय दूसरे clients को detach करें: tmux attach -d -t claude.
FAQ
क्या मैं VPS के बजाय सीधे phone पर Claude Code चला सकता हूँ?
Terminal CLI Android या iOS पर समर्थित नहीं है। October 2026 तक समर्थित platforms macOS, Windows, Ubuntu 20.04 या नया, Debian 10 या नया, और Alpine 3.19 या नया हैं, जिनमें 4 GB या अधिक RAM हो। Android और iOS इस सूची में नहीं हैं। Phone अपने apps को sleep कर देता है और network address लगातार बदलता रहता है, जिसे लंबा agent run सहन नहीं कर सकता। इसे server पर चलाएँ और phone को display की तरह इस्तेमाल करें।
क्या app बंद करने या signal खोने पर session जारी रहता है?
हाँ, और यह काम दो अलग components करते हैं। tmux server पर process को चलाए रखता है, इसलिए connection समाप्त होने पर कुछ बंद नहीं होता। mosh स्वयं connection को address बदलने के दौरान बनाए रखता है, इसलिए wifi से mobile data पर switch करने पर reconnect भी नहीं करना पड़ता। Plain SSH और tmux के बिना, connection टूटने पर SIGHUP भेजा जाता है और Claude Code task के बीच में रुक जाता है।
mosh connect होने के बाद कुछ क्यों नहीं दिखाता?
सफल login के बाद Nothing received from server on UDP port 60001. के साथ hang होना बताता है कि client उस UDP port पर mosh-server तक नहीं पहुँच सकता। आम तौर पर इसका अर्थ है कि firewall UDP 60000 से 61000 तक block कर रहा है। यह range ufw में जोड़ें। इसे provider के network firewall में भी जोड़ें, क्योंकि अधिकांश panels में यह अलग control होता है। यदि mosh इसके बजाय बताता है कि mosh-server नहीं मिला, तो server पर package मौजूद नहीं है या उसके login PATH में यह शामिल नहीं है। इसे sudo apt install mosh से install करें या mosh --server=/usr/bin/mosh-server you@server का उपयोग करें।
Esc key के बिना keyboard से Claude Code को कैसे interrupt करूँ?
एक key row जोड़ें। Termux में ~/.termux/termux.properties के अंदर extra-keys से एक row configure की जा सकती है। Termius और Blink दोनों settings में edit करने योग्य row देते हैं। Esc चल रहे response को interrupt करता है और अब तक किया गया work बनाए रखता है। Ctrl+C भी interrupt करता है, लेकिन idle prompt पर इसे दो बार दबाने से Claude Code exit हो जाता है। इसलिए पहले Esc का उपयोग करें।
क्या इस काम के लिए SSH को internet पर खोलना पर्याप्त रूप से सुरक्षित है?
Password authentication बंद होने पर सफल होने वाला एकमात्र credential ऐसी key होती है जो आपके devices से बाहर नहीं जाती। ऐसे machine के लिए जिसे आप फिर से rebuild कर सकते हैं, यह उचित risk है। प्रत्येक device के लिए अलग key दें, ताकि phone खोने पर authorized_keys में केवल एक line हटानी पड़े। यदि आप public port पर बिल्कुल भी response नहीं देना चाहते, तो box को WireGuard के पीछे रखें और sshd को tunnel address पर listen करने दें।