telepty adalah control plane sesi agen ringan yang memungkinkan Anda mengirim instruksi dari jarak jauh dan membaca layar sesi terminal AI CLI (claude, codex, gemini, dll.) yang berjalan di banyak mesin — penalaran dan pekerjaan tetap dilakukan oleh masing-masing agen (data plane), sementara telepty hanya menangani lapisan yang memanggil sesi-sesi itu berdasarkan alamat dan menjamin pengirimannya (daemon latar belakang berbasis PTY + bridge sesi). Setiap sesi diberi alamat berbasis nama, verifikasi dilakukan sampai instruksi benar-benar diterima, dan mendukung macOS·Linux·Windows. Untuk transfer lintas mesin, telepty tidak membuat sendiri mekanismenya, melainkan dibangun di atas Tailscale (WireGuard) yang sudah terbukti — alih-alih menambah permukaan serangan dengan mengimplementasikan ulang pertukaran kunci, NAT traversal, dan enkripsi, telepty memilih mendelegasikannya ke lapisan yang telah teruji di dunia nyata selama bertahun-tahun. Ini adalah open source berlisensi MIT.
npm i -g @dmsdc-ai/aigentry-telepty && telepty daemon start
# Membungkus CLI yang sudah dipakai apa adanya dan menjadikannya sesi bernama (sekali di tiap mesin)
telepty allow --id orchestrator claude # sesi claude di mesin ini → "orchestrator"
telepty inject "backend@100.x.y.z" "Mulai refactor middleware autentikasi" # kirim instruksi ke sesi remote
telepty read-screen "backend@100.x.y.z" # cek progres
telepty broadcast "Selesaikan pekerjaan dan laporkan status" # umumkan ke semua sesi
Latar belakang
Mengoperasikan banyak sesi AI CLI di banyak mesin kini makin umum dalam pengembangan. Eksekusi memang bisa diskalakan secara paralel sebanyak jumlah sesi, tetapi pengiriman antarsesi — penyebaran instruksi, pengecekan progres, pengambilan hasil — masih dilakukan manual dengan berpindah-pindah terminal. Alat ini juga berangkat dari bottleneck tersebut: ketika tiga sesi AI CLI dijalankan bersamaan di tiga mesin, tahap "pengiriman" untuk membawa instruksi dan hasil justru menjadi hambatan lebih dulu dibanding eksekusinya.
- Sebelumnya: bolak-balik di 3 terminal, pindah fokus → copy-paste instruksi → ulangi pengecekan progres untuk tiap sesi
- telepty: dari 1 terminal, suntikkan instruksi dan ambil layar lewat alamat
nama@host
Alat yang ada belum mengisi lapisan ini. tmux/SSH adalah alat untuk "menempel" ke sesi, jadi mengirim dan mengecek tetap manual, sedangkan framework agen mengharuskan sesi dan workflow yang sudah ada ditulis ulang mengikuti caranya sendiri. telepty menargetkan lapisan tipis di antaranya — membiarkan sesi yang sudah berjalan tetap apa adanya, lalu menurunkan hanya bagian pengiriman menjadi infrastruktur.
Desain
- Menunjuk sesi dengan nama — semua sesi dipanggil sebagai
<nama_sesi>@<host>. Tidak perlu peduli sesi target ada di mesin mana atau OS apa. - Membedakan "terkirim" dan "diterima" — jika sesi penerima sedang sibuk, pesan disimpan ke antrean (mailbox), lalu waktu penerimaan sebenarnya dipastikan berdasarkan status render terminal. Tidak perlu mengirim lalu mengecek lagi secara manual.
- Sesi tetap hidup meski daemon di-restart — proses yang memegang sesi (bridge) dipisahkan dari daemon routing (daemon), sehingga upgrade daemon tidak memutus pekerjaan yang sedang berjalan.
- Transport didelegasikan ke lapisan yang sudah teruji — tidak membuat protokol P2P sendiri. Jika ada Tailscale, daemon otomatis mendeteksi tailnet IP dan langsung terhubung di atasnya: 0 pembukaan port, 0 pengelolaan sertifikat, 0 aturan firewall. Di lingkungan tanpa tailnet, koneksi dilakukan lewat SSH tunnel (
telepty connect user@host) — di kedua jalur itu, enkripsi dan identitas ditangani oleh alat yang sudah teruji, sementara telepty hanya menangani pengalamatan sesi dan pengiriman di atasnya.
Perintahnya ada enam: inject / read-screen / attach / send-key / broadcast / list, sehingga CLI sekaligus menjadi API yang bisa langsung dikombinasikan di shell script. Dan ini tidak dibuat hanya untuk manusia — paket ini menyertakan 9 skill untuk Claude Code·Codex·Gemini CLI (dipasang lewat installer bawaan), sehingga agen itu sendiri memakai telepty sebagai alat: melihat daftar sesi, mengirim instruksi ke agen di mesin lain, dan membaca layarnya. Relay di demo bawah tepat memperlihatkan situasi itu — bukan manusia, melainkan masing-masing LLM yang menjalankan telepty inject secara langsung.
Metrik referensi awal (diukur pada build 0.6.11 — rilis saat ini 0.7.1 · termasuk round-trip jaringan dan overhead inisialisasi PTY)
- Konfirmasi antrean→penerimaan untuk gated inject ke sesi busy: Linux sekitar 487ms · Windows sekitar 1.2s — pengukuran masih terus ditambah; yang penting bukan angkanya melainkan bahwa kriteria penerimaan didasarkan pada ACK yang benar-benar mendarat di sisi penerima, bukan sekadar HTTP accept.
- Pengiriman lintas mesin antar 3 OS macOS·Linux·Windows telah diverifikasi dengan kriteria yang sama.
Keamanan
Daemon hanya bind ke localhost (127.0.0.1) dan IP khusus tailnet — tanpa eksposur 0.0.0.0, sehingga dari luar tailnet port ini bahkan tidak bisa dijangkau lewat port scan. Hanya peer tailnet yang dipercaya, dan hak tulis ke PTY tidak melampaui cakupan pengguna yang memiliki sesi tersebut. Mulai 0.7.1, request dari browser ditolak secara eksplisit — jalur di mana halaman web yang dikunjungi pengguna dapat mengakses sesi lewat control API localhost atau WebSocket telah diblokir (tidak ada allowed origin bawaan).
Batasan
Masih beta. Masih ada edge case rendering per-CLI, dan Windows masih berlabel beta. Karena tidak melakukan emulasi terminal, read-screen mengembalikan bagian akhir output stream, bukan cell grid — pada TUI yang sering repaint, frame yang sama bisa tampak berulang. Hal-hal yang sudah diketahui dirangkum di bagian Limitations pada README.
Tautan
- GitHub: https://github.com/dmsdc-ai/aigentry-telepty
- Demo README: adegan ketika 3 LLM (Grok·Codex·Claude) di 3 mesin (macOS·Linux·Windows) saling me-relay dengan langsung menjalankan telepty inject — tiap layar adalah tangkapan live CLI TUI asli melalui
attach. Perintah yang sama juga bekerja apa adanya antarsesi di dalam satu mesin (termasuk demo relay mesin yang sama). - npm:
@dmsdc-ai/aigentry-telepty(MIT, 0.7.1)
Saya ingin tahu bagaimana solusi lapisan pengiriman dari para pengguna yang mengoperasikan banyak sesi AI CLI. Kalau ada masukan, akan saya refleksikan.
1 komentar
Sebagai tambahan soal motivasi pengembangannya: awalnya saya menjalankan 4 sesi Claude, Codex, Gemini, dan Grok di 3 mesin lintas platform, lalu mengalami bottleneck bahwa “eksekusinya bisa scale-out, tetapi penyampaiannya terikat pada 1 orang”. Ini bukan pengganti tmux/SSH, melainkan alat pendamping — tujuannya bukan “koneksi terminal”, melainkan “pengalamatan sesi + konfirmasi penyampaian”. Silakan tanyakan apa saja jika ada yang ingin diketahui.