فون سے Claude Code کیسے چلائیں: SSH اور tmux
Claude Code فون پر نہیں، VPS کے tmux میں چلتا ہے۔ SSH keys، flaky mobile data کے لیے mosh، tmux attach اور ضروری keyboard fixes کی مکمل رہنمائی۔
اپنے فون سے Claude Code: یہ حقیقت میں کیسے کام کرتا ہے
اپنے فون سے Claude Code استعمال کرنے کے لیے کوئی موبائل ایپ موجود نہیں ہوتی۔ Claude Code ایک VPS (virtual private server) پر چلتا ہے، ایک ایسے tmux session کے اندر جو کھلا رہتا ہے، اور آپ کا فون اس session سے SSH (secure shell) connection قائم کرتا ہے جب تک آپ اسے دیکھ رہے ہوتے ہیں۔ ایپ بند کرنے کے بعد بھی agent کام کرتا رہتا ہے، کیونکہ یہ process کبھی فون پر چلا ہی نہیں تھا۔
یہ تقسیم پورے design کی بنیاد ہے۔ فون کا operating system کسی ایپ پر منتقل ہونے کے چند seconds بعد اسے suspend کر دیتا ہے، اس لیے فون پر شروع کیا گیا کوئی طویل کام رک جاتا ہے۔ اس کے علاوہ، جب آپ wifi سے mobile data پر جاتے ہیں تو فون کو ہر بار ایک نیا network address ملتا ہے۔ جب process server پر چلتا ہے اور فون صرف screen دکھاتا ہے تو دونوں مسائل ختم ہو جاتے ہیں۔
server پر آپ کو چار چیزیں درکار ہیں: session برقرار رکھنے کے لیے tmux، داخل ہونے کے لیے SSH keys، network تبدیلیوں کے لیے mosh، اور خود Claude Code۔ فون کی طرف ایک terminal app کافی ہے، جس میں ایک ایسا key row موجود ہو جس تک آپ رسائی حاصل کر سکیں۔
VPS پر درکار چیزیں
SSH اور tmux کے حصوں کے لیے ایک چھوٹا Ubuntu 24.04 سرور کافی ہے۔ Claude Code کے لیے زیادہ وسائل درکار ہیں۔ July 2026 تک سرکاری تقاضوں کے مطابق x64 یا ARM64 processor پر Ubuntu 20.04 یا اس کے بعد کا ورژن اور کم از کم 4 GB RAM درکار ہے۔ 1 GB plan اسے install کر دیتا ہے، لیکن load کے دوران kernel اس process کو ختم کر دیتا ہے۔ Claude Code کے لیے paid Claude account (Pro، Max، Team یا Enterprise) یا API access والا Console account بھی درکار ہے، کیونکہ مفت Claude.ai plan میں یہ شامل نہیں ہے۔
سرور کو sudo والے عام user کے طور پر configure کریں، root کے طور پر نہیں۔ اگر سرور نیا ہے تو پہلے نئے 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 ایسی line دکھاتا ہے جیسے 2.1.211 (Claude Code)۔ اگر یہ 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 سرور پر محفوظ رہیں گے۔
Claude Code کو tmux کے اندر شروع کریں تاکہ کنکشن منقطع ہونے سے یہ بند نہ ہو
tmux new -s claude
cd ~/projects/api
claudeCtrl-b دبا کر detach کریں، پھر d دبائیں۔ tmux [detached (from session claude)] دکھاتا ہے اور آپ کو دوبارہ shell میں لے آتا ہے۔ اب ایپ بند کریں، سگنل ختم ہو جائے، یا فون جیب میں رکھ دیں۔ pane چلتا رہے گا۔
tmux ls
tmux attach -t claudetmux ls ہر session کے لیے ایک سطر دکھاتا ہے، مثلاً claude: 1 windows (created Thu Jul 30 09:14:02 2026)۔ tmux attach -t claude آپ کو بالکل اسی جگہ واپس لے آتا ہے جہاں آپ نے کام چھوڑا تھا، بشمول ادھوری edit کے۔
یہ اس لیے کام کرتا ہے کہ tmux اپنا الگ server process چلاتا ہے، اور آپ کا shell اور Claude Code sshd کے بجائے اسی server کے child processes ہوتے ہیں۔ جب SSH کنکشن ختم ہوتا ہے تو kernel اس کنکشن سے منسلک processes کو hangup signal، SIGHUP، بھیجتا ہے، لیکن tmux server ان processes میں شامل نہیں ہوتا۔ tmux کے بغیر، کنکشن ختم کرنے والی وہی screen lock Claude Code کو tool call کے دوران روک دیتی ہے۔ VPS پر tmux کے اندر Claude Code چلانا میں session layout کی مزید تفصیل موجود ہے۔
tmux کو server پر چلائیں، فون پر نہیں۔ پہلے سے attached session کے اندر tmux لکھنے سے sessions should be nested with care, unset $TMUX to force ظاہر ہوتا ہے، اور اسے زبردستی چلانے پر آپ کو دو prefix keys کے درمیان الجھنا پڑتا ہے۔
ہر login پر خودکار طور پر 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 ہو جاتا ہے، اور اگر موجود نہ ہو تو اسے بنا دیتا ہے۔ اس طرح دونوں صورتوں کے لیے ایک ہی command کافی ہے۔ exec login shell کو tmux سے replace کر دیتا ہے، اس لیے tmux سے نکلنے پر آپ کو سادہ prompt نہیں ملتا بلکہ connection بند ہو جاتا ہے۔ جب plain shell درکار ہو تو file کو skip کریں: ssh you@server -t "bash --noprofile"۔
اسے ~/.profile میں شامل کریں، ~/.bashrc میں نہیں۔ ~/.bashrc non-interactive sessions کے لیے بھی چلتا ہے، جس سے file transfers ناکام ہو جاتے ہیں: scp اور sftp غیر متوقع output کو protocol data سمجھ کر Received message too long کے ساتھ fail ہو جاتے ہیں۔ ~/.profile صرف login shells کے لیے چلتا ہے، اور interactive SSH session کے لیے یہی مطلوب ہے۔
~/.profile وہ جگہ بھی ہے جہاں Ubuntu، ~/.local/bin کو PATH میں شامل کرتا ہے۔ اگر login کے فوراً بعد claude کام کرے، لیکن tmux کے اندر موجود shell command not found بتائے، تو اس کی وجہ یہی ترتیب ہے۔ اس لیے اوپر دیے گئے طریقے کے مطابق tmux کو login shell سے شروع کریں، نہ کہ ایسی script سے جو profile کو skip کرتی ہو۔
iOS: Termius یا Blink Shell
دونوں ایپس SSH اور mosh استعمال کرتی ہیں اور keys ایپ کے اندر محفوظ کرتی ہیں۔ فرق interface کا ہے۔
Blink Shell command-driven ہے۔ اس کے prompt پر ssh you@server یا mosh you@server درج کریں، بالکل desktop terminal کی طرح۔ Settings کھولنے کے لیے config درج کریں، اور Keys section آپ کے لیے key pair بناتا ہے۔
Termius form-driven ہے۔ پہلے host entry مکمل کریں، پھر host details میں اس host کو SSH سے Mosh پر تبدیل کریں۔ Termius اپنی mosh implementation فراہم کرتا ہے اور mosh 1.3.0 یا اس کے بعد کے versions کو support کرتا ہے، اس لیے server پر پھر بھی mosh package install ہونا ضروری ہے۔
دونوں صورتوں میں key ایپ کے اندر generate کریں، اور موجودہ private key کو فون پر کبھی copy نہ کریں۔ ایپ آپ کو public half دکھاتی ہے۔ یہی وہ واحد line ہے جسے server پر ~/.ssh/authorized_keys میں شامل کرنا ہوتا ہے۔ ہر device کے لیے SSH keys اور کسی ایک کو revoke کرنے کا طریقہ میں naming اور revoke کرنے کا مرحلہ بیان کیا گیا ہے۔ یہ فون کے لیے laptop کی نسبت زیادہ اہم ہے۔
Terminal ایپ کا اپنا biometric یا passcode lock فعال کریں۔ اس کے بغیر unlocked فون، screen کے روشن رہنے تک، آپ کے server پر ایک کھلا shell ہوتا ہے۔
Android: Termux
pkg upgrade
pkg install openssh mosh
ssh-keygen -t ed25519 -C "pixel"
cat ~/.ssh/id_ed25519.pubTermux اپنے repository میں OpenSSH اور mosh کے packages فراہم کرتا ہے، اس لیے ssh، ssh-keygen اور mosh desktop کی طرح کام کرتے ہیں۔ دکھائی گئی public key line کو server پر ~/.ssh/authorized_keys میں شامل کریں، پھر mosh you@server کے ذریعے connect کریں۔
Android کے on-screen keyboard میں Esc key اور Ctrl key نہیں ہوتیں، جبکہ Claude Code کو دونوں درکار ہیں۔ Termux اپنی key row دکھا سکتا ہے۔ ~/.termux/termux.properties میں ایک line شامل کریں:
extra-keys = [['ESC','|','/','HOME','UP','END','PGUP'],['TAB','CTRL','ALT','LEFT','DOWN','RIGHT','PGDN']]پھر termux-reload-settings چلائیں، اور keyboard کے اوپر یہ row ظاہر ہو جائے گی۔ اسی reload سے ~/.termux/font.ttf میں رکھی گئی monospace TrueType font بھی load ہو جاتی ہے۔
Android، Termux کے background میں ہونے پر اسے روک سکتا ہے، لیکن یہاں اس سے صرف دوبارہ connect کرنا پڑتا ہے۔ Session اور agent server پر چل رہے ہوتے ہیں۔
وائی فائی سے دور ہونے پر ٹرمینل کیوں رک جاتا ہے، اور mosh کیا درست کرتا ہے؟
SSH کنکشن TCP (transmission control protocol) کنکشن ہوتا ہے، اور TCP کنکشن کی شناخت دونوں addresses اور دونوں ports سے ہوتی ہے۔ وائی فائی کی حدود سے باہر جانے پر فون کو mobile network سے نیا address ملتا ہے، اس لیے پرانا کنکشن کسی بھی جانب match نہیں ہوتا۔ اس کی کوئی اطلاع نہیں ملتی۔ TCP کے ناکام ہونے تک ٹرمینل صرف جواب دینا بند کر دیتا ہے، پھر ssh client_loop: send disconnect: Broken pipe دکھاتا ہے۔ منجمد session کو فوراً ختم کرنے کے لیے پہلے Enter دبائیں، پھر ~، پھر .۔
mosh (mobile shell) اس failure mode کو ختم کرتا ہے۔ یہ login کرنے اور mosh-server process شروع کرنے کے لیے ایک بار SSH استعمال کرتا ہے، server کے منتخب کردہ UDP (user datagram protocol) port کو پڑھتا ہے، اور SSH کنکشن بند کر دیتا ہے۔ اس کے بعد دونوں سرے shared session key سے authenticated UDP datagrams کا تبادلہ کرتے ہیں، اس لیے session کی شناخت آپ کے address کے بجائے اس key سے ہوتی ہے۔ نیا address ملنے کے بعد session جاری رہتا ہے۔ mosh آپ کی typing مقامی طور پر بھی echo کرتا ہے اور server کے مختلف نتیجے کی صورت میں screen دوبارہ بناتا ہے، اسی لیے یہ سست mobile link پر بھی قابل استعمال رہتا ہے۔
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 کامیاب ہونے کے بعد رک جائے اور Nothing received from server on UDP port 60001. دکھائے، تو اس کا مطلب ہے کہ UDP range فون اور server کے درمیان کسی جگہ blocked ہے۔ اگر کنکشن mosh-server not found کی اطلاع دے، تو server پر package موجود نہیں ہے یا login PATH میں شامل نہیں ہے۔ اسے install کریں، یا mosh --server=/usr/bin/mosh-server you@server کے ذریعے براہ راست اس کی location بتائیں۔
mosh اس وقت بھی چلنے سے انکار کرتا ہے جب login locale UTF-8 نہ ہو، اور یہ پیغام دیتا ہے: mosh-server needs a UTF-8 native locale to run. locale کو phone کے بجائے server پر درست کریں۔
locale
sudo locale-gen en_US.UTF-8
sudo update-locale LANG=en_US.UTF-8mosh دو کام نہیں کرتا۔ اس کے README کے مطابق mosh X forwarding یا SSH کے non-interactive استعمالات، بشمول port forwarding، support نہیں کرتا۔ اس لیے Claude Code کی جانب سے ابھی شروع کی گئی web app کا preview دیکھنے کے لیے اب بھی سادہ ssh -L 8080:127.0.0.1:8080 you@server درکار ہے۔ mosh صرف visible screen کو synchronise کرتا ہے، اس لیے اس کا اپنا scrollback نہیں ہوتا۔ یہاں اس دوسری حد سے کوئی مسئلہ نہیں ہوتا، کیونکہ tmux scrollback برقرار رکھتا ہے: Ctrl-b، پھر [ copy mode شروع کرتا ہے؛ drag یا arrow keys سے scroll کریں، اور q سے باہر نکلیں۔
فون کی اسکرین کو قابلِ استعمال بنائیں
سرور پر ~/.tmux.conf میں موجود چار سطریں زیادہ تر کام کرتی ہیں:
set -g mouse on
set -g status-position top
set -g default-terminal "tmux-256color"
set -g history-limit 20000mouse on ٹچ سے drag کرنے کو scroll میں اور tap کو pane یا window منتخب کرنے میں تبدیل کرتا ہے۔ اس طرح وہ زیادہ تر prefix keys استعمال نہیں کرنی پڑتیں جنہیں ٹائپ کرنا مشکل ہوتا ہے۔ status-position top tmux کی status line کو نچلے کنارے سے ہٹا دیتا ہے، جہاں on-screen keyboard اور اس کا suggestion bar اسے ڈھانپ دیتے ہیں۔ default-terminal اہم ہے، کیونکہ بصورتِ دیگر tmux Claude Code کو screen terminal بتاتا ہے، اور رنگ اور box drawing ضرورت سے زیادہ خراب دکھائی دیتے ہیں۔ اگر اس کے بعد tmux missing or unsuitable terminal: tmux-256color کے ساتھ شروع ہونے سے انکار کرے تو terminfo entry موجود نہیں ہے: sudo apt install ncurses-term۔
چار keys سیکھ لیں، باقی استعمال آسان ہو جاتا ہے۔
EscClaude کے دورانِ جواب کو روک دیتا ہے اور اب تک مکمل کیا گیا کام برقرار رکھتا ہے، اس لیے یہ وہ key ہے جو آپ کے انگوٹھے کے سب سے قریب ہونی چاہیے۔Ctrl+Cجاری operation کو بھی روک دیتا ہے۔ idle prompt پر پہلی press input صاف کرتی ہے اور دوسری press Claude Code سے باہر نکلتی ہے، اس لیے یہ نسبتاً سخت طریقہ ہے۔Escدو بار دبانے سے draft prompt صاف ہو جاتا ہے، جبکہ empty prompt پر یہ اس کے بجائے rewind menu کھولتا ہے۔- multi-line prompt کے لیے
\ٹائپ کریں اور پھر Enter دبائیں۔ یہ طریقہ ہر terminal میں کام کرتا ہے۔ Shift+Enter صرف desktop terminals کی ایک مختصر فہرست میں native طور پر دستیاب ہے، اور mobile clients اس فہرست میں شامل نہیں ہیں۔
split panes سے گریز کریں۔ portrait حالت میں فون کی چوڑائی تقریباً 40 columns ہوتی ہے، اس لیے vertical split ہر pane کے لیے 20 columns چھوڑتا ہے اور ہر diff اتنی بار wrap ہوتا ہے کہ متن بےترتیب دکھائی دیتا ہے۔ اس کے بجائے tmux windows استعمال کریں: Ctrl-b c ایک window بناتا ہے اور Ctrl-b n اگلی window پر لے جاتا ہے۔ اگر دوسری window میں اس کا اپنا Claude Code session چلنے لگے تو دونوں sessions ایک دوسرے کو براہِ راست کام دے سکتے ہیں، اور آپ کو touchscreen پر windows کے درمیان متن copy کرنے کی ضرورت نہیں رہتی۔ جب diff کو درست طور پر پڑھنا ہو تو فون کو sideways کر لیں۔
اس اسکرین پر کتنا متن دکھائی دے، یہ دانستہ طور پر طے کرنا مفید ہے، کیونکہ output style ہر جواب کے پیچھے موجود system prompt میں ترمیم کرتا ہے اور مختصر style کا مطلب ہے کہ فون پر اسکرول کرتے وقت کم اسکرینیں عبور کرنی پڑیں گی۔
چھوٹی اسکرین پر طویل session کا بنیادی مسئلہ عموماً context ہوتا ہے، اس لیے train سے پورا دن کام چلانے کی کوشش سے پہلے Claude Code context window کا انتظام پڑھ لینا مفید ہے۔
اسے محفوظ کریں: صرف keys، passwords نہیں
اب phone کے پاس ایسی machine کی key موجود ہے جو آپ کے code میں ترمیم اور commands چلاتی ہے۔ Password authentication بند کریں۔ sshd_config میں براہ راست ترمیم کرنے کے بجائے drop-in file استعمال کرنا زیادہ محفوظ ہے، کیونکہ Ubuntu کی sshd_config اوپر /etc/ssh/sshd_config.d/*.conf شامل کرتی ہے، اور کسی setting کے لیے جو پہلی value ملتی ہے وہی استعمال ہوتی ہے۔
sudo tee /etc/ssh/sshd_config.d/99-phone.conf >/dev/null <<'EOF'
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
EOF
sudo sshd -t && sudo systemctl reload sshsshd -t config کو parse کرتا ہے اور config درست ہونے پر کچھ بھی print نہیں کرتا۔ اسے چھوڑنے پر ایک typo کی وجہ سے reload کے دوران sshd fail ہو سکتا ہے۔ اپنا موجودہ session کھلا رکھیں اور کچھ بھی بند کرنے سے پہلے دوسری connection سے test کریں، کیونکہ غلط key اب آپ کو Permission denied (publickey). دے گی اور passwords بند ہونے کی صورت میں کوئی fallback نہیں ہوگا۔ اس مرحلے پر recovery کا طریقہ provider کا console ہے۔
ہر device کے لیے الگ key دیں۔ اس طرح phone گم ہونے پر ~/.ssh/authorized_keys سے صرف ایک line حذف کرنا ہوگی، جبکہ laptop کام کرتا رہے گا۔ ایک ہی shared key استعمال کرنے کی صورت میں اپنے ہر device پر key تبدیل کرنا پڑے گی۔
اگر Ubuntu 24.04 پر SSH کو کسی دوسرے port پر منتقل کریں تو یاد رکھیں کہ listener کا تعلق ssh.socket سے ہے، اس لیے صرف Port line شامل کرنے سے کچھ تبدیل نہیں ہوگا۔ sudo systemctl edit ssh.socket چلائیں، default کو خالی ListenStream= سے clear کریں، پھر اگلی line پر اپنا port مقرر کریں۔ VPS پر SSH کو harden کرنا اس عمل اور باقی attack surface کا احاطہ کرتا ہے۔
SSH کے لیے fail2ban passwords بند ہونے کے بعد بہت کم security فراہم کرتا ہے، کیونکہ guessed password کسی صورت قبول نہیں کیا جا سکتا۔ البتہ یہ کم شور والے logs فراہم کرتا ہے، جس سے login کی حقیقی کوشش آسانی سے نظر آ جاتی ہے۔
زیادہ مضبوط طریقہ یہ ہے کہ SSH کو public internet سے دور رکھا جائے۔ Server کو اپنے زیرِ انتظام WireGuard VPN کے پیچھے رکھیں، phone پر ضرورت کے وقت tunnel فعال کریں، اور sshd کو صرف tunnel پر ListenAddress دیں۔ mosh tunnel کے ذریعے کام کرتا ہے کیونکہ دونوں اطراف UDP استعمال کرتے ہیں۔ ایک بات ذہن میں رکھیں: tunnel سے packet overhead بڑھتا ہے، اس لیے اگر بڑی transfers رکنے لگیں تو phone کی WireGuard config میں MTU (maximum transmission unit) کم کریں۔
اس طریقے سے کام کرنے کے بارے میں آخری بات۔ Phone سے آپ ایسے screen پر permission prompts منظور کرتے ہیں جو ایک وقت میں diff کی صرف چند lines دکھاتی ہے۔ یہ guardrails بند کرنے کی وجہ نہیں، بلکہ انہیں برقرار رکھنے کی وجہ ہے۔ VPS پر Claude Code محفوظ طریقے سے چلانا ان user اور directory limits کا احاطہ کرتا ہے جو touchscreen کو اپنے بنیادی access method بنانے سے پہلے مقرر کرنا مفید ہیں۔
دوبارہ attach کرنے کے بعد اگر کچھ غلط ہو
tmux attach کا no server running on /tmp/tmux-1000/default پرنٹ ہونا اس بات کی علامت ہے کہ tmux server ختم ہو چکا ہے، اور تقریباً ہمیشہ اس کا مطلب ہوتا ہے کہ machine reboot ہو گئی ہے۔ uptime سے تصدیق کریں۔ خودکار security updates کے ذریعے ہونے والی kernel updates machine کو reboot کر دیتی ہیں۔ Reboot شدہ machine میں tmux session نہیں ہوتا، اس لیے Claude Code کے ہر run کو دوبارہ شروع کیے جانے کے قابل سمجھیں۔
can't find session: claude کا معاملہ مختلف ہے۔ tmux server چل رہا ہے، لیکن وہ نام موجود نہیں۔ tmux ls سے معلوم کریں کہ کون سے sessions موجود ہیں۔
اگر attach کرنے پر وہاں Claude Code کی جگہ سادہ shell prompt نظر آئے تو process ختم ہو چکا ہے، لیکن session ختم نہیں ہوا۔ dmesg -T | tail میں Out of memory: Killed process 4821 (claude) جیسی line تلاش کریں۔ 4 GB کی requirement سے کم memory والی machine بڑے edit کے دوران ایسا کرتی ہے۔ اگر ایسی line موجود نہ ہو تو Claude Code خود بند ہوا ہے، اور prompt کے اوپر shell کا scrollback وجہ دکھاتا ہے۔
اگر window دوبارہ بہت چھوٹی نظر آئے اور اس کے اردگرد خالی جگہ ہو تو اس کا مطلب ہے کہ دو clients مختلف sizes کے ساتھ attached ہیں، کیونکہ tmux window کا size سب سے چھوٹے attached client کے مطابق رکھتا ہے۔ آپ کا laptop session کو اب بھی 200 columns چوڑا رکھے ہوئے ہے، جبکہ phone 40 columns مانگ رہا ہے۔ Attach کرتے وقت دوسرے clients کو detach کریں: tmux attach -d -t claude۔
FAQ
کیا میں Claude Code کو VPS کے بجائے خود فون پر چلا سکتا ہوں؟
نہیں۔ جولائی 2026 تک معاونت یافتہ پلیٹ فارمز macOS، Windows، Ubuntu 20.04 یا اس کے بعد کے ورژن، Debian 10 یا اس کے بعد کے ورژن، اور Alpine 3.19 یا اس کے بعد کے ورژن ہیں، اور کم از کم 4 GB RAM درکار ہے۔ Android اور iOS اس فہرست میں شامل نہیں ہیں۔ فون اپنی ایپس کو sleep کر دیتا ہے اور network address بھی مسلسل تبدیل کرتا رہتا ہے، جسے طویل agent run برداشت نہیں کر سکتا۔ اسے server پر چلائیں اور فون کو display کے طور پر استعمال کریں۔
کیا app بند کرنے یا signal ختم ہونے کے بعد session برقرار رہتا ہے؟
ہاں، اور یہ کام دو الگ اجزا کرتے ہیں۔ tmux process کو server پر چلتا رکھتا ہے، اس لیے connection ختم ہونے پر کچھ بند نہیں ہوتا۔ mosh خود connection کو address تبدیل ہونے کے باوجود برقرار رکھتا ہے، اس لیے wifi سے mobile data پر منتقل ہونے سے reconnect بھی ضروری نہیں ہوتا۔ plain SSH کے ساتھ، اور tmux کے بغیر، connection ختم ہونے پر SIGHUP بھیجا جاتا ہے اور Claude Code کام کے دوران رک جاتا ہے۔
mosh connect ہونے کے بعد کچھ دکھائی کیوں نہیں دیتا؟
اگر login کامیاب ہو جائے اور پھر Nothing received from server on UDP port 60001. کے ساتھ رک جائے تو UDP 60000 سے 61000 تک ports کھلے نہیں ہیں۔ یہ range ufw میں شامل کریں، اور اپنے provider کے network firewall میں بھی شامل کریں؛ زیادہ تر panels میں یہ الگ control ہوتا ہے۔ اگر mosh اس کے بجائے بتائے کہ mosh-server نہیں ملا تو server پر package موجود نہیں ہے: sudo apt install mosh۔
Esc key کے بغیر keyboard سے Claude Code کو کیسے interrupt کروں؟
ایک key row شامل کریں۔ Termux میں ~/.termux/termux.properties کے اندر extra-keys کے ذریعے یہ row configure کی جا سکتی ہے، جبکہ Termius اور Blink دونوں ایسی row فراہم کرتے ہیں جسے settings میں edit کیا جا سکتا ہے۔ Esc چلتے ہوئے response کو interrupt کرتا ہے اور پہلے سے مکمل کیا گیا کام برقرار رکھتا ہے۔ Ctrl+C بھی interrupt کرتا ہے، لیکن idle prompt پر اسے دو بار دبانے سے Claude Code بند ہو جاتا ہے، اس لیے پہلے Esc استعمال کریں۔
کیا اس مقصد کے لیے SSH کو internet پر کھولنا کافی حد تک محفوظ ہے؟
Password authentication بند ہونے کی صورت میں کامیاب ہونے والی واحد credential وہ key ہے جو آپ کے devices سے باہر نہیں جاتی۔ ایسی machine کے لیے، جسے آپ دوبارہ rebuild کر سکتے ہوں، یہ قابل قبول risk ہے۔ ہر device کے لیے الگ key بنائیں، تاکہ فون گم ہونے پر authorized_keys میں صرف ایک line ہٹانی پڑے۔ اگر آپ public port پر جواب دینا ہی نہیں چاہتے تو machine کو WireGuard کے پیچھے رکھیں اور sshd کو tunnel address پر listen کرنے دیں۔