1 poin oleh GN⁺ 4 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • Davit adalah 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 dengan daemon container open-source Apple melalui XPC, menggunakan jalur yang sama dengan CLI, tanpa Electron, webview, atau agen latar belakang buatan sendiri
  • Menangani mulai/berhenti container, streaming log, akses terminal, penjelajahan file, build Dockerfile, hingga impor Compose dalam satu aplikasi
  • Disediakan sebagai aplikasi open-source gratis 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, menggunakan VM ringan per container, dan saat tidak ada container yang berjalan, layanan latar belakang platform berada dalam keadaan idle sekitar 25MB

Tujuan dan lingkungan menjalankan Davit

  • Davit adalah aplikasi macOS yang sepenuhnya native untuk platform container Apple
  • Menjalankan container Linux di Apple silicon, dan tidak membutuhkan Docker Desktop
  • Open-source gratis dan 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 rilis atau melalui Homebrew
    • brew install wouterdebie/tap/davit

Berkomunikasi langsung dengan daemon container Apple

  • Davit berkomunikasi langsung melalui XPC dengan daemon container open-source Apple
  • Jalur ini adalah jalur komunikasi yang sama dengan yang digunakan CLI container
  • Tidak menggunakan Electron, webview, atau agen latar belakang sendiri

Fitur pengelolaan container

  • Dashboard menampilkan layanan, penggunaan disk, dan CPU real-time dari semua container yang sedang berjalan
  • Di daftar container, status tiap baris bisa diperiksa dan langsung dioperasikan
    • Mulai, berhenti, restart, hapus
    • CPU real-time
    • Memori
    • IP
  • Layar per container juga menyediakan fitur untuk memahami status berjalan
    • Log streaming dengan mode follow dan boot
    • Grafik status real-time
    • Pemeriksaan konfigurasi mentah
  • Untuk container yang sedang berjalan, terminal bisa langsung dibuka melalui API native
    • Shell interaktif bisa dibuka di Terminal atau iTerm
    • Tidak membutuhkan CLI

Penyuntingan container immutable dan akses file

  • Karena container bersifat immutable, Davit memungkinkan pembuatan 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, variabel lingkungan, mount, dan resource
  • Filesystem container yang sedang berjalan dapat dijelajahi di dalam aplikasi
    • Berpindah folder
    • Mengunduh file ke Mac
    • Mengunggah file
    • Menghapus file
  • Operasi file diproses melalui API native dan tidak membutuhkan perintah docker cp

Impor Compose dan build Dockerfile

  • Davit membuka docker-compose.yml dan terlebih dahulu menampilkan resource yang akan dibuat
    • Layanan dalam urutan dependensi
    • Volume
    • Network
    • Perintah CLI ekuivalen per layanan
    • Peringatan untuk item yang tidak didukung
  • Karena tidak ada compose native di platform Apple, Davit mengorkestrasi stack secara langsung
  • Impor Compose ditujukan untuk subset yang didukung
    • Didukung: image, ports, environment, named/bind volumes, networks, resource limits, command, user, working_dir
    • Contoh target peringatan: restart:, healthcheck:, build:
  • Build Dockerfile tersedia dari Images → Build Image
    • Pilih folder konteks dan Dockerfile
    • Atur tag dan build args
    • Davit menjalankan langsung builder berbasis BuildKit milik Apple, dan memulainya jika diperlukan
  • Saat ini juga ada batasan platform
    • Dockerfile yang melebihi 16KiB akan ditolak
    • Ini terkait dengan bug apple/container upstream
    • Konteks build tidak boleh berada di bawah /tmp

Image, volume, network, registry

  • Davit mendukung pekerjaan terkait image
    • Pull sambil melihat progres
    • Menjalankan container dari image
    • Memberi tag
    • Prune
  • Operasi volume dan network juga disediakan
    • Membuat volume dengan ukuran tertentu
    • Membuat subnet kustom
    • Memeriksa item yang sedang digunakan sebelum penghapusan
  • Login registry ditangani di Settings → Registries
    • Docker Hub
    • ghcr.io
    • quay.io
    • Registry OCI apa pun
  • Kredensial diverifikasi ke registry sebelum disimpan
  • Kredensial yang sudah diverifikasi disimpan di macOS login keychain dan dibagikan dengan CLI container
  • Docker Hub mengharuskan penggunaan token akses, bukan kata sandi

Pengaturan platform dan instalasi otomatis

  • Davit memungkinkan pengaturan platform diedit di dalam aplikasi
    • CPU/memori default untuk container baru
    • Registry
    • DNS
    • Resource builder
  • Pengaturan diverifikasi oleh loader konfigurasi platform itu sendiri dan disimpan sebagai TOML override yang bersih
  • Jika platform container Apple belum terinstal, Davit mengunduh installer bertanda tangan dari Apple, memverifikasinya, lalu menginstalnya ke Library pengguna
  • Proses instalasi tidak membutuhkan hak administrator
  • Jika diperlukan, CLI container juga bisa ditambahkan ke shell

Implementasi aplikasi dan alur mulai menggunakan

  • Davit seluruhnya diimplementasikan dengan SwiftUI
  • Menyediakan aksi cepat di menu bar
  • Ikon Dock hanya dapat ditampilkan saat pengguna menginginkannya
  • Tidak menjalankan browser untuk rendering grafik real-time
  • Contoh alur mulai adalah sebagai berikut
    • Instal dari Releases atau melalui Homebrew
    • Saat pertama dijalankan, jika platform belum ada, Davit akan menginstalnya
    • Pull nginxdemos/hello dari Images → Pull Image
    • Jalankan dari image atau gunakan Containers → Run Container
    • Petakan host 8088 ke container 80
    • Di baris Ports container, tekan Open in Browser atau akses localhost:8088
    • Pada container yang sedang berjalan, jelajahi CPU, memori, disk, log, file, terminal, dan fitur Edit & Recreate

Perbedaan dengan Docker Desktop dan OrbStack

  • Davit menggunakan engine Apple
    • Setiap container berjalan di VM ringan sendiri berbasis Apple Virtualization framework
    • Memiliki alamat IP per container
    • Dioptimalkan untuk Apple silicon
  • Menggunakan image OCI
    • Bisa pull dari Docker Hub, ghcr.io, quay.io, atau registry apa pun
    • Image privat juga bisa digunakan melalui login registry
  • Menautkan library klien Apple dan berkomunikasi langsung melalui 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 open-source gratis di atas platform container Apple
    • Saat tidak ada container, Davit tidak memiliki item yang menetap, menggunakan IP per container dan bridge network, serta isolasi antar-container lebih kuat
    • OrbStack lebih unggul dalam kompatibilitas drop-in CLI/API docker dan dukungan tool yang lebih luas
    • Keduanya menjalankan image OCI standar

Memori, DNS, keamanan

  • Struktur memorinya tidak menggunakan VM Linux multi-GiB yang selalu aktif
  • Docker Desktop mempertahankan satu VM besar terlepas dari apakah container berjalan atau tidak, 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 keadaan idle sekitar 25MB
  • Davit sendiri adalah aplikasi SwiftUI native, bukan Electron, dan penggunaan memorinya sebagian besar berupa memori framework macOS bersama
  • Untuk mengakses dari Mac dengan nama container, domain DNS lokal platform dapat digunakan
    • Jalankan sudo container system dns create test sekali atau gunakan domain sendiri
    • Tetapkan sebagai domain default di Settings → Platform → DNS
    • Container web akan merespons sebagai web.test dari Mac
  • Semua container memiliki IP sendiri, dan IP ditampilkan di bagian Network
  • Dengan menjalankan Avahi di dalam guest, alias mDNS .local dapat disiarkan
  • Setiap rilis ditandatangani dan dinotariskan dengan Apple Developer ID sehingga terbuka tanpa peringatan Gatekeeper
  • Aplikasi ini open-source dengan lisensi MIT, dan bisa dibaca atau dibangun sendiri
  • Davit hanya berkomunikasi dengan daemon container lokal dan pemeriksaan pembaruan GitHub

1 komentar

 
GN⁺ 4 jam lalu
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

    • Itu bisa dilakukan secara persis dengan coderunner
      https://GitHub.com/instavm/coderunner
    • Bukan mesin virtual, melainkan memakai sandbox dan pengguna terpisah, tetapi sandvault cocok untuk kebutuhan ini dan juga menangani instalasi otomatis
      Demi transparansi, aku pernah mengirim beberapa PR ke sini
      https://github.com/webcoyote/sandvault
    • “Power move di era AI: tidak melakukan apa-apa” sebenarnya sudah jadi strategiku bahkan sebelum AI
      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 juga pernah membuat sesuatu yang mirip sebagai frontend browser sederhana
      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
    • Aku juga pernah memikirkan ini
      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

    • Apakah bisa dibilang semua proyek ini setara dalam hal kualitas tingkat atas? Aku tidak yakin bisa bilang begitu
      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
    • Di iOS ceritanya berbeda. Untuk masuk ke App Store, kamu harus membayar biaya keanggotaan tahunan, atau membangun ulang dan memasang ulang build akun pribadi kira-kira setiap 30 hari
  • 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

    • Frasa AI-Maxing di situs webnya agak terlalu kentara. Tapi itu bukan berarti aplikasinya tidak hebat
    • Saran yang bagus. Akan segera saya tambahkan
    • Tutorial dengan contoh yang sedikit lebih realistis sepertinya akan sangat membantu di sini
      nginx:latest memang menunjukkan bahwa plumbing-nya bekerja, tetapi kurang memperlihatkan di mana Apple Containers terasa berbeda dibanding Docker Desktop atau OrbStack
      Contoh 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

    • Oh, halo. Barusan saya melihat yang membandingkannya dengan Orchard, itu saya
      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

    • Sepertinya container native macOS menjalankan mesin virtual Linux terpisah untuk setiap container
      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
    • Sepertinya tim OrbStack akan segera mendukung container native macOS, lalu menambahkan fitur pengelolaan mereka di atasnya
  • 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

    • Saya juga kurang paham. Apakah ini berarti saya bisa memakai ini sebagai pengganti Docker Desktop dan menjalankan container docker secara “native” di Mac saya? Atau ini sesuatu yang sepenuhnya terpisah dari docker?
    • Ini berfokus pada build, dengan menjalankan buildkitd atau dockerd di dalam container Apple containerization
      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