Sprites - स्टेटफुल सैंडबॉक्स
(fly.io)- Fly.io ने नया ‘Sprites’ पेश किया है, जो मौजूदा एकबारगी सैंडबॉक्स की जगह persistent cloud computer की अवधारणा लाता है
- इसे 1~2 सेकंड के भीतर बनाया जा सकता है, और यह ऑटो idle state transition, checkpoint restore, तथा 100GB durable storage प्रदान करता है
- यह बताता है कि मौजूदा stateless container model AI एजेंटों (जैसे Claude) के लिए अप्रभावी है, और persistent environment की आवश्यकता पर ज़ोर देता है
- एक वास्तविक उदाहरण के रूप में, Claude ने Sprite पर SQLite-आधारित Go app (MDM) बनाया और उसे लंबे समय तक चलाया
- लेख का निष्कर्ष: “सैंडबॉक्स का युग खत्म हो गया है, और disposable computer का युग आ गया है”
Sprites: persistent cloud computer - https://sprites.dev/
- Fly.io का कहना है कि मौजूदा read-only sandbox model पुराना हो चुका है, और उसकी जगह लेने के लिए उसने ‘Sprite’ पेश किया है
sprite createकमांड से 1 सेकंड के भीतर Linux root shell बन जाता है- Sprite में 100GB durable storage होता है, और idle होने पर यह अपने-आप sleep में जाकर बाद में restore हो सकता है
sprite-env checkpoints createसे पूरे सिस्टम का checkpoint तुरंत बनाया जा सकता हैsprite checkpoint restore v1से 1 सेकंड के भीतर restore किया जा सकता है, और Git की तरह system-level version control संभव है
- प्रमुख विशेषताएँ
- सैकड़ों instances आसानी से बनाए जा सकते हैं
- ऑटो billing pause (Idle metering) से लागत कम होती है
- Anycast network connection के ज़रिए HTTPS URL मिलता है
- पूर्ण durability बनाए रखता है, और स्पष्ट रूप से delete करने तक बना रहता है
Claude और stateless containers की सीमाएँ
- आज अधिकांश cloud environment stateless container-केंद्रित संरचना पर आधारित हैं
- डेटा केवल बाहरी DB में स्टोर होता है, जिसका उद्देश्य सरलता और scalability हासिल करना है
- लेकिन Claude जैसे AI agents इस संरचना के लिए उपयुक्त नहीं हैं
- वे container को bypass या उससे बाहर निकलने जैसा व्यवहार दिखाते हैं, और पूरे “computer” तक access चाहते हैं
- “computer” की परिभाषा के रूप में durability और ऐसा environment जो काम के बाद भी गायब न हो प्रस्तुत किया गया है
- मौजूदा sandbox इन दोनों चीज़ों से वंचित हैं
सरलता (Simple Wins)
- persistent environment में development environment को दोबारा बनाना (node_modules आदि) ज़रूरी नहीं होता
- उद्योग इसे हल करने के लिए snapshot तकनीक पर करोड़ों डॉलर निवेश कर रहा है
- ऐसे वास्तविक उदाहरण भी हैं जहाँ infra बनाकर agent को S3, Redis, RDS जैसे बाहरी resources तक पहुँच दी जाती है
- यह sandbox की non-persistent प्रकृति को bypass करने के लिए एक अस्थायी उपाय है
- Sprite इस जटिलता को हटाकर ऐसा environment देता है जहाँ लिखी गई फाइलें वैसी ही बनी रहती हैं
- उदाहरण के तौर पर, Phoenix.new प्रोजेक्ट में Fly Machine-आधारित agent ने app logs को सीधे देखते हुए त्रुटियाँ ठीक कीं
Galaxy Brain Win: development और operations का मेल
- लेखक ने Claude के साथ मिलकर SQLite-आधारित Go app (MDM) को Sprite पर बनाया
- Anycast URL के ज़रिए इसका उपयोग MDM registration URL के रूप में किया गया
- Claude ने APNS certificate setup तक अपने-आप संभाला
- यह app एक महीने से अधिक समय से Sprite पर स्थिर रूप से चल रही है
- इससे “development environment ही production environment है (dev is prod, prod is dev)” की अवधारणा साकार होती है
- लेखक का तर्क है कि अधिकांश apps को बड़े पैमाने के traffic की ज़रूरत नहीं होती, बल्कि व्यक्तिगत रूप से अनुकूलित persistent apps अधिक महत्वपूर्ण हैं
- ऐसी संरचना जहाँ उपयोगकर्ता सीधे features माँग सकें और उन्हें तुरंत लागू किया जा सके
सैंडबॉक्स का अंत और disposable computers का युग
- Fly.io लंबे समय से horizontally scalable micro-VM platform विकसित कर रहा है, लेकिन sandbox model अब अपनी सीमा तक पहुँच चुका है
- Sprite, Fly Machines जैसा है, लेकिन इसमें नई storage stack और orchestration structure है, और Dockerfile की आवश्यकता नहीं
- एक मुख्य प्रश्न उठाया गया है:
“अगर आप किसी agent को चला सकते हैं, तो क्या आप read-only sandbox की बजाय तुरंत बुलाया जा सकने वाला EC2 instance नहीं चाहेंगे?”
- निष्कर्ष: “सैंडबॉक्स का युग खत्म हो गया है, और disposable computer का युग आ गया है।”
1 टिप्पणियां
Hacker News प्रतिक्रियाएँ
शुरुआत में यह मुझे सच में बहुत पसंद आया, लेकिन Fly API के साथ पहले के दूसरे अनुभवों की तरह इस बार भी कुछ टूटा हुआ-सा लगा
अगर https://sprites.dev/api दस्तावेज़ में दिया गया उदाहरण कमांड ज्यों का त्यों चलाएँ, तो
{"error":"name is required"}जैसा जवाब मिलता हैलेकिन Create Sprite docs में दिया गया पूरा request body इस्तेमाल करें, तो यह ठीक से काम करता है
निजी workflow के लिए ऐसी rough edges शायद झेली जा सकती हैं, लेकिन पूरी टीम को प्रभावित करने वाले CI/CD में इसे लेकर हिचकिचाहट होगी
Fly टीम से एक अनुरोध है — दस्तावेज़ में दिए गए उदाहरणों को ज़रूर test automation से verify किया जाए
https://sprites.dev/ वाकई बहुत दिलचस्प है
यह एक साथ मेरी पसंद की दो समस्याएँ हल करता है
इसमें snapshot फीचर भी है, इसलिए execution के बाद पिछली स्थिति में आसानी से लौटा जा सकता है
मैंने इसके बारे में विस्तार से अपने ब्लॉग में लिखा है → simonwillison.net लेख
और यह सुनकर अच्छा लगा कि Simon अपने काम को और monetize करने की कोशिश कर रहे हैं। उन्हें जितना अधिक लाभ मिलेगा, दुनिया उतनी बेहतर लगेगी
दार्शनिक रूप से मुझे Fly पसंद है और मैं शुरुआती दिनों से इसका ग्राहक रहा हूँ
लेकिन CLI से जुड़े कामों में अब भी एक तरह का डर रहता है। अगर इसे हर कुछ हफ्तों में सिर्फ एक बार भी इस्तेमाल करूँ, तो auto-update बहुत बार बीच में आ जाता है और flow टूट जाता है
चिंता है कि Sprite CLI भी वही समस्या दोहराएगा
यह सच में दिलचस्प है!
हमारी कंपनी में हम Claude को SSH से जोड़े गए persistent development server का इस्तेमाल करते हैं, लेकिन git repo या environment गायब हो जाए तो असुविधा होती है
लगता है Sprite से SQLite जैसी चीज़ों में data save करके URL से access होने वाला एक simple app बनाया जा सकता है
अगर यह कुछ समय बाद अपने-आप हट जाने वाली संरचना है, तो simple personal software के लिए यह परफेक्ट लगती है
अगर इसमें Vercel preview environment की तरह Fly account authentication के बाद URL देखने की सुविधा हो, तो और भी अच्छा होगा
यह अच्छा दिखता है, लेकिन Fly के दूसरे प्रोडक्ट stability या completeness के मामले में आदर्श नहीं रहे हैं
API downtime और temporary errors अक्सर होते हैं, और billing issues का समाधान भी धीमा है
उदाहरण के लिए, delete की गई instance अब भी उपयोग में दिखाई देती है, और hourly charge वास्तविक से दोगुना गिना जाता है
उन्होंने Phoenix.new और Sprites जैसे नए AI products जारी किए हैं, लेकिन ऐसा लगता है कि मौजूदा products की quality सुधारने से ज़्यादा ध्यान नए products पर है
मैं लंबे समय से ऐसे development sandbox की चाहत रखता था — ऐसा environment जिसे बंद करना भूल जाएँ तो भी बड़ा खर्च न हो
लेकिन कुछ समस्याएँ थीं
manpath: can't set the localeerror — शायद local locale settings ज्यों की त्यों pass हो गईं$SHELL/opt/homebrew/bin/fishपर set था। local environment variables remote पर बिना अनुमति भेजे गए लग रहे थे, जो थोड़ा असहज करने वाला थायह सच में शानदार है। मैं ऐसे DX और API वाले sandbox execution environment का इंतज़ार कर रहा था
मैं base image या VM को customize करके अनावश्यक tools हटाना और सिर्फ ज़रूरी binaries रखना चाहूँगा
या checkpoint के आधार पर sprite clone करने की सुविधा होनी चाहिए। अभी ऐसा कोई option नज़र नहीं आता
पिछले कुछ महीनों से Sprites पर काम करते हुए मुझे सच में बहुत मज़ा आया
जल्द ही Elixir वाले कुछ हिस्से open source किए जाएँगे
5 मिनट का demo video भी है → YouTube डेमो
जो sprites उपयोग में नहीं हैं, उनका खर्च लगभग नहीं के बराबर है। हर नया काम शुरू करते समय बस एक नया बना लें
यह अजीब लेकिन अच्छा एहसास है कि बिना ज़्यादा सोचे कभी भी चलाने लायक environment मौजूद है
domain fly.io से जुड़ा होने की वजह से, पहले मुझे लगा कि यह local solution होगा
भले ही self-hosted न हो, मैं Docker या bubblewrap जैसी चीज़ों को wrap करने वाला local VM wrapper उम्मीद कर रहा था
local hardware पर ZFS-आधारित IncusOS चलाएँ, तो यह बहुत शक्तिशाली sandbox environment बन जाता है
हो सकता है मैंने दस्तावेज़ में यह मिस कर दिया हो, लेकिन जानना चाहता हूँ कि sprite को fork/clone किया जा सकता है या checkpoint को नए sprite के रूप में restore किया जा सकता है
उदाहरण के लिए, एक sprite को template की तरह इस्तेमाल करके कई copies चलानी हों, या Claude code कई समाधान तलाशे और बाद में सिर्फ एक रखकर बाकी हटा दे
इसे launch में शामिल करना चाहा गया था, लेकिन फैसला हुआ कि पहले कुछ और वास्तविक उपयोग डेटा इकट्ठा किया जाए