- zerostack adalah agen coding minimalis yang ditulis dengan Rust, dengan dukungan untuk banyak penyedia LLM serta penyedia kustom
- Menyediakan baca·tulis·edit file, grep, pencarian file, daftar direktori, eksekusi Bash dengan gerbang izin, MCP, dan alat web Exa
- Berukuran sekitar 7 ribu LoC, biner 8.9MB, dengan RAM sekitar 8MB saat sesi kosong dan sekitar 12MB saat bekerja, serta CPU 0.0% saat idle
- Penyedia bawaan adalah OpenRouter, diinstal dengan
cargo install zerostack, dan memerlukan bubblewrap untuk isolasi Bash di --sandbox
- Mencakup prompt bawaan seperti
code·plan·review, 4 mode izin, melanjutkan sesi, loop iteratif, dan integrasi Git worktrees
Gambaran umum zerostack
- zerostack adalah agen coding minimalis yang ditulis dengan Rust, terinspirasi oleh pi dan opencode
- Memiliki arsitektur multi-penyedia yang mendukung OpenRouter, OpenAI, Anthropic, Gemini, Ollama, dan penyedia kustom
- Menyediakan alat file seperti baca·tulis·edit file, grep, pencarian file, dan daftar direktori, serta eksekusi Bash dengan gerbang izin
- Mencakup simpan·muat·lanjutkan sesi, kompresi otomatis untuk menjaga context window, UI terminal berbasis crossterm, koneksi server MCP, serta alat WebFetch·WebSearch berbasis Exa
- Dengan
/worktree, Anda bisa berpindah antar Git worktree, dan loop iteratif untuk pekerjaan jangka panjang juga sudah terintegrasi
Performa dan instalasi
Mulai cepat
- Penyedia bawaan adalah OpenRouter, dan API key diatur melalui environment variable
export OPENROUTER_API_KEY="[api_key]"
- Sesi interaktif dijalankan dengan prompt default
code
zerostack
- Mode sekali jalan meneruskan prompt dengan
-p
zerostack -p "Explain this project"
- Sesi terakhir dapat dilanjutkan dengan
-c
zerostack -c
- Anda dapat menentukan penyedia dan model
zerostack --provider openrouter --model deepseek/deepseek-v4-flash
Sistem prompt
- zerostack mencakup sekumpulan system prompt bawaan yang mengubah perilaku dan gaya bicara agen
- Tujuannya adalah membangun keluarga prompt yang dapat menggantikan superpower atau skills resmi Claude
- Dengan
/prompt, Anda dapat menampilkan daftar prompt yang terdaftar atau beralih ke prompt lain
-
Prompt bawaan
code adalah default, yaitu mode coding dengan akses penuh ke file·alat Bash dan menggunakan workflow TDD
plan adalah mode khusus perencanaan yang menjelajah tanpa menulis kode lalu menyusun rencana
review adalah mode code review yang meninjau akurasi, desain, pengujian, dan dampak
debug adalah mode debug yang mencari akar masalah sebelum mengusulkan perbaikan
ask adalah mode read-only yang hanya mengizinkan read·grep·glob, tanpa write atau Bash
brainstorm adalah mode khusus desain yang mengeksplorasi ide dan menyajikan rancangan tanpa menulis kode
frontend-design adalah mode desain frontend untuk UI yang unik dan siap produksi
review-security adalah mode security review yang mencari kerentanan yang dapat dieksploitasi
simplify adalah mode penyederhanaan kode yang meningkatkan kejelasan tanpa mengubah perilaku
write-prompt adalah mode penulisan prompt untuk membuat dan mengoptimalkan prompt agen
- Prompt kustom dapat dibuat dengan menaruh file Markdown di
$XDG_CONFIG_HOME/zerostack/prompts/ lalu merujuknya berdasarkan nama
- Secara otomatis membaca
AGENTS.md atau CLAUDE.md di root proyek atau direktori induk lalu menyisipkannya ke system prompt; dapat dinonaktifkan dengan -n atau --no-context-files
Sistem izin
- zerostack menyediakan 4 mode izin dari yang paling aman hingga yang paling permisif
-
Mode izin
restrictive atau -R meminta persetujuan untuk setiap aksi alat yang tidak diizinkan secara eksplisit dalam konfigurasi
standard adalah default; perintah aman seperti ls, cd, git log, cargo check disetujui otomatis, sementara operasi tulis dan destruktif meminta konfirmasi
accept-all atau --accept-all menyetujui otomatis semua pekerjaan di dalam direktori kerja, dan meminta konfirmasi untuk path di luar itu
yolo atau --yolo menyetujui otomatis semua pekerjaan tanpa prompt
- Anda dapat mengatur izin secara rinci dengan menentukan pola glob per alat di file konfigurasi
- Misalnya, Anda bisa membuat
write **.rs diizinkan otomatis sementara penulisan file lain selalu meminta konfirmasi
- Allowlist sesi menyimpan keputusan yang telah disetujui selama sesi agar aksi yang sama tidak perlu dikonfirmasi berulang kali
- Jika pemanggilan alat yang sama berulang 3 kali atau lebih, deteksi doom-loop akan menampilkan prompt peringatan atau menolaknya sesuai konfigurasi, untuk mencegah agen mengulangi aksi destruktif
Perintah slash dan manajemen sesi
- Perintah slash utama mengontrol model, tingkat pemikiran, percakapan, sesi, loop, prompt, dan mode izin
/model mengganti model, dan /thinking mengatur tingkat pemikiran
/clear menghapus percakapan, dan /session menampilkan·menyimpan·memuat sesi
/loop menjadwalkan prompt iteratif, dan /prompt menampilkan atau mengubah prompt agen
/mode mengatur mode sistem izin, dan seluruh perintah dapat dilihat lewat /help
- Sesi disimpan di
$XDG_DATA_HOME/zerostack/sessions/
-c melanjutkan sesi terbaru, -r menelusuri dan memilih sesi, dan --session <id> memuat sesi tertentu
Loop iteratif
- zerostack mencakup loop coding iteratif untuk pekerjaan jangka panjang
- Agen berulang kali membaca tugas, memilih item dari rencana, melakukan pekerjaan, menjalankan tes, memperbarui rencana, lalu melanjutkan loop hingga tugas selesai atau batas iterasi tercapai
- Sistem loop adalah fitur eksperimental
-
Cara menggunakan loop
/loop Implement the user authentication system memulai loop dengan prompt yang ditentukan
/loop stop menghentikan loop yang aktif
/loop status menampilkan status loop saat ini
- Tiap iterasi mencakup tugas asli,
LOOP_PLAN.md yang terus berubah, ringkasan iterasi sebelumnya, dan output verifikasi
- Saat loop aktif, input selain perintah slash akan diblokir
-
Loop headless berbasis CLI
Integrasi Git worktrees
- zerostack menyediakan alur kerja pekerjaan per cabang melalui git worktree
- Dari dalam UI chat, Anda bisa membuat worktree, bekerja di dalamnya, menggabungkannya, lalu keluar
- Integrasi Git worktrees adalah fitur eksperimental
-
Perintah worktree
/worktree <name> membuat git worktree pada branch <name> lalu berpindah ke sana; jika sudah ada, pembuatan dilewati
/wt-merge [branch] menggabungkan branch worktree ke [branch], melakukan push, membersihkan, lalu kembali ke repositori utama
/wt-exit kembali ke repositori utama tanpa melakukan merge
-
Contoh workflow
/worktree feature-x membuat branch baru dan direktori worktree lalu berpindah ke sana
- Setelah itu, gunakan zerostack seperti biasa dan perubahan akan tetap berada di branch feature
/wt-merge membuat agen menggabungkan branch, melakukan push, membersihkan, lalu kembali ke repositori utama
/wt-exit langsung kembali ke repositori utama tanpa merge
Penyedia yang didukung dan lisensi
- Penyedia bawaan adalah OpenRouter
- Mendukung penyedia yang kompatibel dengan OpenAI seperti vLLM dan LiteLLM
- Mendukung Anthropic, Gemini, dan Ollama
- Penyedia kustom dapat dikonfigurasi di
$XDG_CONFIG_HOME/zerostack/config.json dengan base URL arbitrer dan environment variable API key
- Lisensinya adalah GPL-3.0-only
1 komentar
Pendapat Hacker News
Saya kurang paham soal alat seperti ini, jadi penasaran apa keunggulannya dibanding model/alat seperti Claude Code
Saya juga sedang membuat sesuatu yang mirip di waktu luang, dengan tujuan memahami agen lebih dalam sekaligus belajar Rust
Hanya saja saya ingin tetap mempertahankan kemampuan konfigurasi
pi. Kemampuan untuk memodifikasi diri sendiri dan membuat alat baru sangat berguna, dan saya merasa alat seperti ini seharusnya tidak diberi izin menjalankan kode arbitrer lewatbashTentu saja, kalau punya akses ke
editdancargo run, eksekusi kode arbitrer tetap mungkin, tetapi kalau ada tugas yang perlu dilakukan agen tanpabash, saya lebih memilih membuat alatnya saat itu jugaKarena itu saya memutuskan mengizinkan kustomisasi dengan cara lain. Pustaka prompt di
~/.config/hypernova/prompts/adalah alternatif sederhana untuk Skills, dan prompt bawaan dimaksudkan untuk menggantikan superpowers dan frontend-design milik ClaudeFitur yang bisa membuat agen menjadi berat dapat dimatikan saat kompilasi lewat feature flag, dan karena kodenya pendek serta mudah dibaca, bila perlu Anda bisa menjalankan zerostack pada source zerostack itu sendiri untuk membuat fork kustom
Model perizinannya, seperti terlihat di README, dibuat setelah banyak pertimbangan, terdiri dari 4 tingkat, dari “Restrictive” tanpa perintah sampai “YOLO” yang membiarkan agen melakukan apa pun yang diinginkannya, dan ada juga regex izinkan/tanya/tolak untuk pemanggilan
bash. Dalam kasus ini, cukup jalankanzerostack -Runtuk memaksa semua alat selalu meminta izinFitur agen yang bisa diprogram juga sedang dikerjakan, tetapi belum siap diumumkan
Baru-baru ini saya juga bikin versi iseng tapi setengah serius dengan kurang dari 200 baris: https://github.com/pnegahdar/nano
Sudah ada fitur REPL, sesi, eksekusi non-interaktif, dan approval. Menurut saya, makin pintar modelnya, makin berkurang pentingnya harness, kecuali untuk pengalaman pengembang
Mungkin suatu saat saya akan menjalankannya di SWE-bench
Minggu lalu saya juga membuat satu sendiri untuk senang-senang dan belajar, dan seperti kebanyakan coding agent, itu juga bisa terintegrasi dengan
mcpServersyang sudah dikonfigurasiSaya juga merangkum apa yang dibutuhkan di tiap langkah dan alasannya: https://nb1t.sh/building-a-real-agent-step-by-step/
“RAM footprint: ~8MB on an empty session, ~12MB when working”
Bagian ini saya suka. Claude Code memakai beberapa GB, jadi cukup menyebalkan di laptop spek rendah
Waktu start-nya kurang dari 0,5 detik dan penggunaan RAM-nya juga sangat rendah. Di laptop berusia 12 tahun pun tetap berjalan lancar tanpa melambat
Pada dasarnya ini hampir seperti mesin penggabung string, jadi tidak ada alasan untuk lambat di perangkat apa pun, termasuk perangkat keras lama
1: https://zed.dev/acp
Saya akan coba saat sudah di rumah. Alat yang ringan dan cepat benar-benar membuat perbedaan besar dalam pengalaman ngoding
Saya penasaran bagaimana pendekatan prompt ini dibanding gabungan skill dan sub-agent yang umum. Saya sering mencampurnya, misalnya kalau build gagal saya menjalankan skill
/fix-ci, lalu sub-agent mengambil pesan error, stack trace, dan log terkait untuk menyelesaikan masalahKalau ada masalah query DB di integration test, agen kadang menyelidikinya sendiri, atau saya arahkan sedikit supaya memanggil skill akses DB read-only. Kalau perlu menggali lama dan dalam, saya mengatakan hal seperti “gunakan sub-agent Sonnet dan suruh debug perilaku ini dengan skill query DB”
Skill memberi kemampuan tambahan secara instan, dan sub-agent memberi isolasi agar konteks tidak membengkak. Agen juga mungkin bisa meniru ini dengan menjalankan dirinya sendiri lewat
bashbersama prompt lain, tetapi rasanya akan sedikit kurang mulus, jadi saya harus mencobanya sendiriMisalnya salah satu prompt terintegrasi,
/prompt debug, akan membuka agen yang berfokus pada debugging, dan dari situ Anda bisa tetap bercakap seperti dengan agen biasa, lalu kembali ke agen coding standar dengan/prompt codeUntuk saat ini sub-agent belum didukung karena keseluruhan agen berjalan dalam satu buffer konteks dan saya ingin menjaganya tetap ringan. Namun tugas yang banyak eksplorasi memang sering membengkakkan context window, jadi kemungkinan besar sub-agent akan ditambahkan nanti
Saya juga pernah menyuruh Claude Code membuat sesuatu seperti ini, dan untuk pengeditan saya juga menambahkan line hashing dari Dirac
Saya memakai Rust, dan sempat terpikir untuk mengimplementasikan hook sebagai plugin agar bisa melakukan self-modification, tetapi akhirnya saya rapikan dengan membuatnya menulis detail perbaikan ke file terpisah, memperbarui source code, lalu mengompilasinya ulang
Lokasi source code-nya tetap, jadi agen bisa menulis ulang dirinya sendiri dan membangunnya lagi. Saya memakainya sambil menjalankan DeepSeek 4 Flash di 2x RTX 6000 Pro, dan kecepatannya sekitar 138 tok/s
Sejujurnya saya meniru Pi, Dirac, dan OpenCode. Apakah ada teknik baru di sini yang layak saya curi?
Saya sempat mencobanya sebentar dan memang cukup cepat
Saya penasaran apakah sedang mencari kontributor, atau ini memang dibuat sebagai alat pribadi
Tapi saya menemui beberapa masalah saat mencoba model lain. Di Azure, gpt-5.5 tidak berjalan meskipun memakai endpoint kompatibel OpenAI, karena
max_tokensdiubah menjadimax_completion_tokensJuga tampaknya tidak ada cara untuk meneruskan custom header, jadi saya tidak bisa menetapkan
reasoning_effortuntuk model DeepSeekYang Anda sebutkan tampaknya bug yang jelas di codebase, jadi kalau bisa tolong buka issue GitHub terpisah untuk masing-masing bug
Claude Code dan Opencode bekerja baik di lingkungan saya
Agak lucu bahwa coding agent berjalan di data center dengan konsumsi daya lebih dari 1000W dan memori lebih dari 2TB, tetapi orang justru fokus pada beberapa watt terakhir dan beberapa ratus MB memori di laptop mereka
Toh dibanding biaya energi untuk mengompilasi kode, ini tetap akan tenggelam, tetapi membuatnya lebih cepat dan ringan juga bukan hal buruk
Saat saya memakai coding agent sekarang, baterainya habis cukup cepat, dan itu mengejutkan kalau dipikir sebagian besar pekerjaannya tidak terjadi di laptop saya
Mengoptimalkan coding agent sisi klien bukan untuk menyelamatkan iklim, tetapi untuk memperpanjang jam kerja. Bahkan bisa jadi justru lebih buruk bagi iklim
Software yang berjalan di komputer orang lain bukan urusan saya. Saya tidak bisa mengendalikan apa yang berjalan di server orang lain, dan bahkan kalau bisa pun saya tidak membayar biaya RAM-nya, jadi saya tidak peduli
Sebaliknya, RAM di perangkat saya saya bayar sendiri. Jika TUI yang hanya menampilkan teks kurang dari 1KB menghabiskan beberapa GB memori sampai membuat aplikasi lain di Windows mati karena OOM, atau menyebabkan Linux swap ke HDD dan membekukan seluruh mesin, tentu saya akan peduli
Saat harga RAM sungguhan naik 5 kali lipat dan harga komponen lain juga naik 2–3 kali lipat, menghindari pemborosan memori jadi sangat penting
Memang benar modelnya besar dan boros sumber daya, tetapi harness bisa sangat memengaruhi seberapa banyak model dipakai
Misalnya, kalau harness punya kumpulan alat yang kuat, model bisa bekerja jauh lebih efisien
Codebase-nya kecil, jadi saya melemparkannya ke DeepSeek v4 Flash di Pi untuk meninjau apakah ada bagian berbahaya, dan saya tidak menemukan hal yang mengkhawatirkan. Bagus dibuatnya
Dalam proyek Rust, saya sering mengalami bahwa bahkan Claude 4.7 Opus hampir selalu menambahkan dependensi lama kecuali Anda secara eksplisit menyuruh model untuk tidak mengedit
Cargo.tomllangsung dan memakaicargo addSaya memeriksa dependensi proyek ini secara manual dan semuanya versi terbaru, yang bagus. Tentu itu tidak berarti tidak ada masalah tersembunyi di dependensi transitif
Masalah melakukan code review dengan LLM bisa cepat berubah jadi soal selera. Misalnya, saat melihat kodenya saya sempat berpikir beberapa metode yang bolak-balik antara string dan enum mungkin bisa cukup dengan satu
#[derive]daristrum. Dengan menambahkan satu crate tanpa dependensi,provider.rsbisa jauh lebih ringkasSekadar iseng, saya juga meminta DeepSeek V4 Pro dengan Max thinking untuk “mengaudit” codebase ini, dan katanya tidak ada tanda jelas telemetri tersembunyi. Tetapi ia menyoroti bahwa proyek ini mengatur panic handler ke
abort, dan saya punya pendapat kuat soal ituMungkin tujuannya menghindari link ke
libunwinddemi menghemat beberapa KB ukuran biner, tetapi akibatnya saat crash, binernya langsung berhenti tanpa memberi stack trace kepada pengguna. Menurut saya, jika saat panic bisa mendapatkan informasi debug yang berguna, ukuran biner yang bertambah sekitar 50KiB lebih layak dipilihSelain itu, kalau panic terjadi di task asinkron, itu tidak bisa dipulihkan untuk menampilkan pesan error biasa, dan seluruh proses langsung berhenti
Alasannya DeepSeek terus gagal pada logika perpindahan kursor tertentu. Proses optimasi memori saya tangani sepenuhnya sendiri, dan seperti saya tulis di komentar lain, saya menggabungkan optimasi compiler dengan penggunaan crate Rust untuk memanfaatkan struktur data yang lebih efisien
Lucu juga kebetulan ini keluar hari ini. Saya sendiri baru saja hendak mulai menulis yang serupa dengan Rust
Cukup mengejutkan melihat opencode perlahan bocor memori di proyek besar sampai mencapai 6GB lalu makin lama makin lambat
Akan saya cek. Kelihatannya keren