Menjaga AI Agent Tetap Berjalan Saat Anda Tidur

Henry AGI
5 menit bacaJun 2026
Menjaga AI Agent Tetap Berjalan Saat Anda Tidur

macOS tidak bisa membedakan antara terminal yang diam dan AI agent yang diam-diam mengerjakan tugas panjang — sama-sama tidak ada input keyboard atau mouse, jadi timer sleep berjalan sama saja. Menjaga AI agent tetap berjalan saat Anda tidur berarti menyelesaikan empat hal sekaligus, bukan satu: mencegah sleep hanya saat agent benar-benar bekerja, melindungi baterai dan hardware saat Mac tidak terhubung ke listrik, melepas hold begitu pekerjaan benar-benar selesai, dan mengetahui itu terjadi tanpa harus mengecek terminal jam 3 pagi. Anda menjalankan Claude Code atau Cursor sebelum tidur, berharap ada branch yang selesai di pagi hari — dan yang sering menunggu justru proses yang berhenti dan layar yang sudah gelap sejak berjam-jam sebelumnya.

Mengapa Mac Menghentikan AI Agent Anda di Malam Hari

macOS dirancang untuk tidur saat tidak mendeteksi input pengguna — keyboard, mouse, trackpad. AI agent yang berjalan di terminal tidak menghasilkan input event, jadi timer display-sleep menyala lebih dulu, disusul system sleep. Begitu mesin masuk suspend, agent kehilangan penjadwalan CPU dan akses jaringan — proses berhenti di tengah tugas tanpa pemulihan yang rapi, bahkan tanpa checkpoint tersimpan kecuali tool itu sendiri yang menulisnya.

LidRun
Three-lane diagram showing idle sleep, lid close, and low battery as three independent ways macOS interrupts an overnight AI agent run
Tiga mode kegagalan yang independen, bukan satu — masing-masing butuh guardrail-nya sendiri.

Menutup lid adalah pemicu terpisah yang lebih cepat, dan itu tidak peduli apa yang sedang berjalan. Secara default, MacBook masuk suspend dalam hitungan detik setelah lid tertutup, terlepas dari pekerjaan yang berjalan di belakang layar. Tool seperti caffeinate -i memblokir idle sleep selagi lid terbuka, tapi saat pakai baterai ia tidak bisa menghentikan clamshell sleep level-rendah yang dipicu macOS begitu lid tertutup — tidak ada power assertion level-pengguna yang bisa. Itu keterbatasan macOS, bukan keterbatasan caffeinate: setiap tool yang dibangun di atas mekanisme IOPMAssertionCreateWithName yang sama, termasuk Keep Awake manual milik LidRun sendiri, menabrak tembok yang sama tanpa mekanisme closed-lid terpisah.

Baterai menambahkan mode kegagalan ketiga. macOS punya shutdown critical-battery sendiri, dan bisa memaksa sleep sebelum titik itu jika kondisinya dianggap perlu. Agent yang menjalankan inference berat atau build panjang bisa menghabiskan baterai dari 50% dalam tiga sampai empat jam. Tanpa titik berhenti yang jelas, OS-lah yang menentukan kapan proses berakhir — dan itu tidak selalu dipilih di momen yang rapi.

Opsi Native Gratis — dan di Mana Masing-Masing Gagal

Sebelum mencari aplikasi pihak ketiga, ada baiknya tahu dulu apa yang sudah diberikan macOS secara gratis, karena untuk pekerjaan foreground yang singkat itu sering kali sudah cukup. caffeinate -i mencegah idle sleep selama ia berjalan; tambahkan -w <pid> dan ia otomatis keluar saat proses itu berakhir — pola bawaan paling rapi untuk satu perintah yang sedang Anda pantau, misalnya caffeinate -i -w $(pgrep -f "python train.py"). caffeinate -d juga memblokir display sleep, dan -s memblokir system sleep khusus saat pakai listrik AC. Sudah tersedia di setiap Mac, tidak perlu instalasi, dan sepenuhnya bisa di-script.

LidRun
Comparison table of caffeinate, pmset disablesleep, and LidRun Auto Mode across sleep prevention, lid-close handling, auto-release, and battery/thermal awareness
caffeinate dan pmset adalah opsi gratis yang sudah tersedia bawaan — bedanya Auto Mode adalah ia tahu kapan pekerjaan benar-benar selesai.

Tapi tak satu pun dari itu bertahan saat lid tertutup di baterai. Satu-satunya tuas publik yang mencegah sleep akibat lid tertutup tanpa monitor eksternal adalah sudo pmset -a disablesleep 1 — pengaturan system-wide, bukan assertion per-proses, dan butuh hak administrator. Ini juga mekanisme dasar yang sama yang dipakai Closed-Lid mode milik LidRun sendiri; tidak ada API privat di sini, hanya toggle pmset yang terdokumentasi. Jalur native lain adalah clamshell mode asli Apple: sambungkan monitor eksternal dan tetap pakai listrik AC, dan Mac berjalan dengan lid tertutup persis seperti yang dimaksudkan, tanpa perintah apa pun. Itu jalur yang resmi didukung, tapi artinya Anda harus punya dan membawa monitor — tidak praktis untuk proses semalaman di kamar hotel atau kamar cadangan.

Aplikasi menu-bar pihak ketiga mengisi celah di antara dua ekstrem itu. Amphetamine, KeepingYouAwake, Caffeine, dan Lungo semuanya toggle keep-awake yang solid dan fokus — UI rapi, timer, beberapa mendukung jendela on/off terjadwal. Ini pilihan yang wajar kalau yang Anda inginkan sesederhana “tetap bangun sampai saya bilang berhenti”. Yang tidak dilakukan satu pun dari mereka adalah mengikat hold ke proses background tertentu, memantau kondisi baterai atau termal, atau melepas hold otomatis begitu proses agent keluar — itu memang bukan tugas yang mereka dirancang untuk lakukan.

Panduan terkaitApa Itu AI Agent Continuity?

Risiko Melakukannya Secara Manual

Kedua jalur native ini punya sisi tajam untuk proses semalaman yang tidak diawasi. caffeinate -i tanpa -w hanya berjalan sampai Anda menghentikannya — tidak ada yang menghentikannya otomatis saat pekerjaan selesai, jadi gampang sekali Mac tetap terjaga dan menghabiskan baterai berjam-jam setelah agent sebenarnya sudah selesai, dan tetap saja bisa diterkam lid tertutup saat pakai baterai.

sudo pmset -a disablesleep 1 berisiko dengan cara yang berbeda, karena pengaturannya global dan persisten — tidak terikat pada sesi terminal Anda atau pada proses yang sedang Anda pedulikan. Pengaturan ini tetap berlaku bahkan setelah perintah yang mengaturnya sudah selesai dijalankan. Jika Anda menutup terminal, Mac crash, atau Anda sekadar lupa menjalankan sudo pmset -a disablesleep 0 keesokan paginya, Mac tidak akan tidur sendiri lagi — bukan malam itu saja, bukan hari berikutnya saja — sampai Anda mengaturnya ulang secara manual atau reboot. Sementara itu tidak ada yang memantau batas baterai atau batas termal, dan tidak ada yang menyadari bahwa agent sebenarnya sudah selesai dua puluh menit lalu.

Itulah celah sesungguhnya — bukan berarti caffeinate atau pmset adalah tool yang buruk, keduanya justru pas untuk pekerjaan foreground yang sedang Anda pantau. Celahnya adalah tidak satu pun opsi gratis, dan tidak satu pun toggle always-on pihak ketiga, tahu apa arti “agent sudah selesai”. Mereka hanya menahan Mac tetap bangun atau tidak; tidak ada konsep melepas hold saat proses keluar, mundur saat baterai menipis, atau mundur saat panas.

Pola yang Lebih Aman: Ikat Keep-Awake ke Proses Agent

Solusinya adalah yang disebut LidRun sebagai Auto Mode: keep-awake yang terikat ke proses, mekanisme inti di balik lapisan runtime aman untuk pekerjaan AI di Mac milik LidRun. Ia menahan power assertion hanya selama proses yang cocok sedang berjalan, dan melepasnya begitu proses itu keluar — bukan wake lock buta yang menahan Mac tetap bangun tanpa peduli apa yang sebenarnya terjadi. Katalog bawaannya sudah mengenali Claude Code, Codex, Cursor, Windsurf, Aider, Cline, Continue, Goose, OpenHands, Zed, Ollama, LM Studio, dan vLLM lewat nama proses, ditambah script interpreter (python, node, ruby, dan lainnya) serta apa pun yang Anda tambahkan sendiri lewat lidrun watch <pattern>.

Ia juga lebih hati-hati daripada sekadar mencocokkan nama. Jendela Cursor yang sekadar terbuka dan diam tidak menahan Mac tetap bangun — aplikasi GUI harus melewati ambang CPU nyata (di atas kira-kira 40% dari satu core) dulu sebelum dihitung sebagai pekerjaan, jadi membiarkan editor terbuka semalaman tidak memblokir sleep tanpa alasan. Dan agent yang dikenali tapi sempat diam sejenak — menunggu respons API, “berpikir” di antara pemanggilan tool — juga tidak langsung dianggap selesai: proses agent bernama diberi kesabaran nyata, sampai 30 menit near-idle, sebelum Auto Mode menganggapnya selesai, jadi respons model yang lambat tidak membuat Anda kehilangan seluruh proses.

Untuk pekerjaan sekali jalan lewat SSH, atau mesin headless tanpa menu bar untuk dilihat, CLI membungkus satu perintah langsung: lidrun -- claude-code run-task menahan assertion terbatas persis selama umur satu proses itu, tanpa perlu setup watch-list. Auto Mode sendiri bagian dari LidRun Pro — tingkat gratis mencakup Keep Awake manual, Timer, dan proses Charging-only tanpa batas; deteksi proses otomatis adalah yang ditambahkan lewat upgrade.

Untuk proses dengan lid tertutup, penempatan hardware tetap penting — deteksi proses yang lebih pintar tidak mengubah fisika panas. Letakkan Mac di permukaan datar dan keras dengan udara yang bisa bersirkulasi di bawahnya: meja, stand, meja solid — bukan di atas kasur, bukan di dalam tas, bukan di ruang tertutup. Lid yang tertutup menghilangkan jalur airflow utama, sehingga panas yang biasanya keluar lewat keyboard deck perlu jalan keluar lain. Utamakan menjalankan dengan listrik AC: pengurasan baterai berkelanjutan di bawah beban menghasilkan panas tambahan dibanding menjalankannya sambil dicolok ke listrik. Setup khusus per tool dibahas di panduan menjaga Claude Code tetap berjalan saat MacBook tertutup dan menjaga Cursor agent tetap berjalan di Mac.

Semua ini juga tidak sepenuhnya set-and-forget. Pekerjaan dengan titik berhenti yang jelas — daftar tugas, timeout, file tertentu yang harus ditulis — lebih aman daripada prompt open-ended yang bisa berputar terus akibat error atau me-re-prompt dirinya sendiri. Sebelum menutup lid, pastikan agent punya tempat untuk berhenti; proses yang bisa berputar tanpa henti akan terus menyedot daya dan menghasilkan panas tanpa membuat kemajuan, dan penggunaan CPU saja tidak bisa membedakan “masih bekerja” dari “terjebak dalam loop”.

Mengatur Batas Baterai dan Termal

20% adalah batas yang wajar untuk sebagian besar beban kerja semalaman — ini juga default bawaan LidRun sendiri, baik untuk auto-stop keep-awake umum maupun batas baterai Auto Mode. Ini menyisakan jarak yang nyata di atas hard survival floor LidRun sendiri (jaring pengaman forced-sleep yang dikunci antara 4% dan 8% berapa pun yang Anda atur) dan menyisakan cukup daya untuk benar-benar memakai Mac di pagi hari. Untuk pekerjaan yang lebih ringan dan bergantung pada API, di mana agent kebanyakan menunggu respons jaringan, 15% bisa dipakai; untuk inference lokal atau build berat, tetap di 20% atau lebih tinggi. Intinya adalah menetapkan batas sama sekali — tanpa itu, OS-lah yang menentukan kapan berhenti, dan itu tidak selalu dipilih di momen yang rapi.

Batas termal layak dikonfigurasi meski Anda percaya pada proteksi bawaan Mac. macOS men-throttle CPU sebelum sesuatu yang kritis terjadi, tapi throttling berarti agent melambat merangkak selama berjam-jam ekstra alih-alih berhenti dengan rapi — dan lambat-dan-panas dalam waktu lebih lama menghasilkan panas kumulatif lebih banyak dibanding berhenti dan restart secara sengaja. Safety Governor milik LidRun memantau kondisi termal lewat API publik Apple, ProcessInfo.thermalState, dan sifatnya sengaja satu arah: ia tidak pernah menahan Mac tetap bangun, ia hanya pernah melepas hold atau memaksa sleep saat kondisinya terlihat tidak aman. Pada panas yang benar-benar kritis, ia langsung melepas hold, di setiap mode dan setiap sumber daya — tapi ia hanya meningkat ke forced sleep sungguhan jika Anda menjauh dari keyboard atau lid secara fisik tertutup, jadi sesi live yang sedang Anda pantau dengan lid terbuka tidak pernah tiba-tiba ditarik begitu saja; ia melepas hold dan membiarkan throttling bawaan Mac yang mengambil alih.

Di Apple Silicon, software user-space bisa membaca kondisi termal tapi tidak bisa langsung mengendalikan kecepatan fan — itu wilayah kernel, jadi perlakukan setiap pengaturan termal sebagai guardrail, bukan sebagai dial yang bisa diatur bebas. Gabungkan batas baterai dengan guardrail termal dan Anda mendapat dua kondisi auto-stop yang independen: mana pun yang tercapai lebih dulu akan menarik rem, alih-alih membiarkan proses berjalan sampai hardware atau OS turun tangan sendiri. Panduan safety governor membahas lebih dalam bagaimana batas baterai, termal, dan time-cap saling berinteraksi.

Memastikan Ini Benar-Benar Berjalan

Sebelum menutup lid, cek lima detik lebih baik daripada baru sadar jam 7 pagi. Ikon menu-bar mencerminkan apakah LidRun sedang menahan keep-awake atau clamshell hold — lirik sebentar sebelum Anda pergi. Lewat SSH, atau di mesin headless tanpa menu bar untuk dilihat, jalankan lidrun status dari terminal; ia menampilkan mode saat ini, apakah power assertion aktif, apakah Closed-Lid menyala, persentase baterai dan status charging saat ini, level termal, dan — jika Auto Mode menyala — proses mana yang sedang dipantau dan terlihat olehnya.

LidRun
Annotated terminal output of the lidrun status command showing mode, assertion state, battery, thermal level, and matched watched processes
`lidrun status` — pemeriksaan 5 detik sebelum Anda pergi, atau satu-satunya pemeriksaan yang Anda punya lewat SSH.

Jika proses yang Anda harapkan dipantau tidak muncul, lidrun patterns menampilkan semua yang sedang ada di watch-list, termasuk katalog agent bawaan. Tambahkan apa pun yang belum ada dengan lidrun watch <pattern> — berguna untuk wrapper script custom atau tool yang tidak hadir dengan salah satu nama yang sudah dikenali.

Mendapat Notifikasi Saat Pekerjaan Selesai

Push notification menutup loop-nya — tanpanya, Anda hanya bisa mengecek manual atau menebak-nebak. LidRun mendukung ntfy.sh, relay notifikasi gratis dan terbuka, untuk mengirim push ke ponsel Anda begitu sesi keep-awake berakhir; Pushover juga didukung kalau Anda lebih suka aplikasi berbayar yang khusus. Sesi itu berakhir saat proses agent keluar, jadi notifikasinya adalah proxy langsung untuk pekerjaan yang selesai atau berhenti — tanpa perlu integrasi webhook di sisi server.

Notifikasi ini menandakan sesi berakhir, bukan pekerjaan berhasil — entah agent-nya selesai, kena error, atau berhenti karena guardrail baterai atau termal menyala, tampilannya sama saja di ponsel Anda. Buka Activity Log untuk melihat mana yang sebenarnya terjadi; LidRun mencatat alasan berhenti secara spesifik — penyelesaian tugas normal, auto-stop akibat baterai atau panas, penghentian manual, atau Safety Governor yang melepas hold — dan log itu lokal serta selalu ada bahkan kalau push-nya sendiri tidak pernah sampai. Notifikasi yang gagal terkirim bisa saja terjadi: ntfy.sh adalah relay pihak ketiga dan Pushover butuh koneksi aktif saat pengiriman, jadi kalau jaringan Mac sempat putus-putus tepat saat proses berakhir, cek log-nya langsung alih-alih menganggap tidak terjadi apa-apa.

Untuk proses yang lebih panjang, lapisan Watchdog opsional (fitur berbayar) bisa memberi peringatan di tengah proses jika agent yang dipantau diam untuk sementara waktu — mungkin macet, bukan selesai — daripada membiarkan Anda baru tahu di akhir. Anggap ini sebagai heads-up, bukan vonis: membedakan agent yang crash dari yang sekadar cepat menyelesaikan tugas butuh sinyal lebih banyak daripada yang dimiliki LidRun saat ini (perkiraan durasi tugas, exit code), jadi peringatan agent-macet berarti “coba cek dulu”, bukan “dipastikan gagal”.

“Agent Saya Tetap Berhenti” — Membaca Alasan Berhenti

Kalau keep-awake sudah menyala dan proses tetap berhenti, Activity Log hampir selalu menjelaskan alasannya, dan biasanya salah satu dari tiga hal ini. Kalau entry-nya menunjukkan event task-finished normal atau process-exit, itu bukan kegagalan — proses agent keluar dan Auto Mode melepas hold persis seperti yang dirancang.

Kalau itu penghentian akibat baterai atau termal, itu guardrail yang menjalankan tugasnya, bukan bug — inti dari menetapkan batas memang agar kadang-kadang ia menyala. Cek persentase atau level termal di log terhadap apa yang Anda atur; kalau menyala lebih awal dari yang diharapkan, batasnya mungkin diset lebih tinggi dari yang dibutuhkan beban kerja, atau Mac sedang pakai baterai dengan beban lebih berat dari biasanya.

Kalau log menunjukkan Safety Governor melepas hold dengan sendirinya, itu hanya pernah terjadi saat pakai baterai, ketika LidRun sudah memastikan tidak ada yang benar-benar berjalan dan Anda sudah menjauh dari keyboard untuk sementara waktu — code editor yang terbuka tanpa aktivitas CPU nyata terbaca sebagai confirmed-idle, bukan sebagai pekerjaan. Jalankan lidrun status saat agent aktif untuk mengecek apakah ia benar-benar muncul sebagai matched task dengan CPU nyata. Kalau tidak, nama prosesnya kemungkinan tidak cocok dengan apa pun di watch-list (cek lidrun patterns dan tambahkan dengan lidrun watch <pattern>), atau tool-nya adalah aplikasi GUI yang berada di bawah ambang CPU yang dipakai Auto Mode untuk membedakan “terbuka” dari “bekerja”.

Coba ini ketimbang melawan tidur saat layar tertutup

LidRun menjaga pekerjaan Anda tetap jalan saat layar tertutup, dengan perlindungan baterai dan suhu bawaan.

Unduh untuk macOS

Sudah punya LidRun? Baca panduan setup-nya →

Baru kenal LidRun? Lihat harga →

Sering ditanyakan

Mengapa AI agent saya berhenti saat Mac tidur?

macOS menerapkan timer sleep normalnya ke AI agent yang berjalan di background persis seperti ke mesin yang idle — tidak ada input keyboard atau mouse berarti tidak ada aktivitas pengguna, jadi display sleep menyala lebih dulu disusul system sleep, memutus penjadwalan CPU dan akses jaringan agent. Menutup lid memicu jalur sleep terpisah yang bahkan lebih cepat, yang tidak bisa dihentikan oleh assertion keep-awake sederhana saat pakai baterai. Tool yang terikat ke proses seperti Auto Mode milik LidRun menahan assertion keep-awake hanya selama agent benar-benar berjalan dan melepasnya begitu proses keluar, sehingga Mac tetap bisa tidur normal di sela-sela proses tersebut.

Bagaimana cara menjaga Claude Code tetap berjalan semalaman dengan aman?

Ikat keep-awake ke proses Claude, bukan pakai mode always-on yang menyeluruh, supaya ia melepas hold otomatis begitu agent selesai — Auto Mode melakukan ini out of the box untuk claude. Set batas baterai sekitar 20% dan biarkan guardrail termal menghentikan proses dengan rapi kalau kondisinya memburuk. Jalankan di permukaan datar dan keras dengan airflow di bawahnya, utamakan listrik AC daripada baterai, dan nyalakan push notification (ntfy.sh atau Pushover) supaya Anda tahu sesi sudah berakhir tanpa harus mengecek manual. Jalankan lidrun status sebelum menutup lid untuk memastikan ia benar-benar memantau.

Batas baterai berapa yang sebaiknya saya set untuk proses semalaman?

20% cocok untuk sebagian besar beban kerja dan merupakan default bawaan LidRun sendiri — ini menyisakan jarak nyata di atas hard survival floor LidRun dan tetap jauh di atas rentang emergency-shutdown macOS sendiri, menyisakan cukup daya untuk pagi harinya. Untuk tugas yang lebih ringan dan bergantung API, Anda bisa turunkan ke 15%; untuk inference lokal atau build berat, tetap di 20% atau lebih tinggi. Yang penting adalah menetapkan batas sama sekali — tanpa itu, macOS yang menentukan kapan berhenti dan mungkin tidak memilih momen yang rapi.

Apakah Mac akan overheat menjalankan AI agent semalaman dengan lid tertutup?

Menjalankan dengan lid tertutup di permukaan datar dan keras dengan airflow di bawahnya membantu mengurangi risiko panas — airflow yang terbatas, seperti di dalam tas atau ruang tertutup, adalah bahaya sebenarnya, bukan lid yang tertutup itu sendiri. Manajemen termal bawaan Apple Silicon men-throttle CPU sebelum sesuatu yang kritis terjadi, tapi auto-stop termal adalah lapisan kedua: ia melepas hold keep-awake saat panas kritis dan bisa memaksa sleep yang rapi kalau Anda menjauh dari keyboard, alih-alih membiarkan proses berjalan panas selama berjam-jam.

Apakah caffeinate atau pmset disablesleep cukup untuk menjaga AI agent tetap berjalan semalaman?

Untuk pekerjaan foreground yang sedang Anda pantau, ya — caffeinate -i -w <pid> gratis, bawaan, dan keluar dengan rapi bersama prosesnya. Untuk proses semalaman yang tidak diawasi, ada dua celah: ia tidak bertahan saat lid tertutup di baterai, dan tidak ada bagian di dalamnya yang tahu soal batas baterai atau termal. sudo pmset -a disablesleep 1 memperbaiki kasus lid tertutup tapi merupakan pengaturan global dan persisten — kalau Anda lupa mengembalikannya ke 0, Mac tidak akan tidur sendiri lagi sampai Anda mengaturnya ulang secara manual, tanpa ada batas baterai atau cutoff termal yang memantau sementara itu. Keduanya tool yang pas untuk pekerjaan singkat; proses semalaman yang tidak diawasi butuh sesuatu yang juga tahu kapan harus berhenti.

Bagaimana cara mengecek keep-awake benar-benar aktif sebelum saya menutup lid?

Lirik ikon menu-bar, atau jalankan lidrun status dari terminal — ia menampilkan mode saat ini, apakah power assertion dan Closed-Lid aktif, kondisi baterai dan termal, serta proses mana yang sedang dipantau dan terlihat oleh Auto Mode. Ini sangat berguna lewat SSH, di mana tidak ada menu bar untuk dicek.

Penasaran apakah LidRun cocok untuk Anda?

Biarkan ChatGPT, Claude, atau Perplexity yang mencari tahu — klik di bawah dan lihat pendapat AI tentang LidRun.