Saya seorang ayah dengan dua anak, salah satunya autistik. Jadwal keluarga kami tidak selalu mengikuti jam kantor. Ada les, urusan sekolah, kunjungan ke dokter atau rumah sakit, dan kadang ia memang hanya perlu ditemani orang tuanya. Karena itu, saya sering harus meninggalkan meja di tengah jam kerja. Saya beruntung memiliki pekerjaan remote dan perusahaan memaklumi kondisi saya. Meski begitu, rasa bersalah tetap muncul setiap kali jam kerja terpakai untuk urusan keluarga. Walaupun tidak diminta, saya selalu menambah waktu kerja mandiri setelahnya.
Dulu, waktu kerja fleksibel berarti hanya memindahkan jam kerja. Pekerjaan ikut berhenti sampai saya kembali ke laptop.
Semuanya berubah setelah saya mulai memakai coding agent. Agen membuat pekerjaan tetap berjalan saat saya pergi. Kemudahan itu menimbulkan pertanyaan baru: kalau agen dapat bekerja kapan saja dan di mana saja, kapankah saatnya pekerjaan itu berhenti?
Di situlah letak suka sekaligus dukanya.
Saya mulai merasakan perubahan besar sejak memakai Opus 4.5. Bagi saya, coding agent berubah dari demo app yang mengesankan menjadi alat kerja yang bisa diandalkan. Dengan tugas dan konteks yang jelas, agen bisa bekerja dengan andal dalam waktu yang cukup panjang.
Cara kerja saya sebagai software engineer pun berubah. Saya mulai menjalankan beberapa tugas sekaligus. Membuka banyak terminal menjadi hal biasa. Gagasan tentang sebuah software factory kecil, dengan satu orang mengarahkan beberapa agen, tidak lagi terdengar seperti isapan jempol.
Peran IDE saya semakin kecil. Implementasi lebih sering dikerjakan agen, sedangkan IDE dipakai untuk melihat kode dan diff. Perubahan terbesarnya terletak pada kehadiran saya selama pekerjaan berlangsung, dengan kata lain kehadiran saya bisa berkurang.
Setelah menjelaskan tugas dan menjalankan sesi, saya bisa meninggalkan meja untuk mengurus keluarga. Agen tetap bekerja ketika saya beranjak dari kursi. Untuk pertama kalinya, fleksibilitas berarti pekerjaan tetap berjalan saat saya pergi. Sebagian implementasi dapat selesai tanpa kehadiran saya.
Terdengar seperti sebuah kebebasan, namun kenyataannya tidak demikian. Saya masih menghabiskan banyak waktu untuk mengawasi agen bekerja.
Saya berpindah-pindah di antara beberapa terminal: memeriksa satu sesi, menjawab pertanyaan di sesi lain, lalu meninjau hasil berikutnya. Agen menulis kodenya, sementara saya tetap terpaku di depan layar menunggu permintaan berikutnya.
Laptop masih sulit ditinggalkan. Kini giliran saya yang menunggu agen.
Baru kemudian saya menyadari satu hal yang sederhana dan agak memalukan (mengapa saya tidak menyadari ini sebelumnya): sesi coding agent sebenarnya hanya percakapan.
Alurnya sederhana. Saya mengirim prompt, lalu agen menjalankan tugasnya di background. Setelah selesai, saya mengirim prompt berikutnya untuk melanjutkan percakapan yang sama. Percakapan itu tidak harus berlangsung di satu tab terminal atau bergantung pada sesi tmux yang terus berjalan. Saya pun tidak perlu mengingat nama setiap sesi.
Dari situ, saya merasakan perlunya kemampuan untuk mengelola sesi setiap agen. Saya pun memilih antarmuka web untuk mengelolanya.
Servernya berjalan di komputer saya sendiri dan dapat diakses dari perangkat lain melalui jaringan privat Tailscale. Susunan ini menjaga coding environment tetap privat.
Antarmuka web juga memberi saya ruang untuk menambahkan hal-hal yang belum tersedia di coding agent: sesi yang persisten, log, status, lampiran, serta tempat yang nyaman untuk menulis prompt kompleks. Satu antarmuka dapat mengelola berbagai coding agent. Proses setiap agen boleh berhenti dan dimulai kembali, tetapi percakapan serta hasil kerjanya tetap tersimpan.
Dari kebutuhan itulah saya mulai membangun Tycho.
Prototipe pertama Remote UI (dengan antarmuka web) saya buat pada awal Mei. Sejak awal, bentuknya adalah Progressive Web App (PWA), tujuannya agar nyaman dipakai dari ponsel. Versi desktop menurut saya kurang berguna: hanya akan memindahkan terminal ke browser, artinya masalah saya tidak teratasi karena laptop masih harus dibawa ke mana-mana.
Tycho baru berguna jika dapat mengikuti rutinitas saya. Sebelum pergi, saya bisa memberi agen tugas. Beberapa saat kemudian, perkembangannya dapat diperiksa lewat ponsel. Jika ada pertanyaan singkat, saya menjawabnya lalu kembali ke urusan keluarga tanpa perlu membuka laptop di tengah perjalanan.
Singkat cerita cara ini berhasil.
Saya tetap ingin memahami kode yang dihasilkan agen, meski sekarang semakin jarang membacanya baris demi baris. Peninjauan itu pun sering dilakukan dari ponsel. Bagi saya, vibe coding yang menerima hasil hanya karena aplikasi berjalan terlalu berisiko.
Karena itu, code viewer menjadi fitur penting. Agen semakin baik dalam merangkum perubahan, menjalankan tes, dan menunjukkan file yang perlu ditinjau. Sering kali, percakapan dan ringkasan diff sudah cukup untuk menentukan langkah berikutnya. Namun kode asli harus tetap tersedia ketika saya ingin memeriksanya.
Ponsel kini menjadi tempat saya meninjau kode. Dan tanggung jawab atas hasilnya tetap berada pada saya.
Beberapa agen yang bekerja secara paralel membutuhkan workspace terpisah. Solusi yang umum adalah git worktree, tetapi saya tidak pernah nyaman memakainya. Saya terus menemui error branch is already checked out, lalu selalu lupa branch tertentu berada di folder mana. Menambahkan AI sebagai solusi sebelum memahami dasar-dasar dari alur kerja ini hanya akan menambah kebingungan.
Karena itu, saya memilih untuk melakukan git clone di folder terpisah. Pilihan ini memakan lebih banyak ruang disk, tetapi lokasi setiap workspace jelas dan terisolasi. Saya cukup meminta agen meng-_clone repository_, mendaftarkan folder tersebut sebagai proyek di Tycho, lalu memakai Git seperti biasa.
Membosankan. Justru itu yang membuatnya dapat dipercaya.
Jika saya perlu melihat ke terminal untuk mengecek secara langsung, saya bisa menjalankan operasi git seperti biasa tanpa perlu tersandung dengan seremonial dari worktree. Masalah ruang disk dapat diatasi dengan mudah dengan menambahnya.
Dengan workspace terpisah, beberapa agen bisa menjalankan tugas pada waktu yang sama. Perhatian saya pun beralih pada satu pertanyaan: kapan mereka membutuhkan saya?
Entah berapa jam yang terbuang karena saya lupa memeriksa agen. Setelah menjalankan sebuah tugas, perhatian beralih ke hal lain. Ketika kembali, ternyata sesi tersebut mandek karena membutuhkan klarifikasi. Agen itu sedang menunggu jawaban saya.
Karena itu, push notification menjadi salah satu fitur penting Tycho. Daripada membuka Tycho berulang kali, notifikasi memberi kabar ketika agen selesai, gagal, atau membutuhkan klarifikasi. Ada alasan yang lebih personal: saya tidak ingin menjadi ayah yang selalu melihat ponsel selama bersama keluarga. Notifikasi seharusnya muncul hanya saat perhatian saya benar-benar dibutuhkan.
Itu teorinya.
Dalam praktiknya, notifikasi dari beberapa agen jauh lebih berisik daripada yang saya bayangkan. Rasanya seperti media sosial yang disuntik steroid. Satu agen masih bisa memberi pengingat halus, tetapi beberapa agen berubah menjadi rentetan tuntutan: lihat sini, jawab ini, periksa itu. Kini ada dua antrean di ponsel saya: pesan dari manusia dan permintaan keputusan dari mesin.
Pada versi pertama, Tycho mengirimkan notifikasi pada setiap pekerjaan yang selesai. Belakangan, notifikasi untuk pekerjaan rutin dibuat senyap secara default. Pembaruan dari beberapa agen juga dikelompokkan agar tidak menumpuk sebagai notifikasi terpisah.
Perubahan itu terlihat kecil, tetapi tujuannya penting. Notifikasi yang baik membuat saya lebih jarang membuka Tycho. Keputusan yang belum mendesak dapat menunggu.
Setelah Tycho tersedia di ponsel, memulai pekerjaan menjadi terlalu mudah.
Satu ketukan membuka Tycho dan memperlihatkan semua pekerjaan yang sedang berjalan. Saya tidak perlu mengingat nama sesi, berpindah di antara tab terminal, atau menjaga proses agen tetap hidup. Tycho menyimpan setiap sesi agar dapat dilanjutkan nanti.
Kemudahan ini sangat membantu ketika urusan keluarga muncul di tengah jam kerja. Saya bisa meninggalkan meja tanpa kehilangan alur pekerjaan. Ketika kembali, sesi dapat langsung dilanjutkan tanpa harus mengingat semua detail dari awal. Jika perlu, percakapan yang sama bahkan bisa diteruskan lewat ponsel.
Namun kebebasan itu ada harganya. Batas antara jam kerja dan waktu pribadi perlahan menghilang. Ketika memegang ponsel, saya juga sedang memegang panel kontrol untuk setiap proyek yang aktif. Begitu sebuah ide muncul, hanya perlu satu ketukan untuk meminta agen mulai mengerjakannya.
Terlalu mudah untuk memulai. Saya benar-benar merasa ketagihan dan sampai sekarang masih belum tahu cara menghentikannya.
Anehnya, keadaan ini justru membuat waktu bersama keluarga semakin terasa penting. Saat bersama mereka, ponsel tidak bisa terus menyita perhatian. Ketika menyetir, saya tidak mungkin memeriksa agen. Mengantar anak-anak ke les berenang memaksa semua pihak beristirahat, termasuk para agen. Saat berjalan-jalan di taman, agen pun bisa dibiarkan tanpa pengawasan. Anak-anak tetap diawasi, tentu saja.
Dulu kegiatan seperti itu terasa mengganggu pekerjaan. Kini kegiatan yang sama menjadi jeda yang menenangkan. Pekerjaan memang masih berjalan. Kali ini, saya memilih memberi jarak dan membiarkannya menunggu.
Ada satu godaan lain: Tycho adalah tool yang saya bangun sekaligus pakai sendiri (dogfooding).
Ketika ada sesuatu yang mengganggu, saya bisa langsung menjalankan agen untuk memperbaikinya. Bagi orang yang senang membangun sesuatu, lingkaran ini terasa sangat memuaskan. Begitu masalah muncul, agen mendapat tugas, masalah pun sirna saat itu juga. Lalu versi yang lebih baik itu membantu saya mengerjakan tugas berikutnya.
Lingkaran yang sama juga gampang mengalihkan perhatian.
Hal yang dapat diperbaiki di Tycho tidak pernah habis, mulai dari hal kecil seperti memilih ikon hingga menentukan coding agent berikutnya yang perlu didukung. Semuanya tampak penting. Padahal terkadang pilihan sebelumnya harus dibatalkan, fitur perlu dihapus, atau solusi yang terlalu rumit harus ditolak.
Saya menyukai proses seperti ini. Ini terjadi karena Tycho benar-benar saya pakai setiap hari. Namun setiap gangguan kecil juga mudah berubah menjadi task, to-do, atau bahkan epic. Satu hari bisa habis untuk memoles pabrik sementara pekerjaan yang sebenarnya terlupakan.
Tetap saja, saya menikmatinya seperti bermain Factorio. Selalu ada satu bagian lagi yang ingin dibenahi.
Tycho menyelesaikan masalah nyata dalam hidup saya. Sebagai ayah dengan dua anak, waktu berjam-jam tanpa gangguan di depan meja tidak selalu dapat diandalkan. Coding agent tetap mengerjakan implementasi ketika ada urusan keluarga. Sesi dapat ditinggalkan dengan tenang karena bisa dilanjutkan kapan saja.
Laptop berat juga tidak perlu dibawa ke mana-mana. Bekerja dari kafe cukup dengan iPad yang terhubung ke laptop di rumah. Ini kebebasan yang ingin saya pertahankan.
Namun kebebasan itu memerlukan batas tentang kapan agen boleh meminta perhatian. Notifikasi pekerjaan rutin kini senyap. Tycho juga diam ketika agen selesai tanpa membutuhkan tindakan lanjutan. Saya membuat alat ini untuk mengurangi waktu di depan meja. Prinsip yang sama seharusnya berlaku saat saya membuka alat ini dari ponsel.
Dulu, pekerjaan menunggu sampai saya kembali ke meja. Kini agen bisa terus bekerja ketika saya berada di tempat lain. Kebebasan itu hanya akan terasa sehat ketika saya berani membiarkan agen menunggu.
Ngoding dari mana saja memberi saya kebebasan. Ngoding kapan saja tetap sebuah pilihan.
Bagaimana dengan kamu? Bagaimana caramu menjaga pekerjaan tetap fleksibel tanpa membuat dirimu selalu hadir?