Cara Menggunakan Claude Code dari Ponsel
Claude Code berjalan di VPS dalam tmux, sedangkan ponsel hanya menjadi jendela. Pelajari kunci SSH, mosh untuk koneksi seluler, tmux attach, dan perbaikan keyboard.
Claude Code dari ponsel: cara kerjanya
Claude Code dari ponsel bukan aplikasi seluler. Claude Code berjalan pada VPS (virtual private server), di dalam sesi tmux yang tetap terbuka, dan ponsel Anda membuka koneksi SSH (secure shell) ke sesi tersebut selama sesi itu ditampilkan. Jika aplikasi ditutup, agen tetap bekerja karena prosesnya tidak pernah berjalan di ponsel.
Pemisahan ini adalah inti desainnya. Sistem operasi ponsel menangguhkan aplikasi beberapa detik setelah Anda beralih darinya, sehingga pekerjaan panjang apa pun yang dimulai di ponsel akan berhenti. Ponsel juga mendapatkan alamat jaringan baru setiap kali Anda berpindah dari wifi ke data seluler. Kedua masalah tersebut hilang ketika proses berjalan di server dan ponsel hanya menampilkan layarnya.
Anda memerlukan empat hal pada server: tmux untuk mempertahankan sesi, kunci SSH untuk masuk, mosh untuk menangani perubahan jaringan, dan Claude Code itu sendiri. Di sisi ponsel, Anda hanya memerlukan satu aplikasi terminal dengan baris tombol yang dapat diakses.
Yang Anda perlukan di VPS
Server Ubuntu 24.04 dengan spesifikasi kecil sudah cukup untuk bagian SSH dan tmux. Claude Code membutuhkan lebih banyak sumber daya. Persyaratan resmi per Juli 2026 adalah Ubuntu 20.04 atau yang lebih baru pada prosesor x64 atau ARM64, dengan RAM minimal 4 GB. Paket 1 GB dapat menginstalnya, tetapi prosesnya kemudian dihentikan oleh kernel saat beban meningkat. Claude Code juga memerlukan akun Claude berbayar (Pro, Max, Team atau Enterprise) atau akun Console dengan akses API, karena paket Claude.ai gratis tidak menyertakan fitur tersebut.
Siapkan server sebagai pengguna biasa dengan sudo, bukan sebagai root. Jika server masih baru, ikuti sepuluh menit pertama pada VPS baru terlebih dahulu, karena perubahan SSH dalam panduan ini akan lebih mudah dilakukan setelah pengguna dan firewall tersedia.
sudo apt update && sudo apt install -y tmux mosh
curl -fsSL https://claude.ai/install.sh | bash
claude --versionPenginstal menempatkan binary di ~/.local/bin/claude, dan claude --version menampilkan baris seperti 2.1.211 (Claude Code). Jika yang ditampilkan adalah command not found, direktori tersebut belum ada di PATH Anda: keluar, masuk kembali, lalu periksa dengan command -v claude. claude doctor menampilkan diagnostik instalasi dan pengaturan tanpa memulai sesi.
Masuk sekali sekarang dari laptop, sebelum Anda bergantung pada ponsel. Jalankan claude di direktori proyek, lalu ikuti prompt login. Proses ini meminta Anda membuka URL di browser dan memasukkan kode kembali ke terminal. Menjalankan langkah tersebut dengan berpindah antara dua aplikasi pada layar ponsel akan lambat. Lakukan sekali menggunakan keyboard fisik agar kredensial tetap tersimpan di server.
Jalankan Claude Code di dalam tmux agar koneksi yang terputus tidak menghentikannya
tmux new -s claude
cd ~/projects/api
claudeLepaskan sesi dengan Ctrl-b, lalu tekan d. tmux menampilkan [detached (from session claude)] dan mengembalikan Anda ke shell. Sekarang Anda dapat menutup aplikasi, kehilangan sinyal, atau memasukkan ponsel ke saku. Pane tetap berjalan.
tmux ls
tmux attach -t claudetmux ls menampilkan satu baris untuk setiap sesi, misalnya claude: 1 windows (created Thu Jul 30 09:14:02 2026). tmux attach -t claude mengembalikan Anda tepat ke posisi sebelumnya, termasuk edit yang belum selesai.
Cara ini berfungsi karena tmux menjalankan proses server sendiri. Shell dan Claude Code menjadi child process dari server tersebut, bukan dari sshd. Saat koneksi SSH berakhir, kernel mengirimkan sinyal hangup, SIGHUP, ke proses yang terhubung ke koneksi tersebut. Server tmux tidak termasuk di dalamnya. Tanpa tmux, penguncian layar yang memutus koneksi juga menghentikan Claude Code saat sedang menjalankan tool call. Menjalankan Claude Code di VPS dalam tmux membahas tata letak sesi secara lebih mendalam.
Jalankan tmux di server, bukan di ponsel. Mengetik tmux di dalam sesi yang sudah Anda ikuti akan menampilkan sessions should be nested with care, unset $TMUX to force. Jika dipaksakan, Anda akan memiliki dua tombol prefix yang saling berebut.
Lampirkan secara otomatis setiap kali login
Mengetik perintah attach pada keyboard sentuh lama-kelamaan merepotkan. Tambahkan baris berikut di akhir ~/.profile pada server:
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 melampirkan ke sesi bernama claude jika sesi tersebut ada dan membuatnya jika tidak ada, sehingga satu perintah menangani kedua kondisi tersebut. exec menggantikan login shell dengan tmux, sehingga keluar dari tmux menutup koneksi, bukan mengembalikan Anda ke prompt kosong. Jika memerlukan shell biasa, lewati file tersebut: ssh you@server -t "bash --noprofile".
Tambahkan di ~/.profile, bukan di ~/.bashrc. ~/.bashrc juga dijalankan untuk sesi non-interaktif, sehingga transfer file gagal: scp dan sftp membaca output yang tidak semestinya sebagai data protokol dan gagal dengan Received message too long. ~/.profile hanya dijalankan untuk login shell, sesuai dengan sesi SSH interaktif.
~/.profile juga merupakan tempat Ubuntu menambahkan ~/.local/bin ke PATH. Jika claude berfungsi tepat setelah login, tetapi shell di dalam tmux menampilkan command not found, urutan tersebut adalah penyebabnya. Karena itu, jalankan tmux dari login shell seperti di atas, bukan dari skrip yang melewati profile.
iOS: Termius atau Blink Shell
Kedua aplikasi mendukung SSH dan mosh, serta menyimpan key di dalam aplikasi. Perbedaannya terletak pada antarmukanya.
Blink Shell berbasis perintah. Pada prompt-nya, ketik ssh you@server atau mosh you@server dengan sintaks yang sama seperti pada terminal desktop. Buka pengaturan dengan mengetik config, lalu buat pasangan key pada bagian Keys.
Termius berbasis formulir. Isi entri host, lalu ubah host tersebut dari SSH ke Mosh pada detail host. Termius menyediakan implementasi mosh sendiri dan mendukung mosh 1.3.0 atau yang lebih baru, sehingga server tetap memerlukan package mosh yang terpasang.
Buat key dari dalam aplikasi pada kedua kasus tersebut. Jangan pernah menyalin private key yang sudah ada ke ponsel. Aplikasi akan menampilkan bagian publik key tersebut. Tambahkan satu baris ini ke ~/.ssh/authorized_keys pada server. Key SSH per perangkat dan cara mencabutnya menjelaskan penamaan dan langkah pencabutan key. Hal ini lebih penting untuk ponsel daripada laptop.
Aktifkan penguncian biometrik atau kode sandi bawaan aplikasi terminal. Tanpa penguncian tersebut, ponsel yang tidak terkunci menjadi shell terbuka ke server Anda selama layar tetap menyala.
Android: Termux
pkg upgrade
pkg install openssh mosh
ssh-keygen -t ed25519 -C "pixel"
cat ~/.ssh/id_ed25519.pubTermux menyediakan OpenSSH dan mosh dalam repositorinya sendiri, sehingga ssh, ssh-keygen, dan mosh berfungsi seperti pada desktop. Tambahkan baris kunci publik yang dicetak ke ~/.ssh/authorized_keys pada server, lalu sambungkan dengan mosh you@server.
Keyboard di layar Android tidak memiliki tombol Esc dan Ctrl, sedangkan Claude Code memerlukan keduanya. Termux dapat menampilkan baris tombolnya sendiri. Tambahkan satu baris ke ~/.termux/termux.properties:
extra-keys = [['ESC','|','/','HOME','UP','END','PGUP'],['TAB','CTRL','ALT','LEFT','DOWN','RIGHT','PGDN']]Kemudian jalankan termux-reload-settings. Baris tersebut akan muncul di atas keyboard. Reload yang sama juga akan memuat font TrueType monospace yang ditempatkan di ~/.termux/font.ttf.
Android dapat menghentikan Termux saat berjalan di latar belakang. Dalam kasus ini, dampaknya hanya perlu melakukan koneksi ulang. Sesi dan agent berjalan pada server.
Mengapa terminal macet saat keluar dari jangkauan wifi, dan apa yang diperbaiki mosh?
Koneksi SSH adalah koneksi TCP (transmission control protocol), dan koneksi TCP diidentifikasi berdasarkan kedua alamat serta kedua port. Saat Anda keluar dari jangkauan wifi, ponsel memperoleh alamat baru dari jaringan seluler. Akibatnya, koneksi lama tidak lagi cocok pada kedua sisi. Tidak ada pemberitahuan mengenai perubahan ini. Terminal hanya berhenti merespons sampai TCP menyerah, lalu ssh menampilkan client_loop: send disconnect: Broken pipe. Untuk langsung menghentikan sesi yang macet, tekan Enter, lalu ~, kemudian ..
mosh (mobile shell) menghilangkan jenis kegagalan tersebut. mosh menggunakan SSH sekali untuk login dan memulai proses mosh-server, membaca port UDP (user datagram protocol) yang dipilih server, lalu menutup koneksi SSH. Setelah itu, kedua sisi bertukar datagram UDP yang diautentikasi dengan session key bersama. Dengan demikian, sesi diidentifikasi berdasarkan key tersebut, bukan alamat Anda. Saat alamat berubah, sesi tetap berlanjut. mosh juga menampilkan input Anda secara lokal dan menggambar ulang tampilan saat server memberikan hasil yang berbeda. Karena itu, mosh tetap dapat digunakan melalui koneksi seluler yang lambat.
mosh menggunakan port UDP antara 60000 dan 61000. Buka rentang tersebut:
sudo ufw allow 60000:61000/udp
sudo ufw statusMembuka port dengan ufw menjelaskan bagian lain dari konfigurasi firewall. Jika provider Anda menyediakan firewall jaringan terpisah pada control panel, tambahkan rentang yang sama di sana. Aturan ufw tidak dapat memengaruhi filter yang berada di depan mesin.
Dua kegagalan mosh sering terjadi. Login yang berhasil lalu macet dan menampilkan Nothing received from server on UDP port 60001. berarti rentang UDP tersebut diblokir di suatu titik antara ponsel dan server. Koneksi yang melaporkan mosh-server not found berarti package tersebut tidak ada di server atau tidak tercantum dalam login PATH. Instal package tersebut, atau tentukan lokasinya secara langsung dengan mosh --server=/usr/bin/mosh-server you@server.
mosh juga tidak dapat berjalan jika locale login bukan UTF-8, dan akan menampilkan pesan berikut: mosh-server needs a UTF-8 native locale to run. Perbaiki locale di server, bukan di ponsel.
locale
sudo locale-gen en_US.UTF-8
sudo update-locale LANG=en_US.UTF-8mosh memiliki dua batasan. README-nya menyatakan bahwa mosh tidak mendukung X forwarding atau penggunaan SSH non-interaktif, termasuk port forwarding. Karena itu, untuk meninjau aplikasi web yang baru saja dijalankan oleh Claude Code, Anda tetap memerlukan ssh -L 8080:127.0.0.1:8080 you@server biasa. mosh juga hanya menyinkronkan tampilan layar yang terlihat, sehingga tidak memiliki scrollback sendiri. Batasan kedua ini tidak menjadi masalah di sini karena tmux menyimpan scrollback: Ctrl-b lalu [ untuk masuk ke copy mode, gunakan drag atau tombol panah untuk menggulir, dan q untuk keluar.
Jadikan layar ponsel nyaman digunakan
Empat baris dalam ~/.tmux.conf di server menangani sebagian besar kebutuhan:
set -g mouse on
set -g status-position top
set -g default-terminal "tmux-256color"
set -g history-limit 20000mouse on mengubah geseran sentuh menjadi pengguliran dan ketukan menjadi pemilihan panel atau jendela. Dengan begitu, sebagian besar tombol prefix yang sulit diketik tidak lagi diperlukan. status-position top memindahkan baris status tmux dari tepi bawah, tempat keyboard di layar dan bilah sarannya menutupinya. default-terminal penting karena jika tidak, tmux akan memperkenalkan terminal screen kepada Claude Code. Warna dan gambar kotak yang dihasilkan pun lebih buruk dari yang seharusnya. Jika setelah itu tmux menolak dijalankan dengan missing or unsuitable terminal: tmux-256color, entri terminfo tidak ada: sudo apt install ncurses-term.
Pelajari empat tombol berikut. Setelah itu, penggunaannya akan nyaman.
Escmenghentikan Claude di tengah respons dan mempertahankan pekerjaan yang sudah selesai. Karena itu, tombol ini sebaiknya berada sedekat mungkin dengan ibu jari.Ctrl+Cjuga menghentikan operasi yang sedang berjalan. Pada prompt yang sedang tidak digunakan, penekanan pertama menghapus input dan penekanan kedua keluar dari Claude Code. Jadi, tombol ini lebih kasar fungsinya.Escdua kali menghapus draf prompt. Pada prompt kosong, kombinasi ini justru membuka menu rewind.- Untuk prompt yang terdiri atas beberapa baris, ketik
\lalu tekan Enter. Cara ini berfungsi di semua terminal. Shift+Enter hanya tersedia secara native di sejumlah kecil terminal desktop, dan klien seluler tidak termasuk di dalamnya.
Hindari panel terpisah. Ponsel dalam orientasi potret lebarnya sekitar 40 kolom. Split vertikal akan menyisakan 20 kolom untuk setiap panel, sehingga setiap diff terlipat menjadi tampilan yang sulit dibaca. Gunakan jendela tmux sebagai gantinya: Ctrl-b c membuat jendela baru dan Ctrl-b n berpindah ke jendela berikutnya. Jika jendela kedua akhirnya menjalankan sesi Claude Code sendiri, kedua sesi tersebut dapat saling menyerahkan pekerjaan secara langsung, sehingga Anda tidak perlu menyalin teks antarjendela pada layar sentuh. Putar ponsel ke samping jika perlu membaca diff dengan benar.
Jumlah teks yang muncul di layar perlu ditetapkan secara sengaja, karena gaya output mengubah prompt sistem di balik setiap balasan, dan gaya yang lebih ringkas berarti lebih sedikit tampilan layar yang harus digulir pada ponsel.
Sesi panjang pada layar kecil terutama merupakan masalah konteks. Karena itu, mengelola jendela konteks Claude Code layak dibaca sebelum Anda mencoba menjalankan pekerjaan seharian penuh dari kereta.
Perketat keamanan: hanya gunakan key, tanpa password
Ponsel kini menyimpan key untuk mesin yang mengedit kode dan menjalankan perintah Anda. Nonaktifkan autentikasi berbasis password. File drop-in lebih aman daripada mengedit sshd_config secara langsung, karena sshd_config Ubuntu menyertakan /etc/ssh/sshd_config.d/*.conf di bagian atas dan menggunakan nilai pertama yang ditemukan untuk suatu pengaturan.
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 mengurai konfigurasi dan tidak mencetak apa pun jika konfigurasi valid. Jangan lewati langkah ini. Satu kesalahan ketik dapat menyebabkan sshd gagal saat reload. Biarkan sesi kerja Anda tetap terbuka dan lakukan pengujian dari koneksi kedua sebelum menutup koneksi apa pun. Key yang salah akan menghasilkan Permission denied (publickey)., dan ketika password dinonaktifkan, tidak ada jalur cadangan. Pada kondisi tersebut, pemulihan harus dilakukan melalui console dari provider Anda.
Gunakan key yang berbeda untuk setiap perangkat. Jika ponsel hilang, Anda cukup menghapus satu baris dari ~/.ssh/authorized_keys, sementara laptop tetap dapat digunakan. Jika satu key digunakan bersama, Anda harus mengganti key tersebut pada setiap perangkat yang Anda miliki.
Jika Anda memindahkan SSH ke port lain pada Ubuntu 24.04, perhatikan bahwa listener dikelola oleh ssh.socket. Karena itu, baris Port saja tidak mengubah apa pun. Jalankan sudo systemctl edit ssh.socket, kosongkan nilai default dengan ListenStream=, lalu tetapkan port Anda pada baris berikutnya. Memperkuat keamanan SSH pada VPS membahas hal tersebut dan aspek keamanan lainnya.
fail2ban untuk SSH hanya menambah sedikit keamanan setelah password dinonaktifkan, karena password yang ditebak tidak dapat diterima sama sekali. Namun, fail2ban membuat log lebih ringkas sehingga upaya login yang sebenarnya lebih mudah dikenali.
Pilihan yang lebih kuat adalah menonaktifkan SSH dari Internet publik. Tempatkan server di balik VPN WireGuard yang Anda kelola sendiri, aktifkan tunnel dari ponsel saat diperlukan, lalu konfigurasikan sshd agar ListenAddress hanya tersedia pada tunnel. mosh dapat digunakan melalui tunnel karena kedua sisi menggunakan UDP. Perhatikan satu hal: tunnel menambah overhead paket. Jika transfer berukuran besar berhenti, turunkan MTU (maximum transmission unit) pada konfigurasi WireGuard di ponsel.
Satu hal terakhir tentang cara kerja ini. Dari ponsel, Anda menyetujui permintaan izin pada layar yang hanya menampilkan beberapa baris diff sekaligus. Hal tersebut menjadi alasan untuk mempertahankan guardrail, bukan menonaktifkannya. Menjalankan Claude Code dengan aman pada VPS membahas pembatasan user dan direktori yang sebaiknya ditetapkan sebelum touchscreen menjadi cara utama Anda mengakses sistem.
Saat terhubung kembali dan terjadi masalah
tmux attach yang menampilkan no server running on /tmp/tmux-1000/default berarti server tmux sudah tidak ada. Ini hampir selalu berarti mesin telah reboot. Periksa dengan uptime. Pembaruan kernel dari pembaruan keamanan otomatis dapat me-reboot mesin. Mesin yang telah reboot tidak memiliki sesi tmux, jadi anggap setiap proses Claude Code sebagai proses yang dapat Anda jalankan kembali.
can't find session: claude berbeda. Server tmux masih berjalan, tetapi nama tersebut tidak ada. tmux ls menampilkan sesi yang masih ada.
Jika Anda terhubung dan menemukan prompt shell biasa di tempat Claude Code sebelumnya berjalan, proses tersebut berakhir tanpa mengakhiri sesi. Periksa dmesg -T | tail untuk mencari baris seperti Out of memory: Killed process 4821 (claude). Baris ini muncul saat mesin dengan RAM kurang dari persyaratan 4 GB melakukan pengeditan besar. Jika baris tersebut tidak ada, Claude Code berhenti sendiri. Riwayat scrollback shell di atas prompt berisi penyebabnya.
Jika sebuah window kembali dalam ukuran kecil dengan ruang kosong di sekelilingnya, berarti dua client terhubung dengan ukuran berbeda. tmux menyesuaikan ukuran window dengan client terhubung yang paling kecil. Laptop Anda masih mempertahankan sesi dengan lebar 200 kolom, sementara ponsel meminta lebar 40 kolom. Lepaskan client lain saat Anda terhubung: tmux attach -d -t claude.
FAQ
Apakah saya dapat menjalankan Claude Code langsung di ponsel, bukan di VPS?
Tidak. Platform yang didukung per Juli 2026 adalah macOS, Windows, Ubuntu 20.04 atau yang lebih baru, Debian 10 atau yang lebih baru, dan Alpine 3.19 atau yang lebih baru, dengan RAM 4 GB atau lebih. Android dan iOS tidak termasuk dalam daftar tersebut. Ponsel juga menangguhkan aplikasi dan terus mengubah alamat jaringan, sehingga tidak cocok untuk menjalankan agen dalam waktu lama. Jalankan di server dan gunakan ponsel sebagai tampilan.
Apakah sesi tetap berjalan jika saya menutup aplikasi atau kehilangan sinyal?
Ya. Dua komponen terpisah menangani hal tersebut. tmux menjaga proses tetap berjalan di server, sehingga proses tidak berhenti ketika koneksi berakhir. mosh menjaga koneksi tetap aktif saat alamat berubah, sehingga perpindahan dari wifi ke data seluler bahkan tidak memerlukan koneksi ulang. Dengan SSH biasa tanpa tmux, koneksi yang terputus mengirimkan SIGHUP dan Claude Code berhenti di tengah tugas.
Mengapa mosh terhubung lalu tidak menampilkan apa pun?
Login yang berhasil lalu macet dengan Nothing received from server on UDP port 60001. berarti UDP 60000 hingga 61000 belum dibuka. Tambahkan rentang tersebut di ufw, lalu tambahkan lagi di firewall jaringan provider Anda, karena pada sebagian besar panel keduanya merupakan kontrol yang terpisah. Jika mosh justru melaporkan bahwa mosh-server tidak ditemukan, server tidak memiliki paket tersebut: sudo apt install mosh.
Bagaimana cara menghentikan Claude Code dari keyboard yang tidak memiliki tombol Esc?
Tambahkan baris tombol. Termux mengonfigurasikan baris tersebut dengan extra-keys di ~/.termux/termux.properties, sedangkan Termius dan Blink menyediakan baris yang dapat Anda ubah melalui pengaturan. Esc menghentikan respons yang sedang berjalan dan mempertahankan pekerjaan yang sudah selesai. Ctrl+C juga menghentikan proses, tetapi jika ditekan dua kali saat prompt tidak aktif, Claude Code akan keluar. Karena itu, gunakan Esc terlebih dahulu.
Apakah membuka SSH ke Internet cukup aman untuk penggunaan ini?
Dengan autentikasi kata sandi dinonaktifkan, satu-satunya kredensial yang dapat berhasil adalah key yang tidak pernah meninggalkan perangkat Anda. Ini merupakan risiko yang wajar untuk mesin yang dapat Anda bangun ulang. Berikan setiap perangkat key sendiri, sehingga jika ponsel hilang, Anda hanya perlu menghapus satu baris di authorized_keys. Jika Anda tidak ingin menerima koneksi pada port publik, tempatkan server di balik WireGuard dan biarkan sshd mendengarkan pada alamat tunnel.