- Instal Claude Code di Mac cadangan yang tidak berisi data pribadi, lalu konfigurasikan sebagai lingkungan mandiri yang selalu dapat diakses dari SSH Mac utama dan aplikasi Claude di ponsel
- Dibanding kontainer, tingkat isolasi perangkatnya lebih tinggi dan juga bisa memakai Unity serta aplikasi GUI khusus Mac, sehingga risiko
--dangerously-skip-permissions dapat dipisahkan dari Mac utama
- Bangun fondasi kerja jarak jauh melalui akun admin lokal baru,
sudo dan SSH tanpa kata sandi, pencegahan sleep, sinkronisasi clipboard, serta instalasi Claude Code
- Kontrol GUI diimplementasikan dengan server tmux yang dipertahankan LaunchAgent di dalam sesi GUI; izin perekaman layar, aksesibilitas, dan akses disk penuh harus diberikan langsung oleh manusia
- Dengan menambahkan Remote Control, Claude in Chrome, Screen Sharing, dan Tailscale, kontrol dari ponsel, otomasi browser, hingga akses eksternal menjadi mungkin, tetapi memerlukan autentikasi terpisah dan pengaturan izin macOS
Tujuan konfigurasi dan prinsip dasar
- Membuat lingkungan yang dapat dikendalikan Claude Code secara mandiri untuk mendelegasikan pekerjaan riset dan pengembangan di luar Mac utama
- Agen yang menggunakan
--dangerously-skip-permissions memiliki hak akses luas, jadi jalankan di perangkat terpisah tanpa data pribadi dan Apple ID untuk mengurangi informasi sensitif yang dapat diakses
- Claude Code dapat diakses kapan saja melalui aplikasi Claude di ponsel atau SSH dari Mac utama
- Konfigurasi dasar memerlukan Mac target cadangan yang terhubung ke Wi-Fi yang sama dan Mac sumber yang digunakan sehari-hari
Mengapa memakai Mac cadangan, bukan kontainer atau OpenClaw
- Kontainer tetap berjalan di Mac utama dan permintaan jaringan juga melewati Mac utama, sehingga bukan pemisahan perangkat yang sepenuhnya terpisah
- Sulit menjalankan Unity atau aplikasi khusus Mac, dan pekerjaan GUI yang perlu klik atau drag dengan fitur penggunaan komputer juga memiliki keterbatasan
- Konfigurasi Mac cadangan tetap memanfaatkan fitur Claude Code terbaru, kontrol aplikasi Claude, dan kuota langganan Claude yang sudah dimiliki
- Pisahkan lingkungan berdasarkan prinsip berikut
- Gunakan Mac cadangan lama, bukan Mac utama
- Buat akun lokal baru tanpa data pribadi dan Apple ID
- Kendalikan melalui SSH di jaringan lokal dan aplikasi Claude dari ponsel
1. Inisialisasi Mac target dan isolasi akun
- Jika ada data pribadi lama, hapus perangkat terlebih dahulu karena agen dapat mengakses semuanya
- Mac yang didukung: System Settings → General → Transfer or Reset → Erase All Content and Settings
- Mac Intel lama: saat boot tekan
Cmd-R untuk masuk ke Recovery, hapus drive internal dengan Disk Utility, lalu instal ulang macOS
- Jika perlu, perbarui ke macOS terbaru dari System Settings → General → Software Update
- Buat akun pengguna lokal baru dan lewati login Apple ID
- Berikan hak admin pada akun agar dapat memakai
sudo
- Di System Settings → Users & Groups, aktifkan
Allow this user to administer this computer
- Saat memulihkan dari akun admin lain, Anda dapat memakai
sudo dseditgroup -o edit -a <user> -t user admin
2. Mengaktifkan login jarak jauh SSH
- Di Mac target, aktifkan Remote Login dengan perintah berikut
sudo systemsetup -setremotelogin on
- Jika muncul galat
Turning Remote Login on or off requires Full Disk Access privileges, berikan Full Disk Access kepada Terminal
- Di System Settings → Privacy & Security → Full Disk Access, tambahkan Applications → Utilities → Terminal
- Tutup Terminal, buka kembali, lalu jalankan ulang perintah
3. Mengatur sudo tanpa kata sandi
- Agar agen dan perintah SSH tidak meminta kata sandi setiap kali, buat aturan per akun di
/etc/sudoers.d/
echo "<user> ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/<user>-nopasswd >/dev/null
sudo chmod 440 /etc/sudoers.d/<user>-nopasswd
sudo visudo -cf /etc/sudoers.d/<user>-nopasswd
- Perintah pertama menulis aturan, sedangkan perintah kedua mengatur izin baca-saja yang diwajibkan
sudo
- Pada validasi terakhir, output harus berupa
parsed OK; sintaks sudoers yang salah dapat memblokir akses sudo
- Jika
sudo -n true berhasil tanpa output, sudo tanpa kata sandi sudah berfungsi
4. Memeriksa alamat Mac target
- Karena IP dapat berubah setelah reboot atau seiring waktu, disarankan memakai nama host tetap
scutil --get LocalHostName
- Tambahkan
.local ke nama yang ditampilkan dan gunakan sebagai <target-host>.local
- Jika nama
.local kedua Mac di jaringan yang sama bertabrakan, koneksi bisa menuju perangkat yang salah, jadi tetapkan nama yang unik
sudo scutil --set LocalHostName newmacbook
- Jika perlu IP, Anda dapat memeriksanya dengan
ipconfig getifaddr en0, tetapi alamat itu bisa berubah
- Selanjutnya gunakan alamat dengan format
<user>@<target-host>.local
5. Mengonfigurasi SSH tanpa kata sandi dari Mac sumber
- Jika belum ada kunci SSH, buat kunci Ed25519 di Mac sumber
ssh-keygen -t ed25519
ssh-copy-id <user>@<target-host>.local
- Saat memasang kunci publik, masukkan kata sandi akun target satu kali
- Jika perintah berikut menampilkan nama pengguna target tanpa meminta kata sandi, konfigurasi selesai
ssh <user>@<target-host>.local whoami
6. Mencegah sleep dan kunci otomatis
- macOS dapat masuk sleep dan menghilang dari jaringan setelah sekitar 10 menit idle meski terhubung ke daya, jadi nonaktifkan sleep
sudo pmset -c sleep 0
sudo pmset -c disablesleep 1
sudo pmset -c displaysleep 0
- Setiap perintah menerapkan pencegahan sleep sistem saat mengisi daya, pencegahan sleep saat penutup ditutup, dan pencegahan sleep layar
- Pada output
pmset -g | grep -iE 'sleep', pastikan ada sleep 0, SleepDisabled 1, dan displaysleep 0
- Untuk menerapkannya juga saat memakai baterai, gunakan
-a alih-alih -c, tetapi konsumsi baterai akan meningkat
- Cegah juga kunci otomatis akibat screen saver
defaults -currentHost write com.apple.screensaver idleTime 0
7. Sinkronisasi clipboard SSH
- Dengan menghubungkan
pbcopy dan pbpaste macOS lewat SSH, teks dapat dikirim secara P2P terenkripsi tanpa Apple ID atau layanan eksternal
clip.sh juga mendukung pengiriman gambar
curl -fsSL https://raw.githubusercontent.com/ykdojo/claude-controls-mac/… -o ~/.local/bin/clip
chmod +x ~/.local/bin/clip
export IC_BOX="<user>@<target-host>.local"
- Tambahkan pengaturan
IC_BOX ke ~/.zshrc
clip send mengirim teks atau gambar dari Mac sumber ke target; gambar dapat ditempel ke sesi Claude Code di target dengan Ctrl-V
clip get mengambil clipboard Mac target ke Mac sumber
8. Menginstal Claude Code
- Dari Mac sumber, instal versi Claude Code tertentu ke Mac target melalui SSH
ssh <user>@<target-host>.local 'curl -fsSL https://claude.ai/install.sh | bash -s -- 2.1.201'
- Alih-alih versi
2.1.201, Anda juga dapat menentukan latest atau stable
- Jika muncul peringatan PATH untuk
~/.local/bin, tambahkan jalur tersebut ke ~/.zshenv yang dibaca oleh semua zsh
ssh <user>@<target-host>.local 'echo '\''export PATH="$HOME/.local/bin:$PATH"'\'' >> ~/.zshenv'
9. Instalasi opsional lingkungan ramah Claude Code
setup-claude-env.sh yang opsional memasang alias shell, plugin DX, penyesuaian settings.json, GitHub CLI, serta Playwright MCP dan yt-dlp opsional
- Komponen lengkap dapat dilihat di
claude-env-components.md
- Saat dijalankan secara interaktif, item default dipilih dan daftar periksa untuk item instalasi opsional disediakan dalam keadaan tidak dipilih
ssh -t <user>@<target-host>.local \
'curl -fsSL https://raw.githubusercontent.com/ykdojo/claude-controls-mac/… -o setup-claude-env.sh && bash setup-claude-env.sh'
- Eksekusi noninteraktif secara default hanya memasang item inti dan mendukung flag
--yt-dlp, --playwright, --all, --core
- Skrip ini idempoten, sehingga aman dijalankan kembali
10. Login Claude dan GitHub
- Sambungkan ke Mac target melalui SSH, jalankan
claude, lalu login ke akun Anthropic melalui alur browser atau kode perangkat yang dapat diselesaikan dari browser di Mac utama
- Untuk pekerjaan repositori, disarankan menambahkan login GitHub dengan
gh auth login
- Agar agen tidak memengaruhi akun utama, lebih aman menggunakan akun GitHub terpisah
11. Fitur penggunaan komputer melalui SSH
-
Cara menghubungkan ke sesi GUI
- Proses SSH tidak dapat langsung menggunakan izin perekaman layar dan aksesibilitas yang terhubung ke sesi login GUI
- LaunchAgent mempertahankan server tmux dan sesi jangkar
cc pada soket tetap di dalam sesi GUI
- Claude Code yang dimulai di dalam server tersebut mewarisi sesi GUI sehingga dapat mengakses screenshot serta kontrol mouse dan keyboard
-
Instalasi
ssh -t <user>@<target-host>.local \
'curl -fsSL https://raw.githubusercontent.com/ykdojo/claude-controls-mac/… -o setup-computer-use.sh && bash setup-computer-use.sh'
- Memasang LaunchAgent dan jangkar tmux, serta mengaktifkan tool bawaan
computer-use di ~/.claude.json
- Diperlukan tmux dan paket Claude Pro atau Max; skrip dapat dijalankan ulang dan dapat dihapus dengan
--uninstall
-
Mengelola sesi dengan perintah ic
- Pasang
ic.sh di Mac sumber
curl -fsSL https://raw.githubusercontent.com/ykdojo/claude-controls-mac/… -o ~/.local/bin/ic
chmod +x ~/.local/bin/ic
echo 'export IC_BOX="<user>@<target-host>.local"' >> ~/.zshrc
- Perintah utama adalah sebagai berikut
ic: sesi Claude baru
ic -c, ic -r: melanjutkan percakapan terakhir atau memilih percakapan untuk dilanjutkan
ic --chrome: menjalankan bersama Claude in Chrome
ic sh: shell biasa di target
ic vnc: menjalankan Screen Sharing
ic rc: server Remote Control ponsel
ic history, ic ls: memeriksa percakapan tersimpan dan sesi yang berjalan
ic attach <id>, ic kill <id>, ic kill-all, ic kill-except: mengelola koneksi dan penghentian sesi
- Semua sesi
ic dijalankan dengan --dangerously-skip-permissions, dan ic rc menggunakan --permission-mode bypassPermissions
- Di dalam tmux, Terminal.app tidak menerima urutan clipboard OSC52 yang diekspor Claude, jadi untuk menyalin seluruh layar gunakan
Cmd-A lalu Cmd-C
-
Delegasi antaryawan
- Claude Code di Mac sumber dapat menggunakan SSH dan
tmux send-keys untuk mengirim prompt ke sesi Claude yang berjalan di target
- Pada prompt panjang, Enter yang disertakan dalam paket pengiriman yang sama dengan teks bisa tidak diperlakukan sebagai submit, sehingga perlu menunggu sebentar lalu mengirim Enter sekali lagi
- Respons dapat dibaca dengan
tmux capture-pane dan tail, lalu diperiksa berulang hingga pekerjaan selesai
-
Izin yang harus diberikan langsung oleh manusia
- Izin perekaman layar dan aksesibilitas harus disetujui langsung oleh manusia di GUI macOS dan tidak dapat ditangani dengan klik sintetis
- Permintaan izin
bypass the window picker yang muncul saat tangkapan pertama juga harus disetujui, dan dapat muncul kembali sekitar sebulan sekali
- Target izin bukan
claude, melainkan binary tmux sebagai proses penanggung jawab
- Jalur Intel:
/usr/local/bin/tmux
- Jalur Apple Silicon:
/opt/homebrew/bin/tmux
- Perekaman layar mengizinkan screenshot, sedangkan aksesibilitas mengizinkan kontrol mouse dan keyboard
- Karena status izin di-cache saat proses dimulai, setelah memberi izin Anda harus memulai ulang server dengan
tmux -S /tmp/cc-tmux.sock kill-server
- Jika tmux tidak muncul di daftar pengaturan, minta Claude di
ic untuk mengambil screenshot agar permintaan izin muncul terlebih dahulu
- Agar permintaan akses data per aplikasi tidak berulang di macOS terbaru, berikan Full Disk Access kepada tmux lalu mulai ulang server
12. Instalasi VPN dan aplikasi GUI lainnya
- Untuk memisahkan trafik Mac target dari IP lokal, Anda dapat memasang VPN seperti Proton VPN
- Jika fitur penggunaan komputer sudah disiapkan, Anda dapat meminta Claude di
ic untuk memasang aplikasi, tetapi pekerjaan berikut harus ditangani manusia
- Kredensial login diperlukan meskipun pada paket gratis, dan kata sandi dapat dikirim dengan
clip send
- Anda harus menyetujui izin konfigurasi VPN/jaringan pada koneksi pertama serta permintaan kata sandi Mac
- Kontrol aplikasi khusus GUI memerlukan fitur penggunaan komputer
- Setelah login, agen dapat melakukan koneksi dan pergantian server, dan alur yang sama dapat diterapkan ke aplikasi lain
13. Mengontrol dari ponsel
- Jika menjalankan
/remote-control atau /rc pada sesi yang ada, Anda dapat melanjutkan dan mengontrol sesi yang sama dari aplikasi Claude
claude remote-control mendukung tidak hanya koneksi ke sesi yang ada dari ponsel, tetapi juga pembuatan sesi baru
- Jika dimulai dengan
ic rc, sesi yang dibuat dari ponsel juga dapat mengakses fitur penggunaan komputer Mac target
14. Menyiapkan Claude in Chrome
- Fitur penggunaan komputer umum dapat melihat layar browser, tetapi memiliki batasan untuk klik atau input
- Ekstensi Claude in Chrome mendukung navigasi, klik, pengisian formulir, serta pembacaan log konsol dan permintaan jaringan
- Berbeda dari Playwright MCP, ini memakai profil Chrome biasa di Mac target, sehingga dapat memanfaatkan status yang sudah login
- Di Mac target diperlukan Chrome dan langganan langsung Anthropic Pro, Max, Team, atau Enterprise
- Tugas berikut harus dilakukan langsung oleh manusia
- Klik
Add to Chrome di Chrome Web Store
- Login ke akun Claude di ekstensi; kredensial dapat dikirim lewat
clip send
- Di Claude Code, jalankan
/chrome untuk mengaktifkannya secara default, atau gunakan claude --chrome atau ic --chrome per sesi
- Jika tidak tersambung, mulai ulang Chrome sekali
- Skrip lingkungan pada langkah 9 menambahkan instruksi ke
~/.claude/CLAUDE.md agar menggunakan referensi elemen dari accessibility tree alih-alih koordinat, dan menghindari tangkapan layar yang tidak diminta
- Jika Chrome sumber dan target menjalankan ekstensi dari akun yang sama secara bersamaan, permintaan pemilihan akan muncul, dan ada isu #74667 yang dapat salah menentukan perangkat lokal
- Dapat dihindari dengan menghapus sementara ekstensi di Mac sumber atau menutup Chrome di sumber
- Ada isu #74671 bahwa alat browser saat ini tidak tersedia untuk sesi yang dibuat dari ponsel
- Mulai sesi dari terminal, lalu hubungkan ponsel dengan
/rc
15. macOS Screen Sharing
- Dengan Screen Sharing bawaan, Anda dapat memantau layar target secara real-time dari Mac sumber dan mengendalikan mouse serta keyboard secara langsung
- Mulai macOS 12.1, karena tidak dapat diaktifkan lewat command line, pengaturan harus dilakukan dari GUI target
- Di System Settings → General → Sharing, nyalakan Screen Sharing
- Jika Remote Management aktif sehingga toggle tidak terlihat, matikan terlebih dahulu
- Dari Mac sumber, sambungkan dengan perintah berikut
open vnc://<user>@<target-host>.local
- Login dengan kata sandi akun target, dan Anda dapat memilih untuk menyimpan kata sandi di Keychain
16. Akses jaringan eksternal melalui Tailscale
- Alamat
.local hanya berfungsi di LAN, tetapi Tailscale memungkinkan SSH, ic, clip, dan Screen Sharing digunakan dari jaringan eksternal melalui tunnel WireGuard P2P terenkripsi end-to-end
- Tidak mengekspos layanan ke internet publik, dan saat berada di jaringan rumah menggunakan rute LAN langsung
- Bergabung ke jaringan Tailscale hanya menyediakan keterjangkauan antarperangkat, sehingga kunci SSH atau kata sandi Screen Sharing tetap diperlukan
- Instal di Mac target secara headless dan login melalui URL yang ditampilkan
ssh <user>@<target-host>.local 'brew install tailscale'
ssh <user>@<target-host>.local 'sudo brew services start tailscale'
ssh <user>@<target-host>.local 'sudo tailscale up --operator=<user>'
- Instal juga di Mac sumber dan login dengan akun Tailscale yang sama dengan target
brew install --cask tailscale-app
- Jika menggunakan MagicDNS yang aktif secara default, Anda dapat mengakses dari mana saja dengan nama host tanpa
.local
export IC_BOX="<user>@<target-host>"
# export IC_BOX="<user>@<target-host>.local"
- Ubah juga alamat Screen Sharing menjadi
open vnc://<user>@<target-host>
- Di konsol admin, pengaturan keamanan dan ketersediaan berikut disarankan
- Aktifkan device approval agar perangkat baru tidak dapat bergabung hanya dengan login yang dicuri
- Nonaktifkan key expiry agar perangkat target tidak terputus karena masa berlaku kunci habis setelah sekitar 180 hari
- Uji akses jarak jauh nyata dengan menghubungkan Mac sumber ke jaringan lain seperti hotspot ponsel, lalu periksa dengan
ic ls
1 komentar
Komentar Hacker News
Jika bukan pengembangan grafis yang disebutkan dalam tulisan, tidak ada alasan untuk mengisolasi agen di perangkat keras sungguhan. Saya membuat skrip yang membuat desktop grafis khusus Claude dengan libvirt, bahkan sampai menjalankan pengujian penerimaan pengguna di Chrome
Meski diberi semua hak root, jika terjadi masalah bisa dibuang dan dipasang ulang dalam hitungan detik
sudo useradd agent,sudo su agent, agar agen hanya bisa merusak filenya sendiri. Saya juga mengambil screenshot dengan Chrome headless dan mengonfigurasi VNC, tetapi nilainya tidak terlalu besarBahkan di VPS 3 dolar, jika rusak bisa langsung dipasang ulang, jadi memberi root kepada agen itu ada serunya
Saya benar-benar tidak bisa menemukan kegunaan AI yang benar-benar layak membantu terus-menerus 24 jam, tetapi saya juga ingin merasakan kebutuhannya
Misalnya saat sedang bepergian dan ada rentetan peringatan Datadog, log cloud, dan GitHub, Anda bisa meminta Claude Code menyelidiki lalu mengklasifikasikannya seperti “timeout API bank mitra terjadi pada sekitar 15% request sejak satu jam lalu.” Setelah menghubungi penanggung jawab, Anda bisa kembali menikmati akhir pekan
Sistem on-call yang benar tentu lebih baik, tetapi dengan mempertimbangkan fleksibilitas yang diberikan tempat kerja, peringatan Slack di akhir pekan masih bisa diterima
Sering kali perangkat keras lebih menjadi bottleneck daripada batas langganan
Daripada memasang Claude di PC ketiga lalu membuatnya terus berhalusinasi menghasilkan kode yang tidak diinginkan siapa pun demi berusaha tidak ketinggalan, saya lebih memilih coding sendiri karena memang menikmati coding
Saya mengonfigurasinya dengan cara serupa di Mac lama sebagai alternatif gratis untuk bot OpenClaw. Kadang koneksinya terputus sehingga harus diambil alih lagi lewat ponsel, tetapi saya juga menjalankan Homebridge yang bisa dioperasikan Claude, jadi cukup bermanfaat
Saya memasang Claude Desktop di Mac mini M4 terpisah dan mengendalikannya dengan Dispatch. Saya penasaran apakah ada alasan untuk beralih ke cara ini, padahal akun lokal yang sudah saya berikan kepada Claude sudah bisa dikontrol sepenuhnya
Akan bagus jika alih-alih menjalankan RC untuk tiap sesi host, Claude memakai komputer saya sebagai host sandbox. Saat ini saya memakai konfigurasi sementara di mana sesi RC master membuat jendela tmux baru dan sesi Claude RC untuk setiap pekerjaan coding
Jika terjadi bug RC, Code bisa dipakai langsung dari Termux, tetapi antarmuka izin di iOS agak tidak stabil
curldanwgettanpa masalahIni tidak menyelesaikan semua batasan, tetapi dengan UTM Anda bisa memasang macOS dan Claude Code di mesin virtual pada Mac. UTM juga berjalan dengan akun non-admin dan bisa memakai sebagian besar tool native Mac
Namun UI Claude Code di mesin virtual tidak memiliki performa interaktif yang baik, dan saya tidak yakin apakah ini bisa dihindari dengan masuk lewat terminal dari akun non-admin di host
Saya membangun ulang homelab dan server media dengan HP EliteDesk ber-i5 sebagai pengganti NUC lama yang masalah panasnya tidak bisa saya atasi. Saya berencana membuat mesin virtual terisolasi di Ubuntu standar lalu menjalankan Claude sambil mencoba Dispatch, atau memasang Claude Code langsung dan memakai aplikasi Moshi di iPhone dan iPad
Saya membuat konfigurasi serupa dengan M2 lama. Tidak cukup untuk menjalankan model lokal yang performanya memadai, tetapi sempurna untuk OpenClaw dan Claude
Saya juga terkejut karena harga MacBook M1 dan M2 sekarang tergolong murah dibandingkan Mac mini