ফোন থেকে Claude Code চালানোর সহজ সেটআপ
Claude Code ফোনে নয়, VPS-এর tmux-এ চলে। SSH keys, mobile data-র জন্য mosh, tmux attach এবং জরুরি keyboard fixes দিয়ে নির্ভরযোগ্য সেটআপ করুন।
আপনার ফোন থেকে Claude Code: এটি আসলে যেভাবে কাজ করে
আপনার ফোন থেকে Claude Code কোনো মোবাইল অ্যাপ নয়। Claude Code একটি VPS (virtual private server)-এ চলে, খোলা থাকা একটি tmux সেশনের মধ্যে। আপনার ফোন সেই সেশনে SSH (secure shell) সংযোগ খোলে এবং আপনি সেটি দেখার সময় সংযোগ বজায় রাখে। অ্যাপ বন্ধ করলেও agent কাজ চালিয়ে যায়, কারণ process-টি কখনো ফোনে চলেনি।
এই বিভাজনই পুরো নকশার ভিত্তি। ফোনের operating system কোনো অ্যাপ থেকে সরে যাওয়ার কয়েক সেকেন্ড পর সেটিকে স্থগিত করে। তাই ফোনে শুরু করা যেকোনো দীর্ঘ কাজ বন্ধ হয়ে যায়। এছাড়া আপনি 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 প্রসেসরে Ubuntu 20.04 বা পরবর্তী সংস্করণ, এবং 4 GB বা তার বেশি RAM। 1 GB প্ল্যানে এটি ইনস্টল হয়, কিন্তু লোডের সময় kernel প্রক্রিয়াটি বন্ধ করে দেয়। Claude Code ব্যবহারের জন্য একটি paid Claude account (Pro, Max, Team অথবা Enterprise) অথবা API access-সহ একটি Console account-ও প্রয়োজন, কারণ বিনামূল্যের Claude.ai প্ল্যানে এটি অন্তর্ভুক্ত নয়।
সার্ভারটি root হিসেবে নয়, sudo-সুবিধাসহ একটি সাধারণ user হিসেবে প্রস্তুত করুন। সার্ভারটি নতুন হলে আগে নতুন VPS-এ প্রথম দশ মিনিটের কাজ সম্পন্ন করুন, কারণ user এবং firewall তৈরি হয়ে গেলে এই গাইডের পরের SSH পরিবর্তনগুলো করা সহজ হয়।
sudo apt update && sudo apt install -y tmux mosh
curl -fsSL https://claude.ai/install.sh | bash
claude --versionইনস্টলারটি binary-টি ~/.local/bin/claude-এ রাখে এবং claude --version এমন একটি লাইন দেখায়: 2.1.211 (Claude Code)। এটি command not found দেখালে, ওই directory এখনও আপনার PATH-এ নেই: log out করুন, আবার log in করুন, তারপর command -v claude দিয়ে পরীক্ষা করুন। claude doctor session শুরু না করেই installation এবং settings-এর diagnostic তথ্য দেখায়।
ফোনের ওপর নির্ভর করার আগে এখন একটি laptop থেকে একবার log in করুন। একটি project directory-তে claude চালান এবং login prompt অনুসরণ করুন। এই প্রক্রিয়ায় browser-এ একটি URL খুলে একটি code terminal-এ ফিরিয়ে দিতে বলা হয়। ফোনের ছোট screen-এ এর জন্য দুটি app-এর মধ্যে বারবার পরিবর্তন করা ধীরগতির। বাস্তব keyboard ব্যবহার করে কাজটি একবার সম্পন্ন করুন; credentials সার্ভারেই থেকে যাবে।
tmux-এর ভিতরে Claude Code চালু করুন, যাতে সংযোগ বিচ্ছিন্ন হলেও এটি বন্ধ না হয়
tmux new -s claude
cd ~/projects/api
claudeCtrl-b দিয়ে detach করুন, তারপর d চাপুন। tmux [detached (from session claude)] দেখায় এবং আপনাকে shell-এ ফিরিয়ে দেয়। এখন app বন্ধ করুন, signal হারান, অথবা ফোনটি পকেটে রাখুন। 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 process হিসেবে চলে। SSH সংযোগ শেষ হলে kernel সেই সংযোগের সঙ্গে সংযুক্ত process-গুলোকে hangup signal, SIGHUP, পাঠায়। tmux server সেই process-গুলোর মধ্যে থাকে না। tmux ছাড়া, যে screen lock আপনার সংযোগ বিচ্ছিন্ন করে, সেটিই tool call চলাকালীন Claude Code বন্ধ করে দেয়। VPS-এ tmux-এর ভিতরে Claude Code চালানো-তে session layout আরও বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে।
server-এ tmux চালান, ফোনে নয়। আপনি ইতিমধ্যে সংযুক্ত থাকা session-এর ভিতরে tmux টাইপ করলে sessions should be nested with care, unset $TMUX to force দেখায়। জোর করে চালু করলে কোন prefix key ব্যবহার হবে, তা নিয়ে দুটি key-এর মধ্যে সংঘাত তৈরি হয়।
প্রতিটি লগইনে স্বয়ংক্রিয়ভাবে সংযুক্ত করুন
টাচ কিবোর্ডে attach কমান্ড টাইপ করতে করতে বিরক্তি তৈরি হয়। সার্ভারে ~/.profile-এর শেষে এটি যোগ করুন:
if command -v tmux >/dev/null 2>&1 && [ -z "$TMUX" ] && [ -t 1 ]; then
exec tmux new-session -A -s claude
finew-session -A -s claude বিদ্যমান থাকলে claude নামের সেশনে সংযুক্ত হয় এবং না থাকলে সেটি তৈরি করে। তাই উভয় ক্ষেত্রেই একটি কমান্ড যথেষ্ট। exec লগইন shell-কে tmux দিয়ে প্রতিস্থাপন করে। ফলে tmux থেকে বের হলে খালি prompt-এ না গিয়ে সংযোগ বন্ধ হয়। সাধারণ shell প্রয়োজন হলে ফাইলটি এড়িয়ে চলুন: ssh you@server -t "bash --noprofile"।
এটি ~/.profile-এ রাখুন, ~/.bashrc-এ নয়। ~/.bashrc non-interactive session-এর ক্ষেত্রেও চলে। ফলে file transfer ব্যর্থ হয়: scp এবং sftp অপ্রত্যাশিত output-কে protocol data হিসেবে পড়ে এবং Received message too long দিয়ে ব্যর্থ হয়। ~/.profile শুধু login shell-এর জন্য চলে, আর interactive SSH session এ ধরনের shell।
Ubuntu ~/.profile-এ ~/.local/bin-কে PATH-এ যোগ করে। লগইনের ঠিক পরেই claude কাজ করলেও tmux-এর ভেতরের shell-এ command not found দেখা গেলে, এর কারণ ওই ক্রম। তাই profile এড়িয়ে যাওয়া script থেকে নয়, উপরের মতো login shell থেকে tmux চালু করুন।
iOS: Termius অথবা Blink Shell
উভয় অ্যাপ SSH এবং mosh সমর্থন করে এবং অ্যাপের মধ্যেই key সংরক্ষণ করে। পার্থক্যটি interface-এ।
Blink Shell command-driven। এর prompt-এ ssh you@server অথবা mosh you@server লিখবেন। এটি desktop terminal-এর মতো একই syntax ব্যবহার করে। config লিখলে settings খোলে, এবং Keys section আপনার জন্য একটি key pair তৈরি করে।
Termius form-driven। প্রথমে একটি host entry পূরণ করুন। এরপর host details-এ গিয়ে সেই host-এর protocol SSH থেকে Mosh-এ পরিবর্তন করুন। Termius নিজস্ব mosh implementation সরবরাহ করে এবং mosh 1.3.0 ও পরবর্তী সংস্করণ সমর্থন করে। তাই server-এ mosh package ইনস্টল করা থাকতে হবে।
উভয় ক্ষেত্রেই অ্যাপের ভেতরে key তৈরি করুন। কখনো existing private key ফোনে কপি করবেন না। অ্যাপটি public অংশটি দেখাবে। এই এক লাইনের অংশটিই server-এর ~/.ssh/authorized_keys-এ যোগ করবেন। প্রতি device-এর SSH key এবং একটি key বাতিল করার পদ্ধতি-তে naming এবং revoke করার ধাপ ব্যাখ্যা করা হয়েছে। ফোনের ক্ষেত্রে এটি laptop-এর চেয়ে বেশি গুরুত্বপূর্ণ।
terminal app-এর নিজস্ব biometric অথবা passcode lock চালু করুন। এটি চালু না থাকলে, screen জেগে থাকা পর্যন্ত unlocked phone আপনার server-এ একটি উন্মুক্ত shell হিসেবে কাজ করবে।
Android: Termux
pkg upgrade
pkg install openssh mosh
ssh-keygen -t ed25519 -C "pixel"
cat ~/.ssh/id_ed25519.pubTermux তার নিজস্ব repository-তে OpenSSH এবং mosh package হিসেবে সরবরাহ করে। তাই ssh, ssh-keygen এবং mosh desktop-এর মতোই কাজ করে। প্রদর্শিত public key line-টি server-এর ~/.ssh/authorized_keys-এ যোগ করুন। এরপর mosh you@server দিয়ে সংযোগ করুন।
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-ও গ্রহণ করবে।
Termux background-এ থাকলে Android সেটি বন্ধ করে দিতে পারে। এখানে এতে reconnect করা ছাড়া আর কোনো ক্ষতি হবে না। Session এবং agent server-এ চলছে।
wifi থেকে বের হলে টার্মিনাল কেন স্থির হয়ে যায়, এবং mosh কীভাবে এটি ঠিক করে?
একটি SSH সংযোগ হলো TCP (transmission control protocol) সংযোগ। TCP সংযোগকে উভয় প্রান্তের ঠিকানা এবং উভয় পোর্ট দিয়ে শনাক্ত করা হয়। wifi-এর আওতার বাইরে গেলে ফোনটি মোবাইল নেটওয়ার্ক থেকে নতুন ঠিকানা পায়। ফলে পুরোনো সংযোগটি কোনো প্রান্তেই আর মেলে না। এ বিষয়ে কোনো বার্তা পাঠানো হয় না। TCP হাল ছেড়ে দেওয়া পর্যন্ত টার্মিনাল শুধু সাড়া দেওয়া বন্ধ রাখে। এরপর ssh client_loop: send disconnect: Broken pipe প্রিন্ট করে। স্থির হয়ে থাকা সেশন সঙ্গে সঙ্গে বন্ধ করতে Enter চাপুন, তারপর ~, এরপর .।
mosh (mobile shell) এই সমস্যার কারণটি সরিয়ে দেয়। এটি একবার SSH ব্যবহার করে লগ ইন করে এবং একটি mosh-server প্রসেস চালু করে। এরপর সার্ভার যে UDP (user datagram protocol) পোর্ট নির্বাচন করেছে, সেটি পড়ে নেয় এবং SSH সংযোগ বন্ধ করে। তারপর দুই প্রান্ত একটি শেয়ার করা সেশন কী দিয়ে প্রমাণীকৃত UDP ডেটাগ্রাম আদান-প্রদান করে। তাই সেশনটি আপনার ঠিকানা দিয়ে নয়, ওই কী দিয়ে শনাক্ত হয়। নতুন ঠিকানা পেলেও সেশন চলতে থাকে। mosh আপনার টাইপ করা অক্ষর স্থানীয়ভাবে প্রতিধ্বনিত করে এবং সার্ভারের অবস্থার সঙ্গে অমিল হলে স্ক্রিন নতুন করে আঁকে। তাই ধীর মোবাইল সংযোগেও এটি ব্যবহারযোগ্য থাকে।
mosh 60000 থেকে 61000-এর মধ্যে একটি UDP পোর্ট ব্যবহার করে। তাই এই রেঞ্জটি খুলুন:
sudo ufw allow 60000:61000/udp
sudo ufw statusufw দিয়ে পোর্ট খোলা-এ ফায়ারওয়াল কনফিগারেশনের বাকি অংশ রয়েছে। আপনার provider যদি control panel-এ আলাদা network firewall দেয়, সেখানে একই রেঞ্জ যোগ করুন। কারণ ufw-এর নিয়ম মেশিনের সামনে থাকা কোনো filter-এ প্রভাব ফেলতে পারে না।
mosh-এর দুটি ত্রুটি সাধারণ। লগইন সফল হওয়ার পর সেশন স্থির হয়ে যায় এবং Nothing received from server on UDP port 60001. দেখায়—এর অর্থ ফোন ও সার্ভারের মধ্যবর্তী কোনো স্থানে UDP রেঞ্জটি ব্লক করা হয়েছে। কোনো সংযোগ mosh-server not found জানালে সার্ভারে package-টি অনুপস্থিত, অথবা login PATH-এ এটি নেই। এটি install করুন, অথবা mosh --server=/usr/bin/mosh-server you@server দিয়ে সরাসরি এর অবস্থান নির্দিষ্ট করুন।
লগইনের locale UTF-8 না হলেও mosh চলতে অস্বীকার করে এবং বার্তা দেখায়: mosh-server needs a UTF-8 native locale to run.। ফোনে নয়, সার্ভারে locale ঠিক করুন।
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-ও রয়েছে। তাই Claude Code যে web app চালু করেছে, সেটির preview দেখতে এখনও সাধারণ ssh -L 8080:127.0.0.1:8080 you@server প্রয়োজন। mosh শুধু দৃশ্যমান স্ক্রিনের সঙ্গে সমন্বয় করে। তাই এর নিজস্ব scrollback নেই। এখানে এই সীমাবদ্ধতার কোনো প্রভাব নেই, কারণ tmux scrollback ধরে রাখে: Ctrl-b, তারপর [ চাপলে copy mode চালু হয়। drag অথবা arrow keys দিয়ে স্ক্রল করুন। বের হতে q চাপুন।
ফোনের স্ক্রিন ব্যবহারযোগ্য করুন
সার্ভারে ~/.tmux.conf-এর চারটি লাইনই মূল কাজের বেশিরভাগ সম্পন্ন করে:
set -g mouse on
set -g status-position top
set -g default-terminal "tmux-256color"
set -g history-limit 20000mouse on টাচ ড্র্যাগকে স্ক্রল এবং ট্যাপকে pane বা window নির্বাচন হিসেবে বিবেচনা করে। এতে টাইপ করতে অসুবিধা হয় এমন prefix key-গুলোর বেশিরভাগের প্রয়োজন থাকে না। 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।
চারটি key শিখলেই বাকি কাজ স্বচ্ছন্দ হয়।
EscClaude-এর চলমান উত্তর থামায় এবং ইতিমধ্যে সম্পন্ন কাজ রেখে দেয়। তাই এটি আপনার বুড়ো আঙুলের সবচেয়ে কাছে রাখা উচিত।Ctrl+Cচলমান operation-ও থামায়। idle prompt-এ প্রথম চাপ input মুছে দেয় এবং দ্বিতীয় চাপ Claude Code থেকে বেরিয়ে যায়। তাই এটি তুলনামূলকভাবে বেশি কঠোর উপায়।Escদুবার চাপলে draft prompt মুছে যায়। empty prompt-এ এটি পরিবর্তে rewind menu খোলে।- multi-line prompt-এর জন্য
\টাইপ করে Enter চাপুন। এই পদ্ধতি সব terminal-এ কাজ করে। Shift+Enter কেবল অল্প কিছু desktop terminal-এ native। mobile client-গুলো সেই তালিকায় নেই।
split pane এড়িয়ে চলুন। portrait অবস্থায় ফোনের প্রস্থ প্রায় 40 column। তাই vertical split করলে প্রতিটি pane-এ 20 column থাকে এবং প্রতিটি diff ভেঙে ভেঙে অপ্রয়োজনীয়ভাবে মোড় নেয়। এর পরিবর্তে tmux window ব্যবহার করুন: Ctrl-b c একটি window তৈরি করে এবং Ctrl-b n পরেরটিতে যায়। diff সঠিকভাবে পড়তে হলে ফোনটি আড়াআড়ি ঘুরিয়ে নিন।
ছোট স্ক্রিনে দীর্ঘ session মূলত context-এর সমস্যা। তাই train-এ বসে পুরো দিন কাজ চালানোর আগে Claude Code-এর context window পরিচালনা করা পড়ে নেওয়া উপকারী।
লকডাউন করুন: শুধু key, কোনো password নয়
ফোনে এখন এমন একটি key আছে, যা code সম্পাদনা এবং command চালানো একটি machine-এ প্রবেশের সুযোগ দেয়। 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 বিশ্লেষণ করে এবং config সঠিক হলে কিছুই print করে না। এটি বাদ দিলে একটি typo-এর কারণে reload-এর সময় sshd ব্যর্থ হবে। আপনার বর্তমান session খোলা রাখুন এবং কিছু বন্ধ করার আগে দ্বিতীয় connection থেকে পরীক্ষা করুন, কারণ ভুল key-এর ফলে এখন Permission denied (publickey). পাবেন এবং password বন্ধ থাকায় কোনো fallback থাকবে না। তখন recovery path হলো আপনার provider-এর console।
প্রতিটি device-এর জন্য আলাদা key দিন। ফোন হারালে তখন ~/.ssh/authorized_keys থেকে শুধু একটি line মুছে ফেলতে হবে, আর আপনার laptop কাজ করতে থাকবে। একটি shared key ব্যবহার করলে আপনার মালিকানাধীন প্রতিটি device-এ key পরিবর্তন করতে হবে।
Ubuntu 24.04-এ SSH অন্য port-এ সরালে মনে রাখুন, listener-এর নিয়ন্ত্রণ ssh.socket-এর কাছে। তাই শুধু একটি Port line যোগ করলে কিছুই পরিবর্তন হবে না। sudo systemctl edit ssh.socket চালান, একটি খালি ListenStream= দিয়ে default সরান, তারপর পরের line-এ আপনার port সেট করুন। VPS-এ SSH শক্তিশালী করা বিষয়টি এবং attack surface-এর বাকি অংশ ব্যাখ্যা করে।
SSH-এর জন্য fail2ban password বন্ধ থাকার পর খুব বেশি security যোগ করে না, কারণ অনুমান করা password কোনোভাবেই গ্রহণ করা যায় না। তবে এটি শান্ত log রাখে, ফলে প্রকৃত login attempt সহজে শনাক্ত করা যায়।
আরও শক্তিশালী পদ্ধতি হলো SSH-কে public internet থেকে সম্পূর্ণ দূরে রাখা। Server-কে নিজে host করা একটি WireGuard VPN-এর পেছনে রাখুন, প্রয়োজন হলে ফোনে tunnel চালু করুন, এবং tunnel-এ শুধু sshd-এর জন্য একটি ListenAddress দিন। দুই পাশেই UDP ব্যবহৃত হওয়ায় tunnel-এর মাধ্যমে mosh কাজ করে। একটি বিষয় মনে রাখুন: tunnel packet overhead বাড়ায়। তাই বড় transfer আটকে গেলে ফোনের WireGuard config-এ MTU (maximum transmission unit) কমান।
এইভাবে কাজ করার বিষয়ে শেষ একটি কথা। ফোন থেকে আপনি এমন একটি screen-এ permission prompt অনুমোদন করেন, যেখানে প্রতি বার diff-এর কয়েকটি line দেখা যায়। তাই guardrail বন্ধ না করে সেগুলো বজায় রাখুন। VPS-এ নিরাপদে Claude Code চালানো-তে আপনার প্রধান প্রবেশপথ touchscreen হওয়ার আগে নির্ধারণযোগ্য user এবং directory limit নিয়ে আলোচনা করা হয়েছে।
পুনরায় সংযুক্ত করার পর কোনো সমস্যা দেখা দিলে
tmux attach দেখালে no server running on /tmp/tmux-1000/default বোঝায় যে tmux server বন্ধ হয়ে গেছে। এর প্রায় সব ক্ষেত্রেই কারণ হলো মেশিনটি reboot হয়েছে। uptime দিয়ে পরীক্ষা করুন। স্বয়ংক্রিয় নিরাপত্তা আপডেট থেকে হওয়া kernel update সিস্টেমকে reboot করে। reboot হওয়া সিস্টেমে কোনো tmux session থাকে না। তাই Claude Code-এর যেকোনো run পুনরায় শুরু করা যায় ধরে নিন।
can't find session: claude-এর বিষয়টি আলাদা। tmux server চলছে, কিন্তু ওই নামের session নেই। বর্তমানে থাকা session দেখতে tmux ls চালান।
সংযুক্ত হয়ে যদি দেখেন, যেখানে Claude Code ছিল সেখানে সাধারণ shell prompt রয়েছে, তাহলে session শেষ না হলেও process শেষ হয়েছে। dmesg -T | tail-এ Out of memory: Killed process 4821 (claude)-এর মতো কোনো line আছে কি না দেখুন। 4 GB-এর প্রয়োজনীয়তার নিচে থাকা সিস্টেম বড় edit-এর সময় এমন line দেখায়। এ ধরনের line না থাকলে Claude Code নিজে থেকে exit করেছে। কারণটি prompt-এর উপরের shell scrollback-এ থাকবে।
পুনরায় সংযুক্ত হওয়ার পর কোনো window খুব ছোট দেখালে এবং চারপাশে অব্যবহৃত জায়গা থাকলে, ভিন্ন আকারের দুটি client সংযুক্ত আছে। tmux সবচেয়ে ছোট সংযুক্ত client-এর আকার অনুযায়ী window-এর আকার নির্ধারণ করে। আপনার laptop এখনও session-টিকে 200 columns প্রশস্ত অবস্থায় ধরে রেখেছে, আর phone 40 columns চাইছে। সংযুক্ত হওয়ার সময় অন্য client-গুলো detach করুন: tmux attach -d -t claude।
FAQ
VPS-এর পরিবর্তে কি ফোনেই Claude Code চালাতে পারি?
না। July 2026 অনুযায়ী সমর্থিত প্ল্যাটফর্ম হলো macOS, Windows, Ubuntu 20.04 বা পরবর্তী সংস্করণ, Debian 10 বা পরবর্তী সংস্করণ এবং Alpine 3.19 বা পরবর্তী সংস্করণ; RAM থাকতে হবে 4 GB বা বেশি। Android এবং iOS এই তালিকায় নেই। ফোন অ্যাপগুলোকে sleep করায় এবং নিয়মিত network address পরিবর্তন করে। দীর্ঘ agent run-এর ক্ষেত্রে এটি গ্রহণযোগ্য নয়। এটি server-এ চালান এবং ফোনকে display হিসেবে ব্যবহার করুন।
অ্যাপ বন্ধ করলে বা signal হারালে কি session চালু থাকে?
হ্যাঁ। দুটি পৃথক উপাদান এই কাজ করে। tmux server-এ process চালু রাখে, তাই connection শেষ হলেও কিছু বন্ধ হয় না। mosh address পরিবর্তনের পরও connection চালু রাখে। তাই wifi থেকে mobile data-তে গেলেও আবার connect করতে হয় না। tmux ছাড়া সাধারণ SSH ব্যবহার করলে connection বিচ্ছিন্ন হওয়ার সময় SIGHUP পাঠানো হয় এবং Claude Code মাঝপথে কাজ বন্ধ করে।
mosh connect করার পর কিছুই দেখায় না কেন?
Login সফল হওয়ার পর Nothing received from server on UDP port 60001. দেখিয়ে আটকে থাকলে UDP 60000 থেকে 61000 পর্যন্ত open করা নেই। ufw-তে এই range যোগ করুন। আপনার provider-এর network firewall-এও range-টি যোগ করুন। অধিকাংশ panel-এ এটি আলাদা control। mosh যদি এর পরিবর্তে জানায় যে mosh-server পাওয়া যায়নি, তাহলে server-এ package-টি নেই: sudo apt install mosh।
Esc key ছাড়া keyboard থেকে Claude Code কীভাবে interrupt করব?
একটি key row যোগ করুন। Termux-এ ~/.termux/termux.properties-এ extra-keys ব্যবহার করে এটি configure করা যায়। Termius এবং Blink উভয়েই settings-এ সম্পাদনযোগ্য একটি row দেয়। Esc চলমান response interrupt করে এবং ইতিমধ্যে সম্পন্ন কাজ রেখে দেয়। Ctrl+C-ও interrupt করে। তবে idle prompt-এ এটি দুইবার চাপলে Claude Code বন্ধ হয়ে যায়। তাই আগে Esc ব্যবহার করুন।
Internet-এর জন্য SSH open রাখা কি যথেষ্ট নিরাপদ?
Password authentication বন্ধ থাকলে সফলভাবে authentication করার একমাত্র উপায় হলো এমন একটি key, যা কখনো আপনার devices-এর বাইরে যায় না। যে machine পুনর্নির্মাণ করা যায়, তার জন্য এটি যুক্তিসঙ্গত ঝুঁকি। প্রতিটি device-এর জন্য আলাদা key দিন। তাহলে ফোন হারালে authorized_keys-এ শুধু একটি line সরাতে হবে। আপনি যদি public port-এ কোনো service প্রকাশ না করতে চান, তাহলে box-টিকে WireGuard-এর পেছনে রাখুন এবং sshd-কে tunnel address-এ listen করান।