1 पॉइंट द्वारा GN⁺ 4 시간 전 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Davit Apple silicon Mac पर Apple के container platform के साथ Linux containers चलाने और मैनेज करने के लिए एक native macOS app है, और इसे Docker Desktop के बिना इस्तेमाल किया जा सकता है
  • यह Apple के open source container daemon से XPC के जरिए सीधे communicate करता है, CLI वाला वही path इस्तेमाल करता है, और इसमें Electron, webview, या अपना background agent नहीं है
  • Container start/stop, log streaming, terminal access, file browsing, Dockerfile build, और Compose import तक सब कुछ एक ही app में किया जा सकता है
  • यह एक मुफ्त open source MIT license app के रूप में उपलब्ध है, Apple Developer ID से signed और notarized है, और इसके लिए macOS 15 या उससे ऊपर वाला Apple silicon Mac चाहिए
  • Docker Desktop के विपरीत, यह per-container lightweight VM इस्तेमाल करता है, और जब कोई running container नहीं होता तो platform background service लगभग 25MB idle state में रहती है

Davit का उद्देश्य और रनटाइम environment

  • Davit Apple के container platform के लिए पूरी तरह native macOS app है
  • यह Apple silicon पर Linux containers चलाता है, और Docker Desktop की जरूरत नहीं है
  • यह मुफ्त open source है और MIT license के तहत उपलब्ध है
  • App Apple Developer ID से signed और notarized है
  • Requirement है कि Apple silicon Mac पर macOS 15 या उससे ऊपर चल रहा हो
  • Install releases से या Homebrew के जरिए किया जा सकता है
    • brew install wouterdebie/tap/davit

Apple container daemon से direct communication

  • Davit Apple के open source container daemon से XPC के जरिए सीधे communicate करता है
  • यही communication path container CLI भी इस्तेमाल करती है
  • यह Electron, webview, या अपना background agent इस्तेमाल नहीं करता

Container management features

  • Dashboard सभी running containers की services, disk usage, और real-time CPU दिखाता है
  • Container list में हर row से status देखा और तुरंत action लिया जा सकता है
    • start, stop, restart, delete
    • real-time CPU
    • memory
    • IP
  • प्रति-container screen running state समझने के लिए extra features भी देती है
    • follow और boot mode के साथ streaming logs
    • real-time status charts
    • raw configuration inspection
  • Running containers के लिए native API से सीधे terminal खोला जा सकता है
    • Terminal या iTerm में interactive shell खोली जा सकती है
    • CLI की जरूरत नहीं है

Immutable containers की editing और file access

  • क्योंकि containers immutable होते हैं, Davit existing configuration के आधार पर नया container prefill करके उसे फिर से create करने देता है
  • नए container configuration में image के entrypoint और env को छोड़कर पुरानी settings reflect होती हैं
  • यह ports, environment variables, mounts, और resources जल्दी बदलने वाले workflow के लिए optimized है
  • App के अंदर running container का filesystem browse किया जा सकता है
    • folders में जाना
    • files को Mac पर download करना
    • files upload करना
    • files delete करना
  • File operations native API से होती हैं, इसलिए docker cp command की जरूरत नहीं पड़ती

Compose import और Dockerfile build

  • Davit docker-compose.yml खोलकर बनने वाले resources पहले दिखाता है
    • dependency order में services
    • volumes
    • networks
    • हर service के लिए equivalent CLI command
    • unsupported items के लिए warnings
  • Apple platform में native compose नहीं है, इसलिए Davit खुद stack को orchestrate करता है
  • Compose import supported subset पर आधारित है
    • support: image, ports, environment, named/bind volumes, networks, resource limits, command, user, working_dir
    • warning examples: restart:, healthcheck:, build:
  • Dockerfile build Images → Build Image में किया जा सकता है
    • context folder और Dockerfile चुना जाता है
    • tag और build args set किए जाते हैं
    • Davit Apple के BuildKit-based builder को सीधे चलाता है, और जरूरत हो तो उसे start भी करता है
  • अभी platform की कुछ सीमाएँ भी हैं
    • 16KiB से बड़ी Dockerfile reject कर दी जाती है
    • यह upstream apple/container bug से जुड़ा है
    • build context /tmp के अंदर नहीं हो सकता

Images, volumes, networks, registries

  • Davit image-related operations को support करता है
    • progress देखते हुए pull
    • image से container run करना
    • tag करना
    • prune
  • Volume और network operations भी मिलती हैं
    • size-specified volume बनाना
    • custom subnet बनाना
    • delete करने से पहले in-use items देखना
  • Registry login Settings → Registries में handle किया जाता है
    • Docker Hub
    • ghcr.io
    • quay.io
    • कोई भी OCI registry
  • Credentials को save करने से पहले registry पर verify किया जाता है
  • Verified credentials macOS login keychain में store होते हैं और container CLI के साथ share किए जाते हैं
  • Docker Hub में password की जगह access token चाहिए

Platform settings और automatic install

  • Davit app के अंदर platform settings edit करने देता है
    • नए containers के लिए default CPU/memory
    • registries
    • DNS
    • builder resources
  • Settings platform के अपने configuration loader से validate होती हैं और clean TOML override के रूप में save की जाती हैं
  • अगर Apple container platform install नहीं है, तो Davit Apple का signed installer download और verify करके उसे user Library में install करता है
  • Install process में admin privileges की जरूरत नहीं होती
  • जरूरत पड़ने पर container CLI को shell में जोड़ा भी जा सकता है

App implementation और getting started flow

  • Davit पूरी तरह SwiftUI में implement किया गया है
  • यह menu bar quick actions देता है
  • Dock icon केवल तब दिखाया जा सकता है जब user चाहे
  • Real-time charts render करने के लिए browser launch नहीं किया जाता
  • Example getting started flow इस तरह है
    • Releases से install करें या Homebrew से install करें
    • पहली बार launch पर अगर platform नहीं है, तो Davit उसे install कर देगा
    • Images → Pull Image से nginxdemos/hello pull करें
    • image से run करें या Containers → Run Container इस्तेमाल करें
    • host 8088 को container 80 से map करें
    • container की Ports row में Open in Browser दबाएँ या localhost:8088 खोलें
    • running container में CPU, memory, disk, logs, files, terminal, और Edit & Recreate feature देखें

Docker Desktop और OrbStack से अंतर

  • Davit Apple का engine इस्तेमाल करता है
    • हर container Apple Virtualization framework पर आधारित अपने lightweight VM में चलता है
    • हर container का अपना IP address होता है
    • Apple silicon के लिए optimized है
  • यह OCI images इस्तेमाल करता है
    • Docker Hub, ghcr.io, quay.io, या किसी भी registry से pull किया जा सकता है
    • Private images भी registry login के जरिए इस्तेमाल की जा सकती हैं
  • यह Apple की client libraries link करता है और XPC से सीधे communicate करता है
    • socket shim नहीं
    • कोई license agreement नहीं
    • कोई account नहीं
  • App bundle सिर्फ 17MB है
    • Electron नहीं
    • bundled VM image नहीं
    • अपना background service नहीं
  • OrbStack के साथ इसका approach अलग है
    • OrbStack अपना Docker-compatible virtualization layer वाला commercial app है
    • Davit Apple container platform के ऊपर बना मुफ्त open source UI है
    • Davit में container न होने पर कोई resident component नहीं रहता, यह per-container IP और bridge network इस्तेमाल करता है, और containers के बीच isolation ज्यादा मजबूत है
    • OrbStack drop-in docker CLI/API compatibility और broader tool support में बेहतर है
    • दोनों standard OCI images चलाते हैं

Memory, DNS, और safety

  • इसकी memory architecture हमेशा चालू रहने वाले multi-GiB Linux VM पर निर्भर नहीं करती
  • Docker Desktop container चल रहा हो या नहीं, एक बड़ा VM बनाए रखता है, जबकि Apple platform हर container के लिए lightweight VM boot करता है और container रुकने पर उसे बंद कर देता है
  • जब कोई running container नहीं होता, तो platform background service लगभग 25MB पर idle रहती है
  • Davit खुद Electron नहीं बल्कि native SwiftUI app है, और इसकी memory usage का बड़ा हिस्सा shared macOS framework memory होती है
  • Mac से container name के जरिए access के लिए platform का local DNS domain इस्तेमाल किया जा सकता है
    • sudo container system dns create test एक बार चलाएँ या अपना custom domain इस्तेमाल करें
    • Settings → Platform → DNS में उसे default domain के रूप में set करें
    • web container फिर Mac से web.test पर respond करेगा
  • हर container का अपना IP होता है, और IP Network section में दिखता है
  • अगर guest के अंदर Avahi चलाया जाए, तो .local mDNS alias broadcast किया जा सकता है
  • हर release Apple Developer ID से signed और notarized होती है, इसलिए Gatekeeper warning के बिना खुलती है
  • App open source MIT license के तहत है, इसलिए इसे सीधे पढ़ा या build किया जा सकता है
  • Davit केवल local container daemon और GitHub update checks के लिए communicate करता है

1 टिप्पणियां

 
GN⁺ 4 시간 전
Hacker News की राय
  • AI के दौर में मेरी सबसे अच्छी रणनीति है कुछ भी न करना
    मैंने भी मिलता-जुलता आइडिया सोचा था और लगा था कि vibe coding से बना सकता हूं, लेकिन लगा कि कोई और ज़्यादा दिलचस्पी लेकर पहले बना देगा, और सच में ऐसा ही हुआ
    ऐप अच्छा लग रहा है और इसे आज़माने का इंतज़ार है
    एक मुफ्त आइडिया के तौर पर, मैं एजेंट को वर्चुअल मशीन के अंदर बंद रखना चाहूंगा, और वर्चुअल मशीन के बाहर से harness के जरिए निर्देश भेजकर अंदर install किए गए एजेंटों को नियंत्रित करना चाहूंगा। आदर्श रूप से host पर Codex/Claude जैसी चीज़ install नहीं होनी चाहिए
    इससे भी बेहतर दिशा यह होगी कि वर्चुअल मशीन के अंदर कई user accounts बनाए जाएं और हर user के लिए file system और network policies सीमित की जाएं। तब development agent, QA agent वगैरह के पास अपने-अपने अलग task views होंगे, और यह आगे की automation के लिए एक मजबूत base layer बन सकता है
    जाहिर है, DB, queue, external volume जैसे कई resources को वर्चुअल मशीन से “जोड़कर” एजेंट को permission-based तरीके से इस्तेमाल करने देना चाहिए

    • यह coderunner से बिल्कुल संभव है
      https://GitHub.com/instavm/coderunner
    • वर्चुअल मशीन की जगह sandbox और अलग user इस्तेमाल करने वाला तरीका है, लेकिन sandvault इस काम के लिए अच्छा है और auto-install भी कर देता है
      transparency के लिए बता दूं कि मैंने इसमें कुछ PR भेजे हैं
      https://github.com/webcoyote/sandvault
    • “AI युग का power move: कुछ भी न करना” AI से पहले भी मेरी रणनीति थी
      करीब late 20s या early 30s से मैंने अपने खाली समय में development लगभग पूरी तरह बंद कर दिया, क्योंकि coding से मिलने वाला मज़ा ही खत्म हो गया था। सच कहूं तो मुझे पहले भी यह इतना पसंद नहीं था; बस मैं यह तय करने में बहुत खराब था कि किसी चीज़ पर समय लगाना वाकई लायक है या नहीं
      जब भी कोई ऐसा program या script याद आता जिसे होना अच्छा होता, तो ज्यादातर मामलों में xkcd वाली table की तरह—जहां प्रति सप्ताह कुछ मिनट बचाने के लिए program बनाने का payback time निकाला जाता है—“मेहनत के मुकाबले reward नहीं बैठता था।” या फिर वह जरूरी तो नहीं, लेकिन होता तो interesting या fun होता; पर असल में बनाने में बहुत घंटे लगते, इसलिए बिल्कुल worth नहीं था
      अगर कोई मेरी चाही हुई चीज़ बनाकर public कर दे तो अच्छा, नहीं तो जो है सो है
      LLM ने जो बड़ा बदलाव किया है, वह यह है कि अब छोटे scripts जैसी चीजें कुछ मिनटों में, कुछ cents से लेकर कुछ dollars तक में निकल सकती हैं। मैं अपने लंबे समय से पड़े बेहद niche ideas फिर से निकाल रहा हूं
      पहले किसी अपरिचित API और documentation को खंगालने में कई weekends लग जाते; अब वही काम 30 मिनट में हो सकता है, या कम से कम यह कुछ मिनटों में तय हो सकता है कि यह काम होगा ही नहीं या इतना झंझट वाला है कि हमेशा के लिए छोड़ देना चाहिए—घंटों लगाने के बजाय
    • मैंने कुछ मिलता-जुलता एक साधारण browser frontend के रूप में जल्दी-जल्दी बना लिया था
      मुझे medium-large open models चलाना पसंद है, लेकिन उन models पर यह भरोसा नहीं कर सकता कि वे बेकाबू नहीं होंगे, इसलिए इसे बनाया, और जल्द ही share करने वाला हूं
    • यह विचार मेरे मन में भी आया था
      शायद यह इतना simple है कि वर्चुअल मशीन में Claude install करें और SSH terminal से connect हो जाएं। अगर GUI चाहिए तो VSCode का Remote SSH extension इस्तेमाल करने पर file browser UI जैसी चीज़ भी मिल सकती है
      शायद VSCode का Claude या दूसरे chat extensions भी वर्चुअल मशीन के अंदर install किए जा सकते हैं
  • इस project से भी ज्यादा जो बात नजर आई, वह यह है कि बहुत से लोग खासकर पिछले लगभग एक साल से जिस phenomenon का अंदाजा लगा रहे थे, वह अब साफ तौर पर तेज हो गया है। अब लोग उसी idea का अपना version पहले से कहीं ज्यादा तेजी से बना सकते हैं
    करीब 10 मिनट खोजने पर ऐसे कई मिलते-जुलते Swift projects मिले, और ज्यादातर सिर्फ कुछ हफ्तों या कुछ महीनों पुराने हैं
    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
    GitHub stars कम वाले, केवल command-line वाले, और Swift में न बने हुए projects को मिलाएं तो और भी ज्यादा थे, लेकिन मुद्दा यही है
    लोग धीरे-धीरे अपनी पसंद के software का अपना version खुद बनाने में सक्षम होते जाएंगे। ऐसा होने पर दूसरों द्वारा बनाए software की value घटेगी। hyper-personalized software का युग आ रहा है

    • क्या हम कह सकते हैं कि ये सभी projects समान रूप से top-tier quality के हैं? मैं पक्का नहीं कह सकता
      पहले website की polish या कुछ सतही चीज़ों से अंदाजा लगाया जा सकता था कि इसमें कितना effort लगा है। अब वे हिस्से LLM से आसानी से हो जाते हैं
      इसी तरह, धूल बैठने के बाद Kickstarter के सबसे बड़े impacts में से एक यह रहा कि 3-minute pitch videos बहुत aggressive तरीके से evolve और refine हुए
      यह असल में गहराई से सोचे गए implementation, roadmap और सच्ची momentum में बदलता है या नहीं, पता नहीं
    • iOS पर मामला अलग है। App Store पर डालने के लिए annual membership fee देनी पड़ती है, या personal account build को हर करीब 30 दिन में फिर से build और reinstall करना पड़ता है
  • सच में एक मजबूत ऐप जैसा दिखता है। यह 17MB का है और यह बात पसंद आई कि यह ContainerAPIClient लाइब्रेरी को सीधे इस्तेमाल करता है
    3 दिनों में 28 commits, Swift की 5,015 lines, और हर commit में “Co-Authored-By: Claude Fable 5” लगा हुआ है
    यह भी अच्छा है कि यह signed और notarized है। इंस्टॉल करके देखा तो पहली बार चलने पर इसने ज़रूरी container platform components डाउनलोड किए
    एक सुझाव है: साइट पर एक getting started tutorial जोड़ें, जिसमें आज़माने के लिए कोई image recommend हो, और screenshots या बिना आवाज़ वाले video से दिखाया जाए कि उस image को कैसे चलाना है और उससे क्या किया जा सकता है
    image creation dialog “nginx:latest” सुझाता है, लेकिन शुरुआती demo के लिए वह बहुत अच्छा नहीं है

    • वेबसाइट की AI-Maxing copy कुछ हद तक साफ़ झलक रही थी। इसका मतलब यह नहीं कि ऐप शानदार नहीं है
    • अच्छा सुझाव है। जल्द ही जोड़ूंगा
    • थोड़ा ज्यादा realistic example वाला tutorial यहाँ बहुत मदद करेगा
      nginx:latest यह तो दिखाता है कि plumbing काम कर रही है, लेकिन यह अच्छी तरह नहीं दिखाता कि Apple Containers, Docker Desktop या OrbStack से कहाँ अलग महसूस होता है
      किसी छोटे app में volumes, port mapping और simple rebuild loop जोड़कर दिखाने वाला example हो तो value बहुत आसानी से समझ आएगी
  • हा! लगता है हमने भी वही चीज़ बना ली: https://container-ui.fly.dev/
    अब सोच रहा हूँ कि इतने tokens जलाने की ज़रूरत नहीं थी

    • ओह नमस्ते। अभी देखा कि Orchard से comparison वाला content है, वह मैं ही हूँ
      साफ़-सुथरा दिखता है। आखिर में हम सब वही चीज़ बना रहे हैं ><
  • OrbStack को करीब 2 साल से पसंद करके इस्तेमाल कर रहा हूँ
    integration अच्छी है, तेज़ है और docker command compatible है, इसलिए मेरे लिए इसकी कीमत देना वाजिब था
    फिर भी इसे भी एक बार आज़माऊँगा

    • macOS native containers शायद हर container के लिए अलग Linux virtual machine चलाते हैं
      OrbStack की ताकत यह है कि सभी containers एक ही Linux virtual machine के अंदर चलते हैं, और virtual machine boundary के दोनों तरफ बहुत सारे optimizations करता है। इसमें macOS side पर disk space काफी बचाने के लिए sparse image files का इस्तेमाल भी शामिल है
      macOS पर 4–5 से ज्यादा containers चलाते ही OrbStack की performance और resource usage savings जल्दी बढ़ने लगती हैं
    • लगता है OrbStack team जल्द ही macOS native containers support करेगी और उसके ऊपर अपनी management features जोड़ देगी
  • सच में अच्छा है। runtime डाउनलोड करना और nginx:latest चलाना बिल्कुल ठीक काम किया
    GitHub पर नीचे scroll करने पर अगर Claude contributor के रूप में दिखे, तो यह अब जैसे संकेत बनता जा रहा है कि ऐप अच्छा होगा। मतलब native feel वाला और Electron नहीं

  • काश Apple, Apple Containers में docker API compatibility जोड़ दे

    • मुझे भी ठीक से नहीं पता। क्या इसे Docker Desktop की जगह इस्तेमाल करके अपने Mac पर docker containers “native” तरीके से चला सकता हूँ? या यह docker से पूरी तरह अलग चीज़ है?
    • यह build पर focused है, और Apple containerization containers के अंदर buildkitd या dockerd चलाने का तरीका है
      port forwarding या host volumes जैसी चीज़ें नहीं हैं। असल में focus Mac पर buildkit चलाने पर है
      हालांकि docker CLI और buildx के साथ पूरी तरह integrate होता है
      https://github.com/cpuguy83/crucible
  • features भी अच्छे हैं, और यह एक छोटा native SwiftUI app है, यह बात भी पसंद आई
    हाल ही में मैंने agentic coding में Apple containers के इस्तेमाल पर एक post [1] लिखा था, और अभी Davit का mention जोड़ने के लिए update किया है। personal projects के लिए घर के दो Macs पर मैं Docker के बजाय Apple containers इस्तेमाल करना कहीं ज्यादा पसंद करता हूँ
    [1] https://open.substack.com/pub/marklwatson/p/running-opencode...

  • OrbStack से तुलना करें तो कैसा है? क्या Apple Containers developer experience में कुछ ऐसा देता है जिसे सच में महसूस किया जा सके? मेरे use case में OrbStack implementation पहले से ही बिजली की तरह तेज़ लगता है

  • कुछ दिन पहले मैंने अपनी बनाई हुई मिलती-जुलती version पोस्ट की थी, लेकिन लगभग कोई response नहीं मिला
    interested लोगों के लिए बता दूँ, यह menu bar app है और containers, machines, registries support करता है
    https://news.ycombinator.com/item?id=48789503
    https://github.com/erdaltoprak/ContainerUtility