Kendin yap yığını

tmux, mosh ve Tailscale: telefonunuzda kodlama ajanları için kendin yap yığını

Claude Code veya Codex'i bir telefondan çalıştırmanın klasik yolu; bir terminal uygulaması, özel bir ağ, ağ değişikliklerinden sağ çıkan bir bağlantı ve geri kalan her şeyden sağ çıkan bir oturumdur. Her parça ücretsiz ve iyi bilinir. İşte tam komutlarla kurulum ve nerede zahmetli hale geldiğine dürüst bir bakış.

tmux, mosh ve Tailscale: telefonunuzda kodlama ajanları için kendin yap yığını

Kısa yanıt

Tailscale'i sunucuya ve telefonunuza kurun, ardından sunucuya yalnızca özel tailnet'iniz üzerinden ulaşılabilsin diye tailscale set --ssh komutunu açın. Ajanı bağlantınızdan uzun yaşaması için tmux new -A -s main içinde çalıştırın. Claude Code için ~/.tmux.conf dosyasına set -g allow-passthrough on ve extended-keys satırlarını ekleyin. Blink, Termius veya Termux'tan mosh ile bağlanın (mosh dev@server -- tmux new -A -s main). İyi çalışır. Zayıf noktaları; küçük bir ekranda tam ekran bir TUI ve hook eklemediğiniz sürece anlık bildirim olmamasıdır.

Claude Code'u bir telefondan nasıl kullanacağınızı aradıysanız, bu yığını muhtemelen bir düzine blog yazısında görmüşsünüzdür. Çünkü işe yarıyor. Tailscale, telefonunuza açık port olmadan sunucuya özel, şifreli bir yol verir. mosh, Wi-Fi'dan 4G'ye geçtiğinizde veya telefonu kilitlediğinizde bağlantıyı canlı tutar. tmux, bağlantı yine de koptuğunda ajanı çalışır tutar. Üçünü düzgünce nasıl bir araya getireceğiniz burada.

Yığın

KatmanAraçNeyi çözerŞu durumda atlayın…
AğTailscale (Tailscale SSH)NAT arkasında bile sunucuya özel erişim; herkese açık SSH portu yok; SSO destekli erişimSunucunun zaten sağlamlaştırılmış genel SSH'si var ve bundan memnunsunuz
TaşımamoshAğ değişikliklerinden, uykudan ve kötü sinyalden sağ çıkar; yerel yankı gecikmeyi gizlerYalnızca kararlı bir ağdan bağlanıyorsunuz
OturumtmuxBağlantınız kesildiğinde ajan çalışmaya devam eder; proje başına birkaç pencereAsla. En çok önemli olan katman bu.
İstemciBlink, Termius, Termux…Telefonda bir terminal—

tmux kurulumu

Onu kurun ve her yerden yeniden bağlanabileceğiniz adlandırılmış bir oturum başlatın:

sudo apt install tmux          # Debian/Ubuntu (dnf / apk elsewhere)
tmux new -A -s main            # attach to "main", or create it
cd ~/src/my-app && claude      # or: codex, agy, opencode…
# detach with Ctrl-b then d — the agent keeps running

-A, aynı komutun ilk seferde ve sonraki her seferde çalışmasını sağlar; bu da onu telefonunuzun terminal uygulamasında snippet olarak kaydetmek için iyi bir aday yapar. Ardından tmux'a ajanların ihtiyaç duyduğu ayarları verin. Anthropic'in terminal yapılandırma belgeleri, tmux içinde Shift+Enter'ın yeni satır eklemek yerine gönderdiğini ve bu satırları eklemediğiniz sürece bildirimlerin dış terminale hiç ulaşmadığını söylüyor:

# ~/.tmux.conf
set -g allow-passthrough on
set -s extended-keys on
set -as terminal-features 'xterm*:extkeys'

# quality of life on a phone
set -g mouse on                # scroll and pick panes with your finger
set -g history-limit 50000     # agents print a lot

Bunu tmux source-file ~/.tmux.conf ile uygulayın. Genişletilmiş tuşlarla bile birçok telefon klavyesi Shift+Enter gönderemez. Claude Code yeni satır için Ctrl+J'yi ya da ardından Enter gelen \ karakterini de kabul eder ve ikisi de her terminalde çalışır.

Proje veya ajan başına bir tmux penceresi kullanın. Ctrl-b c yeni bir pencere açar, Ctrl-b n bir sonrakine geçer. Aynı depoda birkaç oturum için her birine kendi git worktree'sini verin. 7/24 rehberi bunu ve yeniden başlatmada ne olduğunu anlatıyor. tmux oturumları yeniden başlatmadan sağ çıkmaz.

mosh vs ssh

Düz SSH tek bir TCP bağlantısı üzerinden çalışır. Telefonunuz ağ değiştirdiğinde ya da iOS uygulamayı bir süre askıya aldığında o bağlantı ölür ve siz yeniden bağlanıp oturuma yeniden katılırsınız. mosh SSH üzerinden oturum açar, sunucuda mosh-server'ı başlatır ve ardından IP değişikliklerine ve uykuya rağmen devam eden kendi UDP protokolüne geçer. Ayrıca yazdıklarınızı yerelde yansıtır; böylece 200 ms'lik bir bağlantı duyarlı hissettirir.

# on the server
sudo apt install mosh          # Fedora: sudo dnf install mosh · Alpine: apk add mosh

# from a client
mosh dev@my-server -- tmux new -A -s main

mosh 60000–61000 UDP portlarını kullanır. Genel bir IP üzerinden bunları güvenlik duvarınızda açmanız gerekir, örneğin sudo ufw allow 60000:61000/udp artı bulut sağlayıcınızın güvenlik duvarı. Tailscale üzerinden trafik tailnet içinde kalır, bu yüzden herkese açık bir porta gerek yoktur. Bir sınırlama: mosh yalnızca görünen ekranı senkronize eder; bu yüzden mosh'un kendisinde geri kaydırma yoktur. mosh'un kendi belgeleri geçmiş için tmux veya screen öneriyor; bu da ikisini birlikte çalıştırmak için bir neden daha.

Tailscale SSH

Tailscale sunucunuzu ve telefonunuzu özel bir WireGuard ağına (bir tailnet'e) koyar. Tailscale SSH bir adım daha ileri gider: SSH kimlik doğrulamasını tailnet kimliğinizle Tailscale yapar; böylece hiç SSH anahtarı dağıtmazsınız.

# on the server (Linux)
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up              # log in to your tailnet
sudo tailscale set --ssh       # enable Tailscale SSH

Tailscale'in belgelerine göre tailscale set --ssh, tailscaled'in tailnet'inizden gelen trafik için 22 numaralı portu devralmasını sağlar. Herhangi bir normal SSH istemcisi o zaman makinenin MagicDNS adını kullanarak ssh dev@my-server ile bağlanır. Bazı ayrıntılar:

  • Check modu. Varsayılan politika "action": "check" kullanır; bu yüzden zaman zaman bir tarayıcıda yeniden kimlik doğrulamanız istenir. Terminalde bir giriş URL'si görünmesi beklenen bir durumdur.
  • Sunucu platformları. Linux tam olarak desteklenir. macOS'ta yalnızca açık kaynak tailscale + tailscaled CLI yapısı bir Tailscale SSH sunucusu olabilir; bu yüzden App Store uygulaması olan bir Mac mini, tailnet üzerinden normal SSH kullanmalıdır.
  • Genel portu kapatın. Makineye tailnet üzerinden ulaşabildiğinizi doğruladıktan sonra sağlayıcınızın güvenlik duvarında genel 22 numaralı portu kapatın. Dışarıda kalmamak için bunu bu sırayla ve açık ikinci bir oturumla yapın.

Telefonda Tailscale uygulamasını kurun, aynı tailnet'te oturum açın ve bağlı bırakın. Terminal uygulamanız o zaman my-server'a yerel ağınızdaymış gibi ulaşır.

iOS ve Android istemcileri

İstemciPlatformlarmoshNotlar
Blink ShelliPhone, iPadEvetmosh etrafında kurgulanmış; iPad'de güçlü donanım klavyesi desteği. blink.sh'ye göre iki haftalık denemeden sonra yıllık $19.99.
TermiusiOS, Android, masaüstüEvetÜcretsiz Starter katmanı SSH ve mosh içerir; cihazlar arası senkronizasyon Pro'da (termius.com/pricing'e göre yıllık faturalandırmada aylık $10)
TermuxAndroidEvet (pkg install openssh mosh)Telefonda tam bir Linux kullanıcı alanı; ücretsiz ve açık kaynak
JuiceSSHAndroidEvetmosh.org'da bir mosh istemcisi olarak listeleniyor

Hangi istemciyi seçerseniz seçin; Esc, Ctrl, Tab ve oklardan oluşan ek bir tuş satırı ayarlayın. Claude Code kesmek için Esc'i, izin modları arasında geçiş için Shift+Tab'ı kullanır ve ikisi de standart bir telefon klavyesinde yoktur.

Nerede bozuluyor

Yığın güvenilirdir. Sürtünme, güvenilirliğin etrafındaki her şeydedir.

  • 6 inçlik bir ekranda masaüstü TUI'si. Claude Code, Codex ve agy 100+ sütun için tasarlanmıştır. Telefonda satır kaydıran diff'ler okur, araç çıktısını başparmağınızla kaydırır ve giriş satırını ararsınız.
  • Anlık bildirim yok. Ajan işini bitirdiğinde veya onaya ihtiyaç duyduğunda, bir hook eklemediğiniz sürece size hiçbir şey haber vermez. Terminal yalnızca uygulama öndeyken bildirim verir. İstekleri telefonunuzdan onaylama rehberimiz insanların eklediği ntfy hook'larını anlatıyor.
  • Geri kaydırmaya gömülmüş onaylar. Bir izin isteği, kalabalık bir panelde birkaç satırdır. Bir saat sonra geri dönerseniz onu bulmanız, okumanız ve ok tuşlarıyla yanıtlamanız gerekir.
  • Arka plan sorunu. iOS, terminal uygulamalarını onlardan çıktıktan kısa süre sonra askıya alır. Geri döndüğünüzde mosh toparlanır, ancak uygulama arka plandayken oturumu sizin yerinize izleyemez.
  • Kopyala ve yapıştır. tmux, mosh ve bir telefon terminali arasında metin seçmek eziyettir. Giriş bağlantıları gibi uzun URL'ler en kötü durumdur.
  • Birkaç sunucu, birkaç ajan. Her yeni makine bir Tailscale düğümü, bir ana bilgisayar girdisi ve hatırlanacak bir tmux düzeni daha demek.

Bunların hiçbiri yığından kaçınmak için bir neden değil. Ücretsizdir, her ajanla çalışır ve her parçayı siz kontrol edersiniz. Neye imza attığınızı bilmek için bir nedendir. SSH terminal uygulamaları ve Maude karşılaştırmamız bu ödünleşimi ayrıntılı olarak ele alıyor.

Ya da bunun için yapılmış bir uygulama kullanın

Maude, ajan işleri için istemci ve oturum katmanlarının yerini alır. Sunucudaki küçük bir daemon oturumların sahibidir; böylece tmux olmadan çalışmaya devam ederler ve uygulama onları araç kartları, diff'ler, İzin ver/Reddet içeren anlık bildirimler ve bir gelen kutusuyla sohbet olarak gösterir. Tailscale'i tutabilirsiniz: sunucu Maude'un relay'ine kendisi bağlandığı ve SSH yedek olduğu için Maude tailnet ve LAN sunucularıyla çalışır. Bir kabuğa ihtiyacınız olduğunda da her oturumda gerçek bir terminal var. Claude Code, Codex, OpenCode, Grok Build ve Antigravity ile çalışır.

Sıkça sorulan sorular

Claude Code için tmux mu screen mi?
İkisi de bir oturumu canlı tutar, ama tmux daha iyi seçimdir: Anthropic, Claude Code'un ihtiyaç duyduğu tmux ayarlarını (allow-passthrough ve extended-keys) belgeliyor, bölmesi ve betiklemesi daha kolay ve çoğu telefon terminali rehberi onu varsayıyor.
Tailscale ile mosh'a hâlâ gerek var mı?
Farklı sorunları çözerler. Tailscale size kararlı bir özel adres verir ve açık port gerektirmez; onun üzerinden SSH bağlantınız ise telefon ağ değiştirdiğinde veya bir süre uykuda kaldığında yine kopar. mosh bundan sağ çıkar. Çoğunlukla kararlı bir Wi-Fi'dan bağlanıyorsanız, Tailscale üzerinden SSH artı tmux yeterlidir.
Claude Code için en iyi iOS terminali hangisi?
iPhone ve iPad'de mosh'a en çok odaklanan seçenek Blink Shell'dir; başlamak için en kolayı ise Termius'tur (ücretsiz katman, çoklu platform). İkisi de Tailscale ile çalışır. Hangisini seçerseniz seçin Esc, Ctrl ve Shift+Tab için ek bir tuş satırı ayarlayın.
mosh için port açmam gerekiyor mu?
Genel bir IP'de evet: UDP 60000–61000. Bir Tailscale tailnet'i üzerinden hayır — trafik tailnet içinde gider ve internete açılması gereken hiçbir şey yoktur.
Tailscale SSH bir Mac mini sunucuda çalışır mı?
Tailscale'in belgelerine göre yalnızca macOS'taki açık kaynak tailscale/tailscaled CLI yapısıyla. Standart uygulamayla bunun yerine Mac'in normal SSH sunucusunu tailnet üzerinden kullanın.

Telefonunuzda TUI'yi bırakın

Sunucunuzu ve tailnet'inizi koruyun, terminali ajanlar için yapılmış bir uygulamayla değiştirin. iOS ve Android.

Download Maude on the App Store Get Maude on Google Play