Omnigent: Satu Harness untuk Banyak Agent CLI
Pelajari meta-harness Omnigent, cara mengunci ke rilis 0.7.0, dan cara mengisolasi setiap sub-agent di VPS tanpa mengganti CLI yang sudah terpasang.
Apa itu Omnigent
Omnigent adalah meta-harness open source: satu lapisan orkestrasi yang mengendalikan alat baris perintah agent (CLI) yang sudah Anda instal. Omnigent tidak menggantikan Claude Code, Codex, Cursor, OpenCode, Hermes, atau Pi. Omnigent menjalankan alat-alat tersebut, memberikan tugas kepada masing-masing alat, lalu mengawasi hasilnya dalam satu sesi dengan satu set kebijakan. Databricks menerbitkan repositori ini pada June 2026 di bawah lisensi Apache 2.0, dan halaman depannya masih menampilkan Status: alpha.
Klaim praktisnya terbatas dan perlu disampaikan secara langsung. Anda mendeskripsikan agent satu kali dalam YAML, lalu menentukan harness yang menjalankannya. Ubah satu baris tersebut, dan agent yang sama akan berjalan pada CLI dari vendor lain. Tidak ada bagian lain dalam setup yang berubah, karena Omnigent mengelola loop di atas agent, bukan loop di dalam agent.
Apa yang dimaksud dengan meta-harness, dan apa perbedaannya dari framework?
Harness adalah program yang menjalankan model dalam sebuah loop. Program ini membaca prompt Anda, memanggil tool, mengedit file, lalu mengirimkan hasilnya. Claude Code adalah harness. Codex adalah harness. Anda menginstalnya, masuk, lalu program tersebut bekerja sendiri.
Framework adalah pustaka yang menjadi dasar penulisan kode. Anda mengimpornya, mendefinisikan langkah-langkah dalam Python, lalu program Anda menjadi agent. Jika vendor diganti, Anda harus mengedit kode karena client vendor terintegrasi melalui program tersebut.
Meta-harness berada satu tingkat di atas keduanya. Meta-harness adalah supervisor yang menjalankan harness sebagai proses anak. Omnigent memulai CLI vendor, memberikan pekerjaan kepadanya, lalu membaca hasil yang dikembalikan. Anda tetap menggunakan CLI yang sudah diinstal, serta subscription atau kunci API (application programming interface) yang sudah digunakan untuk membayarnya. Itulah perbedaan utamanya. Perbedaan ini juga menentukan pengguna alat tersebut: orang yang sudah menjalankan beberapa CLI agent dan lelah mengoperasikannya satu per satu dari setiap terminal.
Masalah apa yang diselesaikan oleh satu lapisan orkestrasi?
- Beralih vendor hanya memerlukan satu baris perubahan. Definisi agent menyimpan
harnessdanmodelsebagai data, sehingga pemindahan suatu peran dari satu vendor ke vendor lain cukup dilakukan dengan mengedit file YAML, bukan menulis ulang konfigurasi. - Peninjauan dapat dilakukan lintas vendor. Diff yang ditulis oleh satu model dibaca oleh model dari perusahaan lain. Dua model dari keluarga yang sama cenderung memiliki titik buta yang sama, sehingga pendapat kedua dari vendor yang sama kurang bernilai.
- Kebijakan memiliki satu tempat. Batas pengeluaran dan prompt persetujuan dideklarasikan dalam file agent, lalu diterapkan ke setiap sub-agent di bawahnya.
- Sesi tidak bergantung pada satu alat. Satu transkrip mencakup pekerjaan yang dilakukan oleh beberapa CLI, sehingga Anda dapat meninjau kembali apa yang terjadi tanpa menggabungkan empat riwayat scroll.
Biayanya adalah lapisan itu sendiri. Setiap bug di Omnigent kini menjadi bug yang berada di antara Anda dan agent yang sebelumnya dapat bekerja sendiri. Pada tahap alpha, ini merupakan biaya nyata, bukan sekadar kemungkinan teoretis.
Posisi multi-agent harness dibandingkan dengan alat single-agent
Jika Anda belum pernah menjalankan satu agent di server, mulai dari sana. Panduan kami tentang menjalankan coding agent pada VPS membahas kasus single-agent secara menyeluruh, dan Omnigent mengasumsikan bahwa konfigurasi tersebut sudah Anda miliki. Bidang AI agent yang di-hosting sendiri berfokus pada pemilihan agent, sedangkan mempelajari cara kerja agent yang sebenarnya merupakan titik awal yang lebih baik jika istilah-istilah di sini masih baru bagi Anda.
Omnigent juga berbeda dari connector layer. Pekerjaan seperti memberikan agent akses ke sumber data Anda sendiri berkaitan dengan data yang dapat dijangkau oleh agent. Omnigent berkaitan dengan agent yang dijalankan, urutannya, serta batasan yang berlaku. Anda dapat menggunakan keduanya sekaligus karena keduanya tidak saling tumpang tindih.
Yang perlu disiapkan sebelum instalasi
- Python 3.12 atau yang lebih baru. Paket yang dipublikasikan mendeklarasikan
requires-python >= 3.12. tmux, karena terminal harness berjalan di dalamnya.- Minimal satu CLI vendor yang sudah terinstal dan sudah digunakan untuk login.
- Node.js 22 hanya jika Anda melakukan build dari checkout git. Wheel di PyPI sudah menyertakan aset web yang telah dibangun, sehingga instalasi normal sama sekali tidak memerlukan Node.
Instal rilis yang dipatok versinya, bukan main
curl -fsSL https://raw.githubusercontent.com/omnigent-ai/omnigent/main/scripts/install_oss.sh | sh -s -- --version 0.7.0Bagian sh -s -- bukan hiasan. Tanpa bagian tersebut, sh menganggap --version sebagai opsinya sendiri dan installer tidak pernah menerima flag itu. Akibatnya, Anda mendapatkan versi terbaru pada hari tersebut. Pada repositori yang merilis perubahan yang tidak kompatibel setiap beberapa minggu, hal ini membedakan server yang dapat direproduksi dari hasil yang tidak terduga.
Installer menggunakan uv, pengelola paket Python dari Astral, dan menawarkan untuk menginstal uv terlebih dahulu jika belum tersedia. Jika uv sudah tersedia, lewati skrip tersebut:
uv tool install --force --python 3.12 "omnigent==0.7.0"Extras menggunakan pola yang sama, dan flag tersebut diulang: --extra e2b --extra kubernetes pada skrip, atau "omnigent[e2b,kubernetes]" dengan uv. Perhatikan bahwa tag git adalah v0.7.0, sedangkan versi paket di PyPI adalah 0.7.0.
uv menempatkan binary di direktori yang dilaporkan oleh uv tool dir --bin, biasanya ~/.local/bin, dan installer menawarkan untuk menambahkan direktori tersebut ke shell profile Anda. Jika command tidak ditemukan segera setelah instalasi baru, itulah penyebabnya. Periksa hasil instalasi Anda:
omni upgrade --checkPerintah tersebut membandingkan versi yang terinstal dengan versi terbaru yang dipublikasikan dan memberi tahu apakah tersedia upgrade, tanpa menjalankannya. omni dan omnigent adalah program yang sama dengan dua nama berbeda.
Arahkan ke penyedia model
omni setupWizard mencari kredensial yang sudah tersedia di lingkungan Anda dan meminta kredensial yang belum ada. Wizard ini menangani API key, langganan vendor, gateway seperti OpenRouter atau Ollama, serta workspace Databricks. Jika Anda sudah menjalankan server model lokal dengan Ollama pada mesin yang sama, arahkan gateway ke server tersebut agar trafik tidak pernah keluar dari mesin.
Menjalankan multi-agent minimal
Agen contoh berada di repositori. Jadi, clone tag yang sama dengan yang Anda instal, bukan main.
git clone --depth 1 --branch v0.7.0 https://github.com/omnigent-ai/omnigent.git
cd omnigent
omnigent run examples/polly/Polly adalah orkestrator coding multi-agent yang disertakan dalam repositori. Konfigurasinya mendeklarasikan sub-agent bernama claude_code, codex, opencode, cursor, hermes, dan pi. Konfigurasi tersebut juga memiliki satu aturan yang membuat seluruh latihan ini layak dijalankan: review selalu dilakukan oleh vendor yang berbeda dari implementer. Polly tidak menulis kode sendiri. Polly menyusun rencana, membagi tujuan menjadi item pekerjaan, mendelegasikan setiap item, lalu meneruskan setiap diff kepada reviewer dari vendor lain.
Sebelum mendelegasikan pekerjaan, Polly menjalankan pemeriksaan awal untuk mengetahui CLI sub-agent yang benar-benar tersedia di mesin. Jika hanya satu CLI vendor yang terinstal, tidak ada pihak yang dapat menerima diff tersebut. Jadi, instal setidaknya dua CLI sebelum menilai hasilnya. Debby, contoh lain yang disertakan, adalah agent debat dengan dua kepala: satu Claude dan satu GPT:
omni debbyIni adalah cara singkat untuk memastikan dua provider telah dikonfigurasi, karena Debby memerlukan keduanya agar dapat memberikan respons.
Sub-agent dideklarasikan sebagai tool
File agent menggunakan YAML. executor menentukan harness, model, dan autentikasi. tools memuat server MCP (model context protocol), fungsi Python, dan sub-agent. Sub-agent adalah tool dengan type: agent serta executor-nya sendiri. Mekanisme ini mendasari semua hal di atas.
name: orchestrator
prompt: |
You coordinate coding and review tasks.
executor:
harness: claude-sdk
model: databricks-claude-sonnet-4-6
tools:
coder:
type: agent
prompt: Write and test code.
executor:
harness: claude-sdk
model: databricks-claude-opus-4-7
reviewer:
type: agent
prompt: Review proposed changes.
executor:
harness: claude-sdk
model: databricks-claude-sonnet-4-6omnigent run path/to/my_agent.yamlID model tersebut berasal dari contoh docs/AGENT_YAML_SPEC.md milik project, dan merupakan nama yang di-host oleh Databricks. Ganti harness dan model dengan nilai yang dikonfigurasi oleh omni setup pada sistem Anda. Nilai harness lain dalam spesifikasi tersebut mencakup antigravity, copilot, kimi, qwen, dan acp:<slug> untuk apa pun yang menggunakan protokol generik. Spesifikasi tersebut juga mendukung pass_history: true pada sub-agent, yang meneruskan percakapan induk kepadanya. Opsi ini menggunakan token pada setiap delegasi. Karena itu, nonaktifkan opsi tersebut untuk sub-agent yang hanya memerlukan tugas yang sedang dikerjakan. Jika prompt milik coder menginstruksikannya untuk membuat perubahan terkecil yang berfungsi, coder tersebut akan memberikan diff kepada reviewer yang cukup singkat untuk benar-benar dibaca. Dalam konteks ini, hal tersebut lebih penting daripada model yang Anda pilih untuk kedua peran tersebut.
Orkestrasi yang berjalan lama sebaiknya dijalankan pada VPS
Proses multi-agen bukan perintah yang selesai dalam dua menit. Anda perlu merencanakan, mendelegasikan, menunggu pekerjaan git paralel pada worktree, meninjau, lalu merevisi. Menutup layar laptop akan menghentikan seluruh proses. VPS (virtual private server) tetap aktif dan mempertahankan koneksi jaringannya, sehingga sesi tetap berjalan saat Anda tidak memantaunya.
omnigent server --background
omnigent server statusServer menyediakan antarmuka pengguna web pada port 6767. omnigent server status melaporkan apakah ada instance yang sedang berjalan, sedangkan omnigent stop menghentikannya. Pada rilis sebelum v0.7.0, perintahnya adalah omni server start. Perintah tersebut telah dihapus, sehingga panduan dan tangkapan layar lama tidak akan sesuai dengan keluaran terminal Anda.
Jangan memublikasikan 6767 pada alamat publik. Ada dua konfigurasi yang aman. Biarkan port tetap tertutup pada firewall dan teruskan melalui SSH menggunakan ssh -N -L 6767:localhost:6767 you@your-server, lalu buka antarmuka web di http://localhost:6767 pada komputer Anda sendiri. Atau, lakukan terminasi TLS (transport layer security) di depannya dan aktifkan autentikasi:
OMNIGENT_AUTH_ENABLED=1 omnigent server --backgroundKonfigurasi firewall tersebut merupakan pekerjaan umum yang dibahas dalam dasar-dasar firewall ufw untuk VPS, dan jika server sudah menjalankan container di belakang Traefik di depan beberapa aplikasi Docker Compose, Omnigent dapat ditambahkan sebagai satu service lagi dengan pola yang sama.
Untuk deployment berbasis container, direktori deploy/ dalam repository berisi konfigurasi Compose: ./bootstrap.sh membuat secret ke dalam .env, lalu docker compose up -d menjalankan Omnigent dan Postgres pada port 6767. DATABASE_URL memilih Postgres atau SQLite, sedangkan OMNIGENT_AUTH_ENABLED menggunakan 1 secara default di dalam container. Ini merupakan default yang tepat untuk layanan yang dapat dijangkau dari luar.
Untuk menentukan ukuran server, catatan deployment memperkirakan working set server sekitar 512 MB hingga 1 GB, dan konfigurasi Fly.io menetapkan 1 GB. Angka tersebut hanya untuk supervisor. Setiap sub-agen merupakan proses terpisah yang menyimpan checkout dan model client-nya sendiri, sehingga tentukan ukuran server berdasarkan jumlah agen. Setelah server aktif, omnigent login https://your-host yang diikuti omnigent host https://your-host mendaftarkan laptop Anda ke server tersebut, dan omnigent attach <session_id> mengambil kembali sesi yang sedang berjalan dari perangkat lain.
Sandbox setiap sub-agent sebelum Anda meninggalkannya
Omnigent merilis sandbox tingkat sistem operasi bernama Omnibox. Di Linux, sandbox ini menggunakan namespace bubblewrap dan seccomp, sehingga kernel yang menegakkan batasan, bukan prompt agent. Agent yang terkena prompt injection tidak dapat membujuknya untuk melanggar aturan kernel. Instal dependensinya terlebih dahulu:
sudo apt install bubblewrapKonfigurasinya berada di bawah os_env dalam file agent:
os_env:
type: caller_process
cwd: .
sandbox:
type: linux_bwrap
write_paths: [.]
write_files: []
read_paths: []
allow_network: true
cwd_allow_hidden: [.venv]
env_passthrough: []
egress_rules: []
credential_proxy: []Direktori kerja bersifat hanya-baca sampai Anda mencantumkannya di write_paths, sehingga agent yang bermasalah tidak dapat menulis di luar workspace. Dotfile tetap tersembunyi kecuali namanya dicantumkan di cwd_allow_hidden. Dengan demikian, izin baca yang luas tidak secara diam-diam membuka .ssh atau .aws. Atur egress_rules agar seluruh trafik HTTP dan HTTPS melewati proxy default-deny, dengan setiap aturan ditulis sebagai "METHODS host/path-glob". credential_proxy melangkah lebih jauh: agent hanya pernah memegang placeholder, lalu proxy mengganti placeholder tersebut dengan secret yang sebenarnya saat request keluar. Dengan demikian, transcript yang bocor tidak membocorkan apa pun yang dapat digunakan. Dalam setup multi-harness, setiap sub-agent memiliki blok sandbox sendiri dalam file konfigurasi masing-masing di bawah agents/. Dengan cara ini, akses jaringan reviewer dapat ditolak, sementara implementer tetap memilikinya.
Batasan ini dinyatakan dalam dokumentasi dan penting untuk diperhatikan. Sandbox OS berlaku untuk pemanggilan tool sys_os_* dan terminal. Sandbox ini tidak mencakup server MCP dan tidak mencakup proses supervisor Omnigent itu sendiri. Server MCP yang Anda jalankan berjalan di luar sandbox dengan permission Anda. Celah ini menjadi alasan pola yang lebih kuat tetap berupa satu mesin sementara untuk setiap agent. Pola tersebut dibahas dalam menjalankan coding agent di VM sekali pakai. Bagian lainnya adalah kredensial. menjauhkan secret dari jangkauan agent menjadi lebih sulit, bukan lebih mudah, ketika enam sub-agent berbagi satu host.
Batas pengeluaran adalah kebijakan yang dideklarasikan dalam file yang sama:
policies:
budget:
type: function
handler: omnigent.policies.builtins.cost.cost_budget
factory_params:
max_cost_usd: 5.00
ask_thresholds_usd: [1.00, 3.00]Run yang membuat rencana dengan satu vendor, melakukan implementasi dengan vendor kedua, dan melakukan review dengan vendor ketiga mengeluarkan biaya di tiga tempat sekaligus. Karena itu, tetapkan batas sebelum run unattended pertama, bukan setelah invoice pertama. Fitur bawaan juga mencakup max_tool_calls_per_session dan ask_on_os_tools, yang meminta persetujuan sebelum operasi file dan shell. Catatan kami tentang mengendalikan biaya AI agent di VPS berlaku langsung di sini, bahkan lebih penting, karena sub-agent paralel melipatgandakan laju pengeluaran.
Seberapa cepat repository ini berkembang?
The data behind this chart
[
{
"version": "v0.2.0",
"released": "2026-06-19",
"interval": 3
},
{
"version": "v0.3.0",
"released": "2026-06-27",
"interval": 8
},
{
"version": "v0.4.0",
"released": "2026-07-03",
"interval": 6
},
{
"version": "v0.5.0",
"released": "2026-07-10",
"interval": 7
},
{
"version": "v0.5.1",
"released": "2026-07-10",
"interval": 0
},
{
"version": "v0.6.0",
"released": "2026-07-21",
"interval": 11
},
{
"version": "v0.7.0",
"released": "2026-07-27",
"interval": 6
}
]Tanggal rilis tersebut diambil dari halaman rilis milik project dan dibaca pada 3 August 2026. Sebanyak 7 rilis bertag diterbitkan antara 2026-06-19 dan 2026-07-27, sedangkan jeda terpanjang antara dua rilis adalah 11 hari. v0.5.1 dirilis pada hari yang sama dengan rilis sebelumnya. Rilis pertama, 0.1.1 pada 16 June 2026, tidak disertakan dalam grafik karena tidak ada tag sebelumnya yang dapat digunakan sebagai titik pengukuran.
Dua rilis tersebut mengubah command yang sudah didokumentasikan dalam panduan. v0.7.0 menghapus omni server start dan menggantinya dengan omni server --background. v0.6.0 mengganti nama extra omnigent[memory] menjadi omnigent[hindsight], sehingga baris instalasi yang disalin dari tulisan bulan June gagal pada build bulan July. Inilah alasan untuk mencantumkan --version dalam command instalasi Anda dan menggunakan tag dalam git clone, bukan sekadar pilihan gaya penulisan.
Hal yang Belum Saya Percayakan Kepadanya
Per Agustus 2026, repositori ini memiliki sekitar 8.1k stars, 1.2k forks, dan sekitar 350 issue terbuka, sementara rilis publik pertamanya baru berusia tujuh minggu. Stars mengukur minat, bukan kematangan. Proyek ini menyebut dirinya alpha, dan riwayat rilis di atas menunjukkan bahwa istilah tersebut memang berarti alpha.
- Saya tidak akan menjalankannya pada host yang menyimpan kredensial produksi, karena sandbox tidak mencakup server MCP atau supervisor.
- Saya tidak akan membiarkan suatu run berjalan tanpa pengawasan tanpa kebijakan
cost_budget, karena tiga vendor dapat menagih secara paralel dan tidak ada mekanisme lain yang menghentikannya. - Saya tidak akan mengekspos server pada alamat IP publik tanpa mengatur
OMNIGENT_AUTH_ENABLEDdan menempatkan TLS di depannya. - Saya belum akan menganggap YAML agent stabil di antara versi minor. Karena itu, pin versinya dan baca catatan rilis sebelum melakukan upgrade.
Ada satu hal lagi yang perlu Anda ketahui agar tidak terkejut: v0.6.0 menambahkan telemetri penggunaan yang dianonimkan, dan proyek ini mendokumentasikannya pada halaman telemetri khusus. Baca halaman tersebut dan ambil keputusan secara sadar jika mesin ini menangani pekerjaan klien.
Hal yang benar-benar dikuasai Omnigent saat ini adalah fungsi yang menjadi tujuan pembuatannya. Anda memiliki tiga atau empat CLI agent, sudah membayar semuanya, dan ingin salah satunya menulis sementara yang lain melakukan review. Skenario itu sudah dapat digunakan sekarang, pada satu mesin, dengan sandboxing yang benar-benar berjalan di Linux. Anggap semua kemampuan di luar itu masih menjanjikan dan belum selesai.
FAQ
Apakah Omnigent merupakan agent, atau sesuatu yang menjalankan agent?
Omnigent menjalankan agent. Omnigent adalah meta-harness: alat ini memulai CLI vendor yang sudah Anda instal, seperti Claude Code, Codex, atau OpenCode, memberikan tugas kepada masing-masing CLI, lalu mengawasi hasilnya dalam satu sesi. Omnigent tidak membawa model sendiri. Karena itu, Omnigent berbeda dari framework, yang mengharuskan Anda menulis Python terhadap sebuah library sehingga program Anda sendiri menjadi agent.
Apakah Claude Code dan Codex harus sudah terinstal sebelum Omnigent berguna?
Anda memerlukan setidaknya satu CLI vendor yang sudah terinstal dan login, karena Omnigent mengendalikan program tersebut, bukan menggantikannya. Untuk contoh Polly yang disertakan, Anda memerlukan dua CLI atau lebih dari vendor yang berbeda. Aturan Polly menetapkan bahwa review selalu dilakukan oleh vendor yang berbeda dari implementer. Jadi, jika hanya ada satu CLI, tidak ada vendor kedua untuk menerima diff.
Bagaimana cara menginstal versi Omnigent tertentu, bukan versi terbaru?
Teruskan --version melalui skrip instalasi dengan sh -s --, seperti pada sh -s -- --version 0.7.0. Tanpa -s --, flag tersebut dikonsumsi oleh sh itu sendiri sehingga skrip menginstal release terbaru. Jika uv sudah tersedia, uv tool install --force --python 3.12 "omnigent==0.7.0" melakukan hal yang sama. Tag git-nya adalah v0.7.0, sedangkan string versi PyPI-nya adalah 0.7.0.
Apakah sandbox Omnibox cukup untuk menjalankan agent tanpa pengawasan?
Sandbox tersebut kuat untuk hal-hal yang dicakupnya dan menjelaskan dengan jelas hal-hal yang tidak dicakupnya. Di Linux, sandbox ini menggunakan bubblewrap dan seccomp. Dengan demikian, kernel menerapkan batasan file dan jaringan, dan agent tidak dapat menonaktifkannya. Dokumentasi menyatakan bahwa sandbox ini berlaku untuk pemanggilan tool sys_os_* dan terminal, tetapi tidak mencakup server MCP atau proses supervisor Omnigent. Karena itu, server MCP berjalan dengan permission normal Anda. Inilah sebabnya virtual machine sekali pakai untuk setiap agent tetap memberikan isolasi yang lebih kuat untuk pekerjaan tanpa pengawasan.
Berapa banyak memori yang diperlukan server Omnigent pada VPS?
Catatan deployment proyek tersebut menyebutkan working set server sekitar 512 MB hingga 1 GB, dan konfigurasi Fly.io menetapkan 1 GB. Jumlah ini mencakup supervisor dan antarmuka web yang hanya berjalan pada port 6767. Setiap sub-agent merupakan proses terpisah dengan working copy dan klien modelnya sendiri. Eksekusi bergaya Polly juga menggunakan git worktree paralel. Karena itu, tentukan kapasitas RAM dan disk berdasarkan jumlah agent yang ingin Anda jalankan secara bersamaan, bukan berdasarkan servernya.