Octoweb का अपना घर हो गया — और वह अब भी आपके मॉडलों पर चलता है, हमारे नहीं

तीन हफ़्ते पहले हमने Octoweb से मिलवाया — वही कीबोर्ड-फर्स्ट WebKit ब्राउज़र जिसमें हम मार्च से चुपचाप रह रहे थे। प्रतिक्रिया उम्मीद से बेहतर रही, और उसके साथ एक सवाल नत्थी था, जो आधा दर्जन अलग-अलग लहजों में पूछा गया:

तो यह सिर्फ़ आपके क्लाउड के साथ चलता है, है न?

यह मान लेना जायज़ है। साइडबार Octomind पर चलता है, और वही नाम हमारे पेड क्लाउड का भी है। पोस्ट में लिखा था "Octomind इंस्टॉल कीजिए और साइन इन कीजिए," और कोई भी समझदार पाठक इससे यही निकालेगा कि ब्राउज़र एक फ़नल है — कि ब्राउज़र बदलने का मतलब है हमसे मॉडल किराए पर लेना।

ऐसा नहीं है, और कभी नहीं था। जवाब साफ़ न होना डॉक्यूमेंटेशन में हमारी अपनी चूक है, और शुरुआत URL से ही होती है: प्रोडक्ट पेज octomind.run/product/octoweb पर रहता था, जो एक भी शब्द पढ़ने से पहले कह देता है कि यह उसी चीज़ का एक फ़ीचर है जिसके आप पैसे देते हैं

तो हमने URL ठीक किया, और फिर समझाना भी ठीक किया।

Octoweb अब octoweb.xyz पर रहता है। मुफ़्त, Apache-2.0, macOS 13+, कोई अकाउंट नहीं। और ब्राउज़र ने अपनी पूरी ज़िंदगी में कभी किसी मॉडल प्रोवाइडर को कॉल नहीं किया — उसके पास वैसा कोड ही नहीं है।


नया घर

octoweb.xyz
octoweb short
  • TABकीबोर्ड शॉर्टकट — हर बाइंडिंगoctoweb.xyz/shortcuts⌘1
  • TABMCP सर्वर — 29 टूल जो आपका एजेंट कॉल कर सकता हैoctoweb.xyz/mcp⌘2
  • इतिहासब्राउज़र क्या सहेजता है, और क्या भेजता हैoctoweb.xyz/privacy⌘3
↵ खोलें⌘↵ नेविगेट करें⌘⇧↵ AI से पूछें

यह कमांड पैलेट है — ⌘⇧P — खुले टैब और इतिहास में फ़ज़ी-मैच करता हुआ, और Octoweb में कहीं भी पहुँचने का रास्ता यही है। यह साइट का ठीक-ठाक प्रीव्यू भी है, क्योंकि साइट पर मार्केटिंग कम और रेफ़रेंस सामग्री ज़्यादा है:

  • /shortcuts — छह समूहों में सारी 48 बाइंडिंग, उन्हें मिलाकर जो सिर्फ़ पैलेट और AI प्रॉम्प्ट बॉक्स के भीतर मौजूद हैं।
  • /mcp — 29 MCP टूल में से हर एक, काम के हिसाब से समूहबद्ध, Claude Code, Claude Desktop और Cursor के लिए कॉपी-पेस्ट कॉन्फ़िग के साथ।
  • /privacy — कौन-सी फ़ाइल आपकी डिस्क पर कहाँ बनती है, क्या loopback पर बाइंड होता है, और यह ईमानदार नोट कि वेबसाइट पर Google Analytics चलता है जबकि ब्राउज़र में टेलीमेट्री बिलकुल नहीं है।
  • /blog — छोटी, प्रोडक्ट-केंद्रित पोस्टें। यह वाली muvon.io पर ही रहेगी; रिलीज़ नोट्स वहाँ रहेंगे।

यह Cloudflare पर एक स्टैटिक SvelteKit साइट है, प्रीरेंडर्ड, कोई क्लाइंट-साइड फ़ेचिंग नहीं — ठीक वही स्टैक जिस पर आप यह पेज पढ़ रहे हैं। इसमें एक शाम लगी। यह काम मार्च में ही हो जाना चाहिए था।


असल जवाब: मॉडल किसका है?

यह रहा वह हिस्सा जिसे तीन हफ़्ते पहले एक सीधा पैराग्राफ़ मिलना चाहिए था।

Octoweb का साइडबार कोई चैट क्लाइंट नहीं है। ⌘⇧A दबाते ही ब्राउज़र एक चाइल्ड प्रोसेस शुरू करता है — octomind acp octoweb:assistant, सैंडबॉक्स किया हुआ — और उससे Agent Client Protocol पर बात करता है। सिस्टम में हर मॉडल कॉल वही प्रोसेस करता है। ब्राउज़र के 36,000 लाइन Rust कोड में किसी मॉडल प्रोवाइडर तक जाती HTTP कॉल ढूँढिए और ख़ाली हाथ लौटिएगा, क्योंकि है ही नहीं। ब्राउज़र को बातचीत रेंडर करनी आती है। उसे यह नहीं पता कि OpenAI क्या चीज़ है।

यह इसलिए मायने रखता है कि पूरा "कौन-सा मॉडल" वाला सवाल एक प्रोसेस बाईं ओर खिसक जाता है, Octomind की कॉन्फ़िग में — जहाँ वह बस एक स्ट्रिंग है:

[model]
name = "octohub:auto"          # Octomind Cloud, one key, we route it
# name = "anthropic:claude-opus-5"
# name = "openrouter:qwen/qwen3-coder"
# name = "local:qwen3-coder-30b"   # your box, your GPU, your electricity

मॉडल हमेशा provider:model होते हैं — अकेला नाम अंदाज़ा लगाने के बजाय ठुकरा दिया जाता है। इन प्रीफ़िक्स के पीछे octolib है — वही प्रोवाइडर परत जो Muvon का हर टूल साझा करता है — और वह फ़िलहाल 28 प्रोवाइडर रिज़ॉल्व करती है: openrouter, openai, anthropic, google-vertex, google-studio, groq, cerebras, deepseek, fireworks, together, xai, moonshot, minimax, nvidia, amazon, cloudflare, zai, alibaba और बाक़ी।

इनमें से दो प्रीफ़िक्स ही असल में इस पोस्ट का विषय हैं:

  • local: किसी भी OpenAI-compatible सर्वर की ओर इशारा करता है, डिफ़ॉल्ट http://localhost:11434/v1/chat/completions। यानी बिना कुछ किए Ollama; LOCAL_API_URL सेट कीजिए और यह 1234 पर LM Studio हो जाता है, 8080 पर LocalAI, या आपकी मेज़ के नीचे रखा vLLM बॉक्स। मशीन से कुछ भी बाहर नहीं जाता।
  • cli: आपके पहले से इंस्टॉल किसी एजेंट CLI को चलाता है — codex, claude, cursor, gemini — मानो वह कोई मॉडल एंडपॉइंट हो। इनमें से किसी के लिए आप पहले से पैसे दे रहे हैं, तो साइडबार उसी को इस्तेमाल कर लेगा और दूसरा बिल नहीं जुड़ेगा।

और keys कभी कॉन्फ़िग फ़ाइल में नहीं जातीं। octomind config --api-key उन्हें सहेजने से साफ़ इनकार कर देता है — क्रेडेंशियल पहले एनवायरनमेंट से पढ़े जाते हैं, फिर user-scope .env से, फिर project-local .env से। आपकी Anthropic key वहीं रहती है जहाँ आपकी बाक़ी keys रहती हैं।

Octomind Cloud इसमें कहाँ बैठता है: यह आसान रास्ता है, ज़रूरी रास्ता नहीं। octomind login एक device-code फ़्लो है, gh auth login जैसा। यह एक ही क्रेडेंशियल लिखता है — OCTOHUB_API_KEY — और उसके बाद डिफ़ॉल्ट octohub:auto मॉडल हर कॉल को उसके मक़सद (main, supervisor, compression) के हिसाब से हमारी तरफ़ के उपयुक्त मॉडल पर भेजता है। छह के बजाय एक key, एक खर्च-सीमा जिस पर नज़र रखी जा सके, और शुरू करने के लिए एक फ़्री टियर। हमें सौदा अच्छा लगता है, इसीलिए यह डिफ़ॉल्ट है। और यह भी उतना ही सच है कि TOML फ़ाइल में नौ अक्षर बदलते ही यह आपका सेटअप रह ही नहीं जाता — और साइडबार की अकाउंट पट्टी एक हटाई जा सकने वाली सूचना है, कोई ताला लगा दरवाज़ा नहीं।

github.com/muvon/octoweb/pull/214

साइडबार हेडर में दिखने वाला टैग एडिट किया जा सकता है, इसलिए एक ही विंडो एक मिनट octoweb:assistant से बात कर सकती है और अगले मिनट आपके अपने developer:rust एजेंट से — और 0.14.0 से वह फ़ील्ड उन्हीं टैग्स से ऑटोकम्प्लीट करता है जिन्हें आपका लोकल Octomind सचमुच जानता है, यानी अब अंधेरे में टाइप नहीं करना पड़ता।


तीन हफ़्ते, चार रिलीज़

परिचय वाली पोस्ट के बाद से Octoweb 0.11.0 से 0.14.0 तक निकला — 62 कमिट। उनमें से दो ने बदल दिया कि यह चीज़ इस्तेमाल में कैसी लगती है।

वर्कस्पेस (⌘⇧O)। अलग-थलग प्रोफ़ाइलें, और अलग-थलग का मतलब सचमुच अलग-थलग: हर वर्कस्पेस के अपने टैब, अपना इतिहास, अपने AI सेशन, अपना MRU क्रम, अपने फास्ट-एक्सेस स्लॉट, और अपना WKWebsiteDataStore — यानी कुकीज़, localStorage और कैश कभी एक-दूसरे में नहीं घुलते। एक ही साइट पर दो अकाउंट, एक ही वक़्त साइन इन, बिना incognito वाले नाटक के। यह वह फ़ीचर है जिसकी ज़रूरत का पता हमें उस दिन चला जिस दिन क्लाइंट प्रोजेक्ट के लिए दूसरा ब्राउज़र खोलना बंद हो गया।

⌘⇧O — वर्कस्पेस
  • ⌘1personal14 टैब
  • ⌘2client-acme6 टैब▶ meet.google.com
  • ⌘3agent-scratch2 टैबMCP
अलग कुकीज़, इतिहास, सेशन और स्लॉटस्विच करने के लिए ⌘⇧O

MCP अब हर वर्कस्पेस के हिसाब से रूट होता है। localhost:3434/mcp पर बैठा इकलौता सर्वर X-Octoweb-Workspace टोकन पढ़ता है और सिर्फ़ उसी प्रोफ़ाइल के भीतर काम करता है। यानी कोई एजेंट किसी बैकग्राउंड वर्कस्पेस को चला सकता है — किसी अलग scratch अकाउंट में लॉग इन, अपनी ही कुकीज़ पर — जबकि आप अपने वाले में काम करते रहते हैं, और वह ग़लती से आपके सेशन में भटक नहीं सकता। capability मैनिफ़ेस्ट एक क़दम और आगे जाता है: टोकन न हो तो वह स्क्रीन पर खुले वर्कस्पेस को डिफ़ॉल्ट मान लेने के बजाय सर्वर को दिखाने से ही इनकार कर देता है।

बाक़ी संक्षेप में — और यह सब हमारे नहीं, आपके हाथ में है:

  • भरोसेमंद नेटिव इनपुट। MCP के क्लिक और कीस्ट्रोक अब असली AppKit NSEvent हैं, जो टैब के WKWebView तक पहुँचते हैं — इसलिए पेज को isTrusted=true दिखता है, एक असली यूज़र जेस्चर, चलता हुआ :hover, और नेटिव डिफ़ॉल्ट ऐक्शन। यह छिपे हुए बैकग्राउंड टैब पर भी काम करता है, बिना आपका फ़ोकस छीने। सिंथेटिक DOM इवेंट ये चारों काम कभी नहीं कर सकते थे।
  • हर क्रिया बताती है कि क्या बदला। हर टूल कॉल एक लाइन का असर-सारांश लौटाता है — नेविगेशन, SPA का URL बदलना, स्क्रीन पर नया टेक्स्ट, डायलॉग, नेटवर्क गतिविधि, फ़ोकस का हिलना — या साफ़-साफ़ कह देता है "कोई दिखने वाला बदलाव नहीं"। एजेंट अब यह पता करने के लिए कि उसका क्लिक लगा या नहीं, पूरा एक टर्न पेज दोबारा पढ़ने में नहीं फूँकता। संवेदनशील क्वेरी पैरामीटर रास्ते में ही रिपोर्ट की गई नेटवर्क गतिविधि से पोंछ दिए जाते हैं।
  • डाउनलोड अब हैं। एक रनटाइम पैच WebKit से मुख्य फ़्रेम और सबफ़्रेम, दोनों में Content-Disposition: attachment मनवा लेता है — Google Drive यही इस्तेमाल करता है — और बनी हुई फ़ाइल का नाम असर-सारांश में दिख जाता है, भले पेज ने कुछ न कहा हो।
  • browser_dismiss_overlay कुकी और सहमति वाले बैनर हटा देता है, और उसकी तरजीह Reject को है — वह आपकी ओर से अपने-आप स्वीकार नहीं करेगा।
  • A2UI v1.0। एजेंट साइडबार में एक असली इंटरैक्टिव सतह रेंडर कर सकता है — कार्ड, फ़ॉर्म, विकल्प पिकर, स्लाइडर, मोडल — डेटा बाइंडिंग और वैलिडेशन के साथ, और आपके कुछ क्लिक करने का आधे घंटे तक इंतज़ार कर सकता है। जिन कार्रवाइयों का असर बड़ा हो, उन्हें इसी रास्ते से गुज़रना चाहिए: पहले पूछो, फिर करो।
  • लाइव मीडिया टैब। वर्कस्पेस स्विचर दिखाता है कि कौन-से टैब ऑडियो या वीडियो चला रहे हैं या माइक पकड़े बैठे हैं — यानी दूसरी प्रोफ़ाइल में जो मीटिंग चलती छूट गई थी, वह ढूँढी जा सकती है, भूत बनकर भटकती नहीं रहती।

अगस्त में हमसे दो चीज़ें ग़लत हुईं

हमारा उसूल: पिछली पोस्ट ग़लत थी, तो अगली पोस्ट यह कह देती है।

ग्लोबल शॉर्टकट CGEventTap से नहीं गुज़रते। हमने लिखा था कि गुज़रते हैं; कोड मई में ही उससे हट चुका था। CGEventTap के लिए macOS की Accessibility अनुमति चाहिए, और किसी ब्राउज़र जैसी चीज़ के लिए keylogger-स्तर की पहुँच माँगना उस फ़ीचर के बदले घाटे का सौदा है जो किसी ने माँगा ही नहीं था। Octoweb इसकी जगह AppKit का लोकल NSEvent मॉनिटर इस्तेमाल करता है — शून्य अनुमतियाँ, और ईमानदार दायरा: यह कीज़ तभी देखता है जब Octoweb सामने हो। डिज़ाइन सही था; "सिस्टम-वाइड" शब्द ग़लत था।

Passkeys उसमें नहीं हैं। अगस्त की पोस्ट ने WebAuthn को उन बुनियादी चीज़ों में गिना था जो शिप हो चुकी हैं। उसे जोड़ने वाला कमिट मई में revert हो गया था और छापने से पहले हमारी नज़र इस पर नहीं गई। 0.14.0 में यह नहीं है।

बात निकली है तो दो छोटे सुधार और: MCP सर्वर में 29 टूल हैं, 26 नहीं — browser_fill_form, browser_dismiss_overlay, browser_get_playing_tabs और render_ui उसके बाद आए। और "क़रीब 25,000 लाइनें" अब 35,972 हैं।


इसे लीजिए

brew install --cask muvon/tap/octoweb

macOS 13 या उससे नया, Apple Silicon या Intel, कोई अकाउंट नहीं। या ख़ुद बना लीजिए — इसमें एक Rust टूलचेन और क़रीब एक मिनट लगता है:

git clone https://github.com/muvon/octoweb
cd octoweb
./build.sh --dev
open dist/Octoweb.app

बिना कोई AI कॉन्फ़िगर किए भी Octoweb एक ब्राउज़र है: पैलेट, स्लॉट, वर्कस्पेस, find-in-page, कॉन्टेंट ब्लॉकिंग, टैब हाइबरनेशन। साइडबार चाहता है कि साथ में Octomind इंस्टॉल हो, और उसके आगे मॉडल का फ़ैसला एक लाइन का है — हमारे क्लाउड के लिए octomind login, या बाक़ी किसी भी चीज़ के लिए एक export की हुई key और एक provider:model स्ट्रिंग। हम दोनों इस्तेमाल करते हैं, अलग-अलग मशीनों पर, इस हिसाब से कि काम क्या है और नेटवर्क कैसा है।

सब कुछ Apache-2.0 है: ब्राउज़र, रनटाइम, प्रोवाइडर परत। इसे किसी लोकल मॉडल पर चलाइए और कुछ ज़रूरत से ज़्यादा धीमा या बुद्धू लगे, तो issue खोलिए — उस रास्ते की टेस्टिंग क्लाउड वाले से कम होती है, और इसका इकलौता इलाज यही है कि आप हमें बताएँ।

— Don

Octoweb Apache-2.0 के तहत ओपन सोर्स है, Muvon Un Limited द्वारा विकसित। अब यह octoweb.xyz पर रहता है, Octomind पर चलता है, और जिस भी मॉडल पर आप इसे लगा दें, उसी के साथ काम करता है। GitHub — issues और pull requests का स्वागत है।