Davit - UI macOS Native untuk Apple Containers
(davit.app)- Aplikasi macOS native untuk menjalankan dan mengelola container Linux dengan platform container Apple di Mac Apple silicon, dan bisa digunakan tanpa Docker Desktop
- Berkomunikasi langsung lewat XPC dengan daemon container open-source dari Apple, menggunakan jalur yang sama dengan CLI, tanpa Electron, webview, atau background agent sendiri
- Menangani mulai dari start/stop container, streaming log, akses terminal, penjelajahan file, build Dockerfile, hingga impor Compose dalam satu aplikasi
- Disediakan sebagai aplikasi gratis open-source berlisensi MIT, telah ditandatangani dan dinotariskan dengan Apple Developer ID, serta membutuhkan Mac Apple silicon dengan macOS 15 atau lebih baru
- Berbeda dari Docker Desktop, memakai VM ringan per container; saat tidak ada container yang berjalan, layanan latar belakang platform berada dalam kondisi idle sekitar 25MB
Tujuan dan lingkungan eksekusi Davit
- Davit adalah aplikasi macOS sepenuhnya native untuk platform container Apple
- Menjalankan container Linux di Apple silicon, dan tidak membutuhkan Docker Desktop
- Gratis dan open-source, disediakan dengan lisensi MIT
- Aplikasi telah ditandatangani dan dinotariskan dengan Apple Developer ID
- Persyaratannya adalah Mac Apple silicon yang menjalankan macOS 15 atau lebih baru
- Instalasi bisa dilakukan dari release atau lewat Homebrew
brew install wouterdebie/tap/davit
Berkomunikasi langsung dengan daemon container Apple
- Davit berkomunikasi langsung lewat XPC dengan daemon container open-source dari Apple
- Jalur ini sama dengan jalur komunikasi yang digunakan CLI
container - Tidak menggunakan Electron, webview, atau background agent sendiri
Fitur pengelolaan container
- Dashboard menampilkan layanan, penggunaan disk, dan CPU real-time untuk semua container yang sedang berjalan
- Di daftar container, status dapat dilihat dan dioperasikan langsung dari tiap baris
- Start, stop, restart, hapus
- CPU real-time
- Memori
- IP
- Layar per container menyediakan fitur untuk memahami status eksekusi
- Log streaming dengan mode follow dan boot
- Grafik status real-time
- Pemeriksaan konfigurasi mentah
- Untuk container yang sedang berjalan, terminal bisa dibuka langsung melalui API native
- Dapat membuka shell interaktif di Terminal atau iTerm
- Tidak membutuhkan CLI
Pengeditan container immutable dan akses file
- Karena container bersifat immutable, Davit memungkinkan membuat ulang container baru yang sudah dipraisi berdasarkan konfigurasi lama
- Konfigurasi container baru mencerminkan konfigurasi lama kecuali entrypoint dan env dari image
- Alurnya disesuaikan untuk cepat mengubah port, environment variable, mount, dan resource
- Di dalam aplikasi, filesystem container yang sedang berjalan dapat dijelajahi
- Berpindah folder
- Mengunduh file ke Mac
- Mengunggah file
- Menghapus file
- Operasi file ditangani dengan API native dan tidak membutuhkan perintah
docker cp
Impor Compose dan build Dockerfile
- Davit membuka
docker-compose.ymldan terlebih dahulu menampilkan resource yang akan dibuat- Layanan sesuai urutan dependensi
- Volume
- Network
- Perintah CLI ekuivalen per layanan
- Peringatan untuk item yang tidak didukung
- Karena platform Apple tidak memiliki compose native, Davit mengorkestrasi stack secara langsung
- Impor Compose menargetkan subset yang didukung
- Didukung: image, ports, environment, named/bind volumes, networks, resource limits, command, user, working_dir
- Contoh yang diberi peringatan:
restart:,healthcheck:,build:
- Build Dockerfile dapat dilakukan dari Images → Build Image
- Memilih folder context dan Dockerfile
- Mengatur tag dan build args
- Davit menjalankan langsung builder berbasis BuildKit dari Apple, dan memulainya bila perlu
- Ada juga batasan platform saat ini
- Dockerfile yang melebihi 16KiB akan ditolak
- Ini terkait dengan upstream bug apple/container
- Build context tidak boleh ditempatkan di bawah
/tmp
Image, volume, network, registry
- Davit mendukung operasi terkait image
- Pull dengan tampilan progress
- Menjalankan container dari image
- Memberi tag
- Prune
- Operasi volume dan network juga tersedia
- Membuat volume dengan ukuran tertentu
- Membuat subnet kustom
- Memeriksa item yang sedang dipakai sebelum dihapus
- Login registry ditangani di Settings → Registries
- Docker Hub
- ghcr.io
- quay.io
- Registry OCI apa pun
- Kredensial diverifikasi di registry sebelum disimpan
- Kredensial yang telah diverifikasi disimpan di macOS login keychain dan dibagikan dengan CLI
container - Docker Hub mewajibkan penggunaan access token, bukan kata sandi
Pengaturan platform dan instalasi otomatis
- Davit dapat mengedit pengaturan platform dari dalam aplikasi
- CPU/memori default untuk container baru
- Registry
- DNS
- Resource builder
- Pengaturan diverifikasi oleh loader konfigurasi milik platform sendiri, lalu disimpan sebagai TOML override yang bersih
- Jika platform container Apple belum terpasang, Davit mengunduh dan memverifikasi installer bertanda tangan dari Apple, lalu memasangnya ke Library pengguna
- Proses instalasi tidak membutuhkan hak admin
- Jika perlu, CLI
containerjuga bisa ditambahkan ke shell
Implementasi aplikasi dan alur mulai penggunaan
- Davit sepenuhnya diimplementasikan dengan SwiftUI
- Menyediakan aksi cepat di menu bar
- Ikon Dock dapat ditampilkan hanya saat pengguna menginginkannya
- Tidak membuka browser untuk rendering grafik real-time
- Contoh alur mulai adalah sebagai berikut
- Instal dari Releases atau lewat Homebrew
- Saat pertama dijalankan, jika platform belum ada, Davit akan memasangnya
- Pull
nginxdemos/hellodari Images → Pull Image - Jalankan dari image atau gunakan Containers → Run Container
- Petakan host
8088ke container80 - Tekan Open in Browser di baris Ports container, atau akses
localhost:8088 - Di container yang sedang berjalan, jelajahi CPU, memori, disk, log, file, terminal, serta fitur Edit & Recreate
Perbedaan dengan Docker Desktop dan OrbStack
- Davit menggunakan engine Apple
- Setiap container berjalan di VM ringan tersendiri berbasis Apple Virtualization framework
- Memiliki alamat IP per container
- Dioptimalkan untuk Apple silicon
- Menggunakan image OCI
- Dapat pull dari Docker Hub, ghcr.io, quay.io, atau registry apa pun
- Image privat juga bisa digunakan lewat login registry
- Menautkan library klien Apple dan berkomunikasi langsung lewat XPC
- Tidak ada socket shim
- Tidak ada perjanjian lisensi
- Tidak ada akun
- Bundle aplikasi berukuran 17MB
- Tanpa Electron
- Tanpa image VM yang dibundel
- Tanpa layanan latar belakang sendiri
- Arahnya berbeda dari OrbStack
- OrbStack adalah aplikasi komersial dengan lapisan virtualisasi kompatibel Docker miliknya sendiri
- Davit adalah UI gratis open-source di atas platform container Apple
- Davit tidak memiliki item resident saat tidak ada container, memakai IP per container dan bridge network, serta memiliki isolasi antarkontainer yang lebih kuat
- OrbStack lebih unggul dalam kompatibilitas drop-in CLI/API
dockerdan dukungan alat yang lebih luas - Keduanya menjalankan image OCI standar
Memori, DNS, keamanan
- Struktur memorinya tidak menggunakan VM Linux multi-GiB yang selalu menyala
- Docker Desktop mempertahankan satu VM besar terlepas dari ada tidaknya container yang berjalan, tetapi platform Apple mem-boot VM ringan per container dan mematikannya saat container berhenti
- Saat tidak ada container yang berjalan, layanan latar belakang platform berada dalam kondisi idle sekitar 25MB
- Davit sendiri adalah aplikasi SwiftUI native, bukan Electron, dan penggunaan memorinya sebagian besar adalah memori framework macOS bersama
- Untuk mengakses dari Mac menggunakan nama container, domain DNS lokal platform dapat digunakan
- Jalankan
sudo container system dns create testsekali, atau gunakan domain sendiri - Atur sebagai domain default di Settings → Platform → DNS
- Container
webakan merespons sebagaiweb.testdari Mac
- Jalankan
- Semua container memiliki IP sendiri, dan IP ditampilkan di bagian Network
- Jika menjalankan Avahi di dalam guest, alias mDNS
.localdapat di-broadcast - Setiap release ditandatangani dan dinotariskan dengan Apple Developer ID, sehingga terbuka tanpa peringatan Gatekeeper
- Aplikasi ini open-source berlisensi MIT, dan dapat dibaca atau di-build sendiri
- Davit hanya berkomunikasi dengan daemon container lokal dan pemeriksaan update GitHub
2 komentar
Saya tadinya malas mengelolanya lewat command line, jadi senang sekali ini akhirnya muncul ^^ Belakangan ini saya memang lebih sering memakai Orbstack.
Komentar Hacker News
Strategi terbaik yang kupakai di era AI adalah tidak melakukan apa-apa
Aku sempat terpikir ide serupa dan merasa bisa membuatnya dengan vibe coding, tapi kupikir orang lain akan lebih tertarik dan membuatnya lebih dulu, dan ternyata memang begitu
Aplikasinya terlihat bagus dan aku tidak sabar mencobanya
Sebagai ide gratis, aku ingin mengurung agen di dalam mesin virtual, lalu mengirim instruksi dari luar mesin virtual lewat harness untuk mengendalikan agen-agen yang terpasang di dalamnya. Idealnya, tidak perlu ada Codex/Claude atau yang semacam itu terpasang di host
Arah yang lebih keren adalah membuat beberapa akun pengguna di dalam mesin virtual, lalu membatasi kebijakan sistem file dan jaringan per pengguna. Dengan begitu, agen pengembang, agen QA, dan sebagainya masing-masing punya tampilan kerja yang berbeda, dan ini bisa menjadi lapisan fondasi yang kuat untuk otomatisasi tambahan
Tentu saja, harus bisa juga “memasang” berbagai resource ke mesin virtual seperti DB, queue, dan volume eksternal agar agen bisa memakainya berdasarkan izin
https://GitHub.com/instavm/coderunner
Demi transparansi, aku pernah mengirim beberapa PR ke sini
https://github.com/webcoyote/sandvault
Sejak akhir usia 20-an atau awal 30-an, aku hampir sepenuhnya berhenti mengembangkan sesuatu di waktu luang, karena semua kesenangan yang dulu kudapat dari coding sudah hilang. Sebenarnya dari awal pun aku tidak terlalu menyukainya; aku hanya benar-benar buruk dalam menilai apakah sesuatu layak menghabiskan waktuku atau tidak
Kalaupun terpikir program atau skrip yang enak dimiliki, kebanyakan tetap “tidak sebanding antara usaha dan hasilnya”, seperti tabel xkcd yang menghitung waktu balik modal untuk membuat program demi menghemat beberapa menit per minggu. Atau kadang itu tidak benar-benar dibutuhkan, hanya akan terasa menarik atau menyenangkan kalau ada, tetapi untuk benar-benar membuatnya perlu sangat banyak waktu sehingga sama sekali tidak layak
Kalau ada orang lain yang membuat dan merilis apa yang kuinginkan, bagus; kalau tidak, ya sudahlah
Perubahan besar yang dibawa LLM adalah sekarang kita bisa menghasilkan hal-hal seperti skrip kecil dalam hitungan menit, dengan biaya beberapa sen sampai beberapa dolar. Aku jadi membuka lagi ide-ide yang sangat niche dan sudah lama kusimpan
Hal-hal yang dulu butuh beberapa akhir pekan hanya untuk menelusuri API dan dokumentasi yang asing, sekarang bisa selesai dalam 30 menit, atau setidaknya aku bisa memutuskan dalam hitungan menit, bukan berjam-jam, apakah itu memang tidak mungkin atau terlalu merepotkan sehingga harus ditinggalkan selamanya
Aku suka menjalankan model open source menengah hingga besar, tetapi aku tidak bisa begitu saja percaya bahwa model-model itu tidak akan bertindak liar, jadi aku membuatnya dan akan membagikannya sebentar lagi
Rasanya ini bisa sesederhana memasang Claude di mesin virtual lalu mengaksesnya lewat terminal SSH. Kalau perlu GUI, pakai ekstensi Remote SSH milik VSCode dan kita juga dapat UI seperti file browser
Mungkin saja ekstensi Claude untuk VSCode atau ekstensi chat lain juga bisa dipasang di dalam mesin virtual
Yang lebih menonjol bagiku daripada proyek ini sendiri adalah bahwa fenomena yang sudah bisa diperkirakan banyak orang, terutama selama sekitar setahun terakhir, kini makin cepat terlihat secara nyata. Sekarang orang bisa membuat versi mereka sendiri dari ide yang sama jauh lebih cepat daripada sebelumnya
Aku mencari sekitar 10 menit dan menemukan beberapa proyek Swift serupa, dan kebanyakan baru berumur beberapa minggu atau beberapa bulan
https://github.com/tdeverx/contained-app
https://github.com/nico81/iContainer
https://github.com/wouterdebie/davit
https://github.com/Augani/dory
https://github.com/tofa84/berth
https://github.com/erdaltoprak/ContainerUtility
https://github.com/andrew-waters/orchard
Masih ada lebih banyak lagi kalau memasukkan yang bintangnya di GitHub lebih sedikit, yang khusus command line, atau yang bukan Swift, tetapi intinya begini
Orang akan semakin mampu membuat sendiri versi perangkat lunak yang mereka inginkan. Kalau begitu, nilai perangkat lunak buatan orang lain akan menurun. Era perangkat lunak yang sangat dipersonalisasi sedang datang
Dulu kita bisa mengira-ngira seberapa besar usaha yang masuk ke sesuatu seperti ini dari tingkat kerapian situs web atau beberapa elemen permukaan lainnya. Sekarang bagian-bagian seperti itu mudah diselesaikan dengan LLM
Mirip juga, setelah semuanya mereda, salah satu dampak terbesar yang ditinggalkan Kickstarter adalah video pitch 3 menit yang berkembang dan dipoles secara agresif
Aku tidak tahu apakah itu benar-benar berujung pada implementasi dan roadmap yang dipikirkan matang-matang, serta momentum yang nyata
Terlihat seperti aplikasi yang benar-benar solid. Ukurannya 17MB dan saya suka karena langsung memakai library ContainerAPIClient
Dalam 3 hari ada 28 commit, 5.015 baris Swift, dan semua commit memiliki “Co-Authored-By: Claude Fable 5”
Bagus juga karena sudah ditandatangani dan dinotarisasi. Saat saya pasang, pada peluncuran pertama aplikasi ini mengunduh komponen platform container yang diperlukan
Kalau boleh usul, akan bagus jika situsnya menambahkan tutorial memulai yang merekomendasikan satu image untuk dicoba, lalu menunjukkan cara menjalankan image itu dan apa yang bisa dilakukan dengannya lewat screenshot atau video tanpa suara
Dialog pembuatan image memang menyarankan “nginx:latest”, tetapi itu bukan demo awal yang terlalu bagus
nginx:latestmemang menunjukkan bahwa plumbing-nya bekerja, tetapi kurang memperlihatkan di mana Apple Containers terasa berbeda dibanding Docker Desktop atau OrbStackContoh aplikasi kecil dengan volume, port mapping, dan loop rebuild sederhana akan membuat nilainya jauh lebih mudah terlihat
Ha! Sepertinya kami juga membuat hal yang sama: https://container-ui.fly.dev/
Jadi kepikiran, seharusnya saya tidak membakar token sebanyak itu
Kelihatannya rapi. Pada akhirnya kita semua membuat hal yang sama ya ><
Saya sudah hampir 2 tahun suka memakai OrbStack
Integrasinya bagus, cepat, dan kompatibel dengan perintah docker, jadi bagi saya layak dibayar
Tapi saya tetap akan mencoba ini juga
Kelebihan OrbStack adalah semua container berjalan di dalam satu mesin virtual Linux, dan mereka melakukan banyak optimisasi di kedua sisi batas mesin virtual. Termasuk penggunaan file image sparse yang sangat menghemat ruang disk di sisi macOS
Kalau Anda menjalankan lebih dari 4–5 container di macOS, manfaat OrbStack dalam performa dan penghematan sumber daya akan cepat terasa
Bagus sekali. Mengunduh runtime dan menjalankan nginx:latest bekerja dengan sempurna
Rasanya sekarang kalau scroll ke bawah di GitHub dan melihat Claude tercantum sebagai kontributor, itu seperti sinyal bahwa aplikasinya bakal bagus. Maksudnya terasa native, bukan seperti Electron
Akan bagus kalau Apple menambahkan kompatibilitas API docker ke Apple Containers
Tidak ada port forwarding atau host volume seperti itu. Praktiknya lebih berfokus pada menjalankan buildkit di Mac
Namun, ini terintegrasi penuh dengan docker CLI dan buildx
https://github.com/cpuguy83/crucible
Fiturnya bagus, dan saya juga suka karena ini adalah aplikasi SwiftUI native yang kecil
Baru-baru ini saya menulis artikel [1] tentang memakai Apple container untuk coding agentic, dan barusan saya perbarui untuk menyebut Davit. Untuk proyek pribadi, saya jauh lebih memilih memakai Apple container daripada Docker di dua Mac di rumah
[1] https://open.substack.com/pub/marklwatson/p/running-opencode...
Kalau dibandingkan dengan OrbStack, bagaimana? Apakah Apple Containers memberi sesuatu yang benar-benar terasa dalam developer experience? Menurut tolok ukur pemakaian saya, implementasi OrbStack saja sudah terasa secepat kilat
Beberapa hari lalu saya mengunggah versi serupa yang saya buat, tetapi hampir tidak ada respons
Buat yang tertarik, ini mendukung container, machine, registry sebagai aplikasi menu bar
https://news.ycombinator.com/item?id=48789503
https://github.com/erdaltoprak/ContainerUtility