mengubah terminal menjadi ruang kolaborasi: share plugin dan session sharing UI, izin read dan write untuk pair programming, plus web client 0.43 yang membuka session dari browser tanpa perlu menginstal apa pun.

Di episode 19 kalian membawa Zellij ke server jauh dan membuatnya tahan terhadap koneksi putus. Episode 20 menutup fase kelima series ini dengan satu langkah terakhir yang sering diabaikan: berbagi. Kita membahas Multiplayer & Web Client — kemampuan Zellij untuk menampung banyak client dalam satu session, membagikan session ke orang lain, dan mengaksesnya dari browser tanpa instalasi apa pun.
Mengapa fitur ini penting? Kolaborasi di terminal selama ini adalah pekerjaan manual yang menyakitkan: screen-sharing dengan lag, menyalin perintah bolak-balik, atau saling menunggu giliran mengetik. Zellij mengubahnya menjadi pengalaman native. Satu session bisa ditumpangi banyak orang sekaligus — masing-masing dengan kursor sendiri — dan seorang rekan yang bahkan tidak memasang Zellij pun bisa bergabung cukup lewat URL di browser. Untuk pair programming, demonstrasi, teaching, atau inspeksi kejadian produksi, ini mengubah segalanya. Dan karena seluruh fitur ini berjalan di atas model client-server yang sudah kalian kenal sejak episode 2, tidak ada konsep baru yang membingungkan — hanya cara penggunaan yang berbeda.
Kita akan membahas enam hal: konsep multiplayer dengan banyak client, share plugin dan antarmuka session sharing, sistem izin read dan write untuk kolaborasi yang terkontrol, web client 0.43 untuk akses dari browser, konfigurasi serta keamanan web server, dan alur pair programming yang siap dipakai. Di akhir episode, terminal kalian tidak lagi pribadi — ia bisa menjadi ruang kerja bersama, kapan pun kalian menginginkannya.
Sejak awal, Zellij dirancang dengan model client-server: satu server Zellij bisa melayani banyak client yang menempel pada session yang sama. Ini bukan trik; inilah arsitektur yang sudah kita bahas di episode 2, dan multiplayer hanyalah konsekuensi alaminya. Dua terminal di mesin yang sama bisa attach ke session yang sama dengan perintah yang sama:
zellij attach pairDua client yang menempel pada session yang sama tidak harus berasal dari terminal yang sama. Rekan di mesin lain bisa bergabung dengan cara yang sama, selama keduanya berbagi akses ke mesin tempat session berjalan — misalnya lewat SSH (episode 19) atau lewat web server yang akan kita bahas. Intinya, client Zellij hanyalah jendela; server yang memegang session bisa menerima banyak jendela sekaligus, dan semua jendela itu tetap tersinkron dalam satu keadaan.
Begitu dua client menempel, keduanya melihat layar yang sama dan bisa mengirim input. Perilaku kursor ditentukan oleh opsi mirror_session — jika bernilai false (default), setiap client memiliki kursor sendiri; jika true, layar di-mirror sehingga semua client melihat tepat apa yang dilihat host. Perbedaan ini penting untuk dipahami sebelum mengatur sesi kolaborasi.
Note
Pilihan mirror_session menentukan pengalaman kolaborasi. Mode mirror (true) cocok untuk demonstrasi — semua orang melihat layar yang persis sama, seperti share screen tanpa lag. Mode kursor terpisah (false) cocok untuk pair programming sejati — setiap orang menavigasi pane-nya sendiri tanpa saling menabrak. Karena opsi ini butuh restart untuk diterapkan, tetapkan di config.kdl sesuai pola kerja tim kalian, dan ingat bahwa perubahan di dalam session tetap bisa memengaruhi semua client — Zellij memperlakukan setiap client sebagai pengguna yang sah.
Untuk mengontrol siapa yang bisa bergabung dan lewat jalur apa, Zellij menyediakan share plugin — antarmuka built-in untuk mengelola berbagi session. Bukalah dengan Ctrl+o lalu s. Dari satu layar ini kalian bisa: memulai atau menghentikan web server, membagikan atau menarik berbagi session tertentu, dan membuat serta mengelola token autentikasi.
Ketika session dibagikan, share plugin menampilkan informasi yang kalian butuhkan untuk mengundang orang lain — termasuk URL tempat session bisa diakses. Inilah "session sharing UI" yang membuat kolaborasi menjadi mulus: tidak ada perintah rahasia, semua instruksi tampil di layar. Bagian penting dari antarmuka ini adalah manajemen token:
zellij web
zellij web --create-token
zellij web --create-read-only-tokenPerintah zellij web memulai web server, sementara dua perintah berikutnya membuat token. Token yang dibuat dari CLI dan dari share plugin adalah hal yang sama — keduanya dikelola dalam satu sistem autentikasi, dan bisa dicabut kapan saja dengan zellij web --revoke-token.
Tip
Biasakan memakai share plugin (Ctrl+o lalu s) alih-alih menghafal perintah CLI ketika bekerja interaktif. Antarmukanya memberikan umpan balik visual — status server, status berbagi setiap session, dan daftar token — yang tidak bisa didapat dari sekadar mengetik. CLI tetap berguna untuk otomasi dan skrip, misalnya memastikan web server berjalan di server sebelum kalian meninggalkannya (pola dari episode 19).
Kolaborasi yang sehat butuh kontrol akses. Zellij menyediakan dua tingkat izin yang jelas, dan keduanya bisa dipakai dari terminal maupun browser:
| Metode | Izin | Kegunaan |
|---|---|---|
zellij attach session | Read & Write | Peserta ikut bekerja: mengirim input, membuka pane, menjalankan perintah |
| Token login penuh | Read & Write | Peserta dari browser dengan kontrol penuh |
zellij watch session | Read Only | Pengamat di terminal: melihat, tidak bisa mengirim input |
| Token read-only | Read Only | Pengamat di browser: demonstrasi, teaching, streaming |
Izin read-only lahir dari kebutuhan nyata. Saat mengajar atau mendemokan, kalian ingin peserta melihat terminal tanpa risiko mereka menekan tombol yang salah. Token read-only membuat ini aman — peserta menonton layar secara langsung, tetapi tidak bisa mengirim input atau bahkan mengubah ukuran window:
zellij web --create-read-only-token --token-name observerBayangkan satu kasus konkret: kalian sedang menangani insiden produksi dan membutuhkan mata kedua dari rekan yang lebih senior. Kalian berbagi session dengan token read-only, rekan mengamati output secara langsung, dan memberi arahan lewat suara — tanpa risiko jarinya menekan tombol yang tidak diinginkan di server yang sedang bermasalah. Inilah kekuatan izin read-only: kolaborasi tanpa memberikan kendali, sebuah batas yang sangat dihargai di lingkungan produksi.
Token read-only adalah alat yang sangat berguna untuk screencast, streaming, atau saat klien meminta "lihat saja apa yang sedang terjadi" di server produksi. Dari sisi terminal, zellij watch memberikan perilaku yang sama: kalian melihat alur session secara real-time tanpa bisa menyentuhnya.
Fitur paling mencolok dari episode ini adalah web client (diperkenalkan di 0.43): Zellij bisa diakses dari browser tanpa memasang apa pun. Yang perlu terjadi hanyalah web server bawaan Zellij berjalan. Setelah server aktif, buka http://127.0.0.1:8082 di browser, masukkan token login, dan kalian akan melihat welcome-screen Zellij — lengkap dengan daftar session yang bisa di-attach atau di-resurrect.
Keindahan web client ada pada skema URL-nya. Setiap session punya URL yang bisa di-bookmark: http://127.0.0.1:8082/nama-session. Ketika URL itu dibuka, Zellij mencari session dengan nama tersebut:
Akibatnya, session menjadi bookmark seperti halaman web — kalian bisa menandai http://server:8082/ops dan selalu mendarat di konteks kerja yang sama, bahkan setelah mesin reboot total. Web client juga mendukung browser mobile, sehingga memantau session dari ponsel bukan lagi angan-angan.
Important
Saat bekerja dari browser, pertimbangkan preset keybinding unlock-first yang kita singgung di episode 9. Di dalam browser, banyak kombinasi kunci (misalnya Ctrl+w untuk menutup tab, Ctrl+t untuk membuka tab baru) sudah dipakai browser itu sendiri — preset unlock-first menghindari tabrakan ini dengan memaksa kalian menekan Ctrl+g dulu sebelum memasuki mode Zellij. Tanpa ini, menekan shortcut Zellij di browser bisa menutup tab yang sedang kalian pakai.
Web server Zellij dimatikan secara default — ini keputusan keamanan yang disengaja. Kalian bisa menyalakannya secara otomatis setiap kali Zellij dimulai lewat config.kdl:
web_server true
web_server_ip "127.0.0.1"
web_server_port 8082
enforce_https_on_localhost false
web_client {
font "monospace"
cursor_blink false
cursor_style "block"
}Perhatikan logika keamanannya. Selama web server hanya melayani 127.0.0.1, HTTP polos masih diizinkan — ini untuk kemudahan uji coba lokal. Begitu kalian mendengarkan pada antarmuka lain (web_server_ip "0.0.0.0"), HTTPS menjadi wajib, dan kalian harus menyediakan sertifikat:
web_server_ip "0.0.0.0"
web_server_port 443
web_server_cert "/etc/zellij/certs/server.pem"
web_server_key "/etc/zellij/certs/server-key.pem"Ada dua cara memulai web server — lewat CLI atau lewat konfigurasi:
zellij webSertifikat bisa dibuat dengan mkcert untuk pengembangan lokal, atau sertifikat resmi dari CA bila layanan diekspos ke jaringan yang lebih luas. Zellij merekomendasikan menempatkan web server di belakang reverse proxy seperti nginx ketika dihadapkan ke internet, karena web server itu sendiri tidak menyediakan rate-limiting.
Warning
Model keamanan web server Zellij berasumsi bahwa pengguna yang terautentikasi adalah orang tepercaya — dan memang begitu, karena terminal adalah akses langsung ke mesin. Karena itu: jangan pernah membagikan token ke pihak yang tidak kalian percaya, jangan pernah memaparkan port web server langsung ke internet tanpa HTTPS dan reverse proxy, dan cabut token yang tidak lagi dipakai. Mematikan web server ketika tidak digunakan adalah kebiasaan keamanan paling sederhana yang bisa kalian terapkan.
Semua elemen di atas bersatu dalam satu alur yang paling sering dipakai: pair programming. Berikut rangkaian lengkap yang bisa kalian tiru:
zellij -s pair.Ctrl+o lalu s untuk membuka share plugin, nyalakan web server, dan bagikan session pair.zellij attach pair dari terminalnya sendiri.Alur ini bekerja baik untuk kolaborasi jarak jauh maupun lokal, dan menutup lingkaran yang kita bangun sejak episode 0: terminal yang tadinya ruang pribadi kini menjadi ruang kerja bersama yang aman dan terkontrol.
Yang membedakan alur ini dari sekadar screen-sharing adalah kehadiran nyata setiap peserta: rekan kalian bisa mengetik di pane-nya sendiri, membuka tab, atau justru hanya menonton. Tidak ada lag render, tidak ada giliran yang harus diatur secara manual — Zellij menangani sinkronisasi di balik layar. Setelah beberapa kali mencoba, kalian akan bertanya-tanya mengapa kolaborasi terminal selama ini terasa begitu rumit.
zellij web berjalan (atau web_server true di config), dan periksa statusnya dengan zellij web --status.0.0.0.0 tanpa sertifikat akan ditolak atau tidak aman. Siapkan sertifikat dan reverse proxy sebelum mengekspos layanan.Ctrl+g) atau beralih ke client terminal untuk kerja yang intensif.Di episode 20 ini kalian telah mengubah Zellij dari workspace pribadi menjadi ruang kolaborasi. Kita memulai dari konsep multiplayer dengan banyak client, lalu mengelola berbagi lewat share plugin dan session sharing UI. Kalian memahami sistem izin read dan write — dari zellij attach dan token penuh hingga zellij watch dan token read-only — kemudian melihat bagaimana web client 0.43 membuka session dari browser melalui URL yang bisa di-bookmark. Kita tutup dengan konfigurasi web server yang aman dan alur pair programming yang siap pakai.
Poin yang harus kalian bawa:
mirror_session menentukan mode kursor.Ctrl+o lalu s) adalah pusat kontrol berbagi session dan token.zellij watch di terminal, token read-only di browser.Ingat, series Belajar Zellij terdiri dari 28 episode yang saling membangun. Kini Zellij kalian tangguh, terorganisasi, dan siap kolaborasi — tetapi apa yang terjadi ketika Zellij bertemu Zellij, atau ketika input harus menerobos lapisan yang bertumpuk? Di episode 21 selanjutnya kita membuka fase keenam: Nested Zellij & Advanced Input Handling — menjalankan Zellij di dalam Zellij, mengatasi konflik keybinding dengan mode Locked, mouse support yang lebih dalam, dan integrasi fitur terminal modern. Sampai jumpa di episode 21!