Saya mengubah Cell yang dibangun dengan Linux Container menjadi pengguna macOS
✨ Ringkasan GPT-5.6 Sol
Catatan ketika saya meninggalkan rencana dasar Linux VM dengan Container per pengguna, lalu mendefinisikan ulang unit eksekusi sebagai pengguna macOS dan OpenClaw native untuk setiap karyawan.
Saya membalik struktur dasar hanya dalam sehari
Kemarin saya benar-benar menghubungkan coordinator dan beberapa worker. Saya bereksperimen membagi hasil yang dibuat beberapa AI melalui Worktree, Branch, dan commit, lalu menyatukannya kembali.
Bersamaan dengan pekerjaan itu, saya juga sedang membangun lingkungan eksekusi AI Orchestration. Hingga tanggal 14, struktur dasarnya seperti berikut.
Mac mini
→ 1 Colima Linux VM
→ OpenClaw Cell Container per karyawan
Membuat Image bersama lalu memisahkan Network dan Volume untuk setiap karyawan tampak memudahkan deployment dan reproduksi. Saya bahkan sudah memeriksa Image resmi OpenClaw Linux arm64 serta membuat kontrak untuk child Image dan Cell Network. Arah pemisahan lingkungan setiap karyawan ke dalam Container sudah berkembang cukup konkret.
Namun pada tanggal 15, saya mengeluarkan struktur ini dari pilihan dasar.
Yang ingin saya buat bukan layanan Container
Ketika tujuan AI Orchestration saya tulis ulang, saya melihat bagian yang tidak cocok.
Yang ingin saya buat adalah lingkungan tempat karyawan cukup menyampaikan tujuan lewat WebChat, lalu AI pribadi membagi pekerjaan yang diperlukan, memilih alat, dan menuntaskannya. Bukan hanya membuat kode dan dokumen, tetapi juga mengoperasikan aplikasi Mac, menjalankan Xcode dan Simulator, lalu meninggalkan hasil nyata dengan Workspace dan Git identity milik pengguna.
Begitu fungsi macOS dipanggil secara paksa dari dalam Linux Container, strukturnya menjadi aneh. Saya harus menaruh runner terpisah di luar Container, menyambungkan kembali hak akses dan state, lalu meneruskan Keychain dan GUI Session pengguna. Lapisan yang ditambahkan demi isolasi justru memaksa fungsi yang benar-benar dibutuhkan terus memakai jalur memutar.
OpenClaw juga bukan sekadar stateless worker. Ia lebih dekat dengan lingkungan pribadi yang membawa Gateway, Profile, Session, Memory, OAuth, dan state eksekusi milik satu pengguna. Jika demikian, mungkin definisi Cell sebagai satu Container memang sudah salah sejak awal.
Pada tanggal 15, saya mendefinisikan ulang arti Cell.
1 karyawan
= 1 pengguna macOS
= 1 OpenClaw Gateway independen
= 1 set UID·HOME·Keychain
= 1 set ChatGPT OAuth·CODEX_HOME
= 1 set Workspace·Git identity·Session·Memory
Strukturnya membuat pengguna macOS terpisah untuk setiap karyawan di satu Mac mini, lalu menjalankan complete OpenClaw Gateway secara native di dalam masing-masing pengguna.
Linux dan Container tidak saya hapus sebagai kegagalan
Mengubah arah bukan berarti saya ingin mencatat semua yang dibuat hingga tanggal 14 sebagai kegagalan.
Eksperimen Container tetap menghasilkan bukti yang jelas. Image resmi, eksekusi non-root, read-only root, pemisahan Network, batas Volume dan credential, Image provenance, serta restart masih bernilai.
Namun semua itu bukan definisi akhir sebuah Cell.
Linux VM dan Container diturunkan dari lingkungan Pilot dasar menjadi kandidat sandbox yang hanya dipilih untuk pekerjaan tertentu yang benar-benar membutuhkan isolasi. macOS native menjadi default, sedangkan Container menjadi alat yang digunakan setelah kebutuhannya terbukti.
Perbedaan ini penting. Jika saya terus mendorong struktur Container hanya karena sudah menghabiskan banyak waktu untuknya, produk akan terseret oleh lingkungan eksekusi. Banyaknya implementasi yang sudah dibuat tidak membenarkan pilihan itu.
Memisahkan pengguna macOS saja juga belum menyelesaikan isolasi
Struktur native terlihat sederhana, tetapi hal-hal yang harus diverifikasi justru bertambah.
- Apakah karyawan yang login sama dengan pengguna macOS yang benar-benar menjalankan proses?
- Apakah Gateway, OAuth, Workspace, dan identitas penulis Git pengguna itu terikat dengan tepat?
- Ketika autentikasi satu pengguna gagal, apakah sistem tidak beralih ke autentikasi pengguna lain?
- Apakah HOME, Keychain, Port, dan Workspace pengguna lain benar-benar tidak dapat diakses?
- Setelah fast user switching dan reboot, apakah setiap Gateway pulih dengan state miliknya sendiri?
Karena itu saya tidak berhenti setelah mengubah topology di dokumen. Saya membuat ulang kontrak dan Acceptance untuk Cell macOS native, lalu membiarkan item yang belum memiliki bukti Runtime nyata sebagai NOT_READY.
Lolosnya test fixture juga tidak dapat disebut sebagai bukti bahwa isolasi dua pengguna nyata sudah selesai. Saya memisahkan hash file input eksternal dari bukti eksekusi probe yang sebenarnya, lalu terus menutup celah agar pemeriksaan tidak dapat dilewati dengan nilai yang menyamar sebagai pengguna lain, symlink, atau alias path macOS yang berbeda hanya karena kapitalisasi dan Unicode.
Setelah mengganti topology pada pukul 12 siang, commit sepanjang sore terus dibuat untuk menutup “celah yang memungkinkan kami berbohong bahwa pemeriksaan sudah lolos.” Menetapkan syarat lulus yang jujur untuk struktur baru membutuhkan lebih banyak kode daripada mengubah strukturnya sendiri.
Workflow bersama dan state pribadi juga dipisahkan
Walaupun setiap karyawan mendapat lingkungan yang sepenuhnya terpisah, Workflow bersama yang dikelola perusahaan harus didistribusikan dalam versi yang sama. Sebaliknya, pembaruan Workflow bersama tidak boleh ikut mengubah OAuth, Memory, atau Workspace pribadi.
Pada sore tanggal 15, saya mengunci Workflow Release dengan version dan content hash, lalu membuat kontrak admission agar hanya release yang telah diverifikasi dapat dipilih. Pilihan release baru harus berubah secara atomik. Pekerjaan yang sedang berjalan harus tetap terikat pada release yang dipilih saat mulai, dan release yang masih digunakan tidak boleh hilang saat rollback maupun proses pembersihan.
Sekali lagi, membuat Source dan pengujian tidak saya catat sebagai bukti bahwa release itu sudah dipasang di lokasi instalasi bersama pada Mac nyata. Runtime yang belum dipasang tetap berstatus NOT_READY sampai akhir.
Produk harus lebih dulu daripada lingkungan eksekusi
Pada tanggal 14, saya memikirkan cara membagi dan mengintegrasikan beberapa AI. Pada tanggal 15, saya kembali memikirkan apa sebenarnya Cell tempat AI itu hidup.
Bukan berarti tidak sayang mengubah arah ke macOS native setelah menyiapkan banyak hal untuk Container. Namun jika pekerjaan produk mencakup aplikasi macOS dan Xcode, serta OAuth dan Memory setiap pengguna, lingkungan eksekusinya juga harus mengikuti tujuan tersebut.
Cell bukan sekadar satu process yang terisolasi. Ia adalah lingkungan AI pribadi yang utuh, tempat satu orang bekerja dengan autentikasi, ingatan, ruang kerja, dan alat miliknya sendiri.
Tanggal 15 adalah hari ketika saya berhenti menumpuk lebih banyak Container di atas Linux VM dan memilih pengguna macOS itu sendiri sebagai batas Cell.
Tinggalkan komentar