1. nanobot को Mac mini पर क्यों चलाएं?
nanobot एक लंबे समय तक चलने वाली gateway प्रोसेस के इर्द-गिर्द बना है: आधिकारिक डॉक्स कहते हैं कि nanobot gateway को चालू रखें क्योंकि यही चैट ऐप्स के लिए बैकग्राउंड डिलीवरी, WebUI topics, शेड्यूल किए गए automations, लोकल triggers और heartbeat को संभालता है। यह केवल ऐसी मशीन पर काम करता है जो कभी स्लीप में नहीं जाती। MyRemoteMac का एक समर्पित Mac mini आपको ठीक यही देता है, एक भौतिक Apple Silicon Mac, केवल आपका, 99.9% SLA के साथ 24/7 ऑनलाइन, पूर्ण root, SSH और VNC एक्सेस और एक WireGuard VPN, GPU-टियर VPS बिलिंग के बजाय एक समान मासिक कीमत पर। और चूंकि यह macOS है, nanobot अपने बिल्ट-इन Seatbelt exec सैंडबॉक्स (sandbox-exec, macOS के साथ शिप होता है) का उपयोग कर सकता है और उसी मशीन पर एक लोकल Ollama मॉडल चला सकता है।
| विशेषता | क्लाउड VPS (AI टियर) | Mac mini (MyRemoteMac) |
|---|---|---|
| मासिक लागत | GPU-टियर मूल्य (परिवर्तनशील) | M4 $85/माह से · M6 $149/माह से (समान दर, USD) |
| Exec सैंडबॉक्स | bubblewrap (bwrap, इंस्टॉल करना होगा) | Seatbelt (sandbox-exec), macOS में बिल्ट-इन |
| लोकल LLM (Ollama) | अतिरिक्त लागत / सीमित | Apple Silicon यूनिफ़ाइड मेमोरी पर नेटिव |
| हमेशा-चालू अपटाइम | हां | हां (99.9% SLA) |
| हार्डवेयर | शेयर्ड, वर्चुअलाइज़्ड | समर्पित 1:1 भौतिक Mac |
| एक्सेस | SSH | SSH + VNC + WireGuard VPN, पूर्ण root |
मुख्य लाभ: nanobot की प्रोडक्शन अनुशंसा एप्लिकेशन-स्तरीय workspace guard को OS exec सैंडबॉक्स के साथ जोड़ने की है, Linux पर bubblewrap, macOS पर Seatbelt। Mac mini पर सैंडबॉक्स पहले से मौजूद है: एक ही config key एजेंट की shell कमांड को workspace फ़ाइलसिस्टम तक सीमित कर देती है (नेटवर्क पर कोई प्रतिबंध नहीं)। इसे एक लोकल Ollama मॉडल के साथ जोड़ें और नियमित कार्य कभी मशीन से बाहर नहीं जाते।
2. पूर्वापेक्षाएं
nanobot PyPI पैकेज nanobot-ai के रूप में शिप होता है, जिसमें Apple Silicon और Intel पर macOS 13+ के लिए प्लेटफ़ॉर्म wheels होते हैं जो WebUI और नेटिव टर्मिनल UI को बंडल करते हैं। स्टैंडर्ड इंस्टॉल पथ के लिए Node.js, Homebrew या Git की कोई आवश्यकता नहीं है। आपको यह चाहिए:
- MyRemoteMac से एक समर्पित Mac mini, M4 $85/माह से (16 GB / 256 GB) या M6 $149/माह से। दोनों Apple Silicon हैं और macOS arm64 wheel द्वारा कवर किए जाते हैं।
- आपके Mac mini तक SSH एक्सेस (आपकी MyRemoteMac सदस्यता के साथ प्रदान किया गया) और nanobot चलाने के लिए एक स्टैंडर्ड, गैर-root user अकाउंट, प्रोजेक्ट का SECURITY.md कहता है कि इसे कभी भी root के रूप में न चलाएं।
- Python 3.11 या नया और curl। वन-कमांड इंस्टॉलर रुक जाता है यदि उसे केवल पुराना python3 मिलता है; uv या pipx वैकल्पिक हैं लेकिन अनुशंसित हैं जब pip externally-managed-environment रिपोर्ट करे।
- एक LLM प्रोवाइडर: एक API key (Anthropic, OpenAI, OpenRouter, Gemini, DeepSeek, Groq, Mistral और लगभग 40 अन्य बिल्ट-इन हैं) या उसी Mac mini पर चल रहा एक लोकल OpenAI-संगत सर्वर जैसे Ollama।
- अपने एजेंट तक पहुंचने के लिए Telegram, Discord, Slack या WhatsApp पर एक मैसेजिंग अकाउंट (Telegram सबसे तेज़ है: @BotFather से एक bot टोकन और कोई इनबाउंड पोर्ट नहीं)।
3. चरण 1: SSH के माध्यम से कनेक्ट करें और nanobot इंस्टॉल करें
अपने MyRemoteMac डैशबोर्ड के क्रेडेंशियल से अपने Mac mini में SSH करें। इस गाइड की हर कमांड एक सामान्य macOS user के रूप में चलाएं, कभी भी root के रूप में नहीं: जो LaunchAgent आप बाद में इंस्टॉल करेंगे वह उसी user के सेशन के भीतर चलता है।
SSH के माध्यम से कनेक्ट करें और Python जांचें
# Connect to your Mac mini as a standard user (never root: SECURITY.md)
ssh admin@your-server-ip
# Confirm you are on Apple Silicon
uname -m
# arm64
# nanobot needs Python 3.11 or newer: install a current Python first if this is older
python3 --version
# Python 3.12.x
# curl is used to fetch the one-command installer
which curl
nanobot इंस्टॉल करें
प्रोजेक्ट का डिफ़ॉल्ट पथ एक वन-कमांड इंस्टॉलर है जो एक सक्रिय वर्चुअल एनवायरनमेंट, uv, pipx या ~/.nanobot/venv में एक managed venv का उपयोग करके PyPI से nanobot-ai इंस्टॉल या अपग्रेड करता है, और उसने जो सटीक कमांड इस्तेमाल की उसे प्रिंट करता है। चूंकि SSH_CONNECTION सेट है, यह ब्राउज़र WebUI छोड़ देता है और इसके बजाय टर्मिनल विज़ार्ड nanobot onboard --wizard चलाता है। पहले --dry-run के साथ इसका पूर्वावलोकन करें। यदि आप इंस्टॉल को स्वयं प्रबंधित करना पसंद करते हैं, तो uv और pipx प्रलेखित विकल्प हैं:
# Option A, official one-command installer: preview, then run
curl -fsSL https://raw.githubusercontent.com/HKUDS/nanobot/main/scripts/install.sh | sh -s -- --dry-run
curl -fsSL https://raw.githubusercontent.com/HKUDS/nanobot/main/scripts/install.sh | sh
# Over SSH it runs the terminal wizard `nanobot onboard --wizard` instead of opening the WebUI.
# The script reads NANOBOT_SKIP_WIZARD / PYTHON from sh's own environment, so set them on sh, not on curl:
# curl -fsSL https://raw.githubusercontent.com/HKUDS/nanobot/main/scripts/install.sh | NANOBOT_SKIP_WIZARD=1 sh
# curl -fsSL https://raw.githubusercontent.com/HKUDS/nanobot/main/scripts/install.sh | PYTHON=/path/to/python3.12 sh
# Option B: uv (isolated tool install, no externally-managed-environment errors)
uv tool install nanobot-ai
# Option C: pipx, or pip inside a virtual environment
pipx install nanobot-ai
# python3 -m pip install nanobot-ai
# pip says "externally-managed-environment"? Use Option A or B: never --break-system-packages
इंस्टॉलेशन सत्यापित करें
यदि नए shell में nanobot आपके PATH में नहीं है, तो इंस्टॉलर द्वारा प्रिंट किया गया runner (uv tool run, pipx run या managed venv) उपयोग करें या ~/.local/bin को अपने PATH में जोड़ें:
nanobot --version
# 0.3.5
# `nanobot` not found? Use the runner the installer printed:
uv tool run --from nanobot-ai nanobot --version
pipx run --spec nanobot-ai nanobot --version
~/.nanobot/venv/bin/python -m nanobot --version
4. चरण 2: एक मॉडल प्रोवाइडर कॉन्फ़िगर करें (API या लोकल Ollama)
nanobot सब कुछ ~/.nanobot/config.json से पढ़ता है (प्रोवाइडर, मॉडल presets, चैनल, टूल) और मेमोरी, स्किल्स और जनरेट की गई फ़ाइलें ~/.nanobot/workspace/ में रखता है। टर्मिनल विज़ार्ड दोनों बनाता है। आधिकारिक डॉक्स के config स्निपेट camelCase keys का उपयोग करते हैं और उन्हें फ़ाइल में मर्ज करने के लिए बनाया गया है, पूरा पेस्ट करने के लिए नहीं। फ़ाइल स्टार्टअप पर एक बार पढ़ी जाती है, इसलिए हर संपादन के बाद गेटवे को पुनः आरंभ करें।
टर्मिनल विज़ार्ड चलाएं
# Documented path for SSH / headless installs (the installer already ran it unless skipped)
nanobot onboard --wizard
# Creates ~/.nanobot/config.json and ~/.nanobot/workspace/
# Later, after an upgrade: merge new default fields without overwriting your values
nanobot onboard --refresh
एक प्रोवाइडर और एक मॉडल preset जोड़ें
एक preset एक प्रोवाइडर को एक मॉडल से जोड़ता है। डॉक्स का उदाहरण claude-opus-4-5 के साथ Anthropic direct है; पहली बार चलाने पर सबसे आम विफलता एक प्रोवाइडर की API key को दूसरे प्रोवाइडर के मॉडल ID के साथ मिलाना है, इसलिए हमेशा preset में प्रोवाइडर को पिन करें। आधिकारिक उदाहरण key को ${ANTHROPIC_API_KEY} के रूप में रेफ़रेंस करते हैं, जो nanobot शुरू करने वाली प्रोसेस के एनवायरनमेंट से रिज़ॉल्व होती है और कभी वापस नहीं लिखी जाती। यह आपके shell से शुरू किए गए फ़ोरग्राउंड सेशन के लिए काम करता है (detached --background प्रोसेस द्वारा एनवायरनमेंट का inheritance प्रलेखित नहीं है), लेकिन चरण 4 में जनरेट किया गया LaunchAgent कोई एनवायरनमेंट वेरिएबल नहीं ले जाता, इसलिए launchd डिप्लॉयमेंट के लिए key को config.json में स्टोर करें और फ़ाइल को SECURITY.md के अनुसार लॉक कर दें:
# Merge into ~/.nanobot/config.json (key from console.anthropic.com)
{
"providers": {
"anthropic": { "apiKey": "sk-ant-YOUR_API_KEY_HERE" }
},
"modelPresets": {
"primary": {
"provider": "anthropic",
"model": "claude-opus-4-5",
"maxTokens": 8192,
"contextWindowTokens": 200000
}
},
"agents": { "defaults": { "modelPreset": "primary" } }
}
# Docs alternative for shell-started sessions: "apiKey": "${ANTHROPIC_API_KEY}"
# (resolved from the environment at startup; an unset variable fails fast with ConfigLoadError)
# Lock the config down (SECURITY.md)
chmod 700 ~/.nanobot && chmod 600 ~/.nanobot/config.json
वैकल्पिक: Ollama के साथ एक लोकल मॉडल उपयोग करें
nanobot में एक समर्पित ollama प्रोवाइडर है। Mac mini पर Ollama को अलग से शुरू करें (हमारी Mac mini पर LLM गाइड देखें), फिर प्रोवाइडर को http://localhost:11434/v1 की ओर पॉइंट करें, मॉडल का नाम कच्चा Ollama टैग है, कोई प्रीफ़िक्स नहीं, और अधिकांश Ollama सेटअप को किसी API key की ज़रूरत नहीं होती। Fallback chains preset नामों को रेफ़रेंस करती हैं, इसलिए आप एक होस्टेड frontier मॉडल को प्राइमरी और एक लोकल preset को fallback के रूप में रख सकते हैं (या इसका उल्टा):
# Ollama must already be running on the Mac mini (started separately, outside nanobot)
# Merge into ~/.nanobot/config.json: model = raw Ollama tag, no prefix, no API key needed
{
"providers": {
"ollama": { "apiBase": "http://localhost:11434/v1" }
},
"modelPresets": {
"primary": {
"provider": "ollama",
"model": "llama3.2",
"maxTokens": 4096,
"contextWindowTokens": 32768
}
},
"agents": { "defaults": { "modelPreset": "primary" } }
}
# Fallback chains use preset names, not model IDs: context is sized for the smallest window in the chain
# "agents": { "defaults": { "modelPreset": "primary", "fallbackModels": ["localSmall"] } }
सेटअप जांचें और पहला संदेश भेजें
डॉक्स स्पष्ट हैं: जब तक यह काम न करे, चैट ऐप्स, MCP सर्वर, fallbacks या सर्विस न जोड़ें।
# Check the setup without calling a model
nanobot status
# First one-shot message (since v0.3.5 a bare `nanobot` opens the terminal UI instead)
nanobot -m "Hello!"
5. चरण 3: मैसेजिंग चैनल कनेक्ट करें
nanobot का चैट-ऐप्स डॉक्यूमेंटेशन Telegram, Discord, Slack, WhatsApp, WeChat, WeCom, Feishu/Lark, DingTalk, QQ, Matrix, Email, Mattermost, Linear, Microsoft Teams, Signal और Mochat को कवर करता है, साथ ही बंडल्ड WebUI, टर्मिनल UI और एक OpenAI-संगत API (nanobot serve)। iMessage समर्थित नहीं है। चैनल dependencies वैकल्पिक फ़ीचर हैं: config में चैनल चालू करने से पहले उन्हें nanobot plugins enable <channel> से सक्षम करें। Telegram सबसे तेज़ी से काम करने लगता है, डिफ़ॉल्ट रूप से long polling, इसलिए Mac mini पर कोई इनबाउंड पोर्ट नहीं। Telegram गाइड पहले सेटअप के लिए pairing-only मोड की अनुशंसा करती है: allowFrom छोड़ दें और भरोसेमंद लोकल CLI से अपने पहले DM को स्वीकृत करें:
# 1. In Telegram, open @BotFather, send /newbot and copy the token (format: 1234567890:AAF...)
# 2. Enable the optional Telegram feature in the same Python environment as nanobot
nanobot plugins enable telegram
# 3. Merge into ~/.nanobot/config.json: omit allowFrom to use pairing-only mode
{ "channels": { "telegram": { "enabled": true, "token": "1234567890:AAF..." } } }
# 4. The channel must be listed, then run the gateway in the foreground for a first test
nanobot channels status
nanobot gateway
# 5. DM your bot once: it answers with a pairing code. Approve it from a second SSH session:
nanobot agent -m "/pairing approve ABCD-EFGH"
# 6. Stop the foreground gateway with Ctrl+C before installing the service in Step 4
Discord, Slack या WhatsApp कनेक्ट करें
Discord को Developer Portal में MESSAGE CONTENT INTENT सक्षम किए हुए एक bot टोकन चाहिए; डिफ़ॉल्ट groupPolicy mention रखें ताकि bot केवल @mention किए जाने पर जवाब दे। Slack Socket Mode का उपयोग करता है (एक bot टोकन और connections:write के साथ एक app-level टोकन) और इसे किसी सार्वजनिक URL की ज़रूरत नहीं, लेकिन DMs डिफ़ॉल्ट रूप से खुले हैं, pairing codes पाने के लिए dm.policy को allowlist पर सेट करें। WhatsApp QR code से लिंक होता है और v0.3.0 से शुद्ध Python है (कोई Node.js ब्रिज नहीं); इसका सेशन डेटाबेस पूरे अकाउंट की एक्सेस के बराबर है, इसलिए ~/.nanobot/whatsapp-auth को mode 0700 पर रखें और एक अलग नंबर उपयोग करें:
# Discord: bot token with MESSAGE CONTENT INTENT enabled in the Developer Portal
{ "channels": { "discord": { "enabled": true, "token": "YOUR_DISCORD_BOT_TOKEN",
"groupPolicy": "mention", "allowChannels": [] } } }
# Slack, Socket Mode (xoxb bot token + xapp app-level token with connections:write), no public URL
nanobot plugins enable slack
{ "channels": { "slack": { "enabled": true, "botToken": "xoxb-...", "appToken": "xapp-...",
"dm": { "policy": "allowlist" } } } }
# WhatsApp: the CLI prints a QR code; scan it from WhatsApp > Linked Devices
# (if the QR is not readable in your terminal, run the same command over VNC; our advice: use a separate number)
nanobot plugins enable whatsapp
nanobot channels login whatsapp
{ "channels": { "whatsapp": { "enabled": true, "allowFrom": ["33612345678"] } } }
chmod 700 ~/.nanobot/whatsapp-auth # session DB = full account access
# Every channel: verify it is listed, then restart the gateway
nanobot channels status
एक्सेस कंट्रोल: allowFrom और pairing
हर DM-सक्षम चैनल एक ही नियम का पालन करता है। allowFrom छोड़े जाने पर, पहला DM एक pairing code लौटाता है जिसे आप पहले से स्वीकृत चैट या CLI से स्वीकृत करते हैं। एक गैर-खाली सूची एक सख्त allowlist है: बाकी सभी को अनदेखा किया जाता है। wildcard pairing को बायपास करता है और चैनल तक पहुंच रखने वाले किसी को भी bot से बात करने देता है, डॉक्स इसकी अनुमति केवल जानबूझकर या अस्थायी रूप से एक निजी सैंडबॉक्स में देते हैं, प्रोडक्शन में कभी नहीं:
# channels.<name>.allowFrom semantics
# omitted → pairing-only mode: the first DM returns a code such as ABCD-EFGH
# ["123456789"] → static allowlist (your numeric Telegram/Discord ID), everyone else ignored
# ["*"] → anyone who can reach the channel: never in production
# Pairing management from the trusted local CLI
nanobot agent -m "/pairing approve ABCD-EFGH"
nanobot agent -m "/pairing deny ABCD-EFGH"
nanobot agent -m "/pairing revoke 123456789"
# Slack / Mattermost need "dm": { "policy": "allowlist" } to issue pairing codes;
# "dm": { "enabled": false } disables DMs where you do not need them
6. चरण 4: हार्डन करें, launchd के साथ 24/7 चलाएं, अपडेट करें
आगे बढ़ने से पहले फ़ोरग्राउंड गेटवे को रोकें (Ctrl+C)। nanobot macOS पर गेटवे को चालू रखने के तीन तरीके प्रलेखित करता है: एक LaunchAgent जिसे यह स्वयं लिखता है, CLI से प्रबंधित एक detached बैकग्राउंड प्रोसेस, या टेस्टिंग के लिए एक सादी फ़ोरग्राउंड प्रोसेस। हेडलेस 24/7 Mac mini के लिए LaunchAgent का उपयोग करें, यही एकमात्र विकल्प है जिसे launchd सुपरवाइज़ करता है और विफलता पर पुनः आरंभ करता है। पहले कॉन्फ़िगरेशन को हार्डन करें।
स्थायी बनाने से पहले हार्डन करें
आधिकारिक प्रोडक्शन अनुशंसा एप्लिकेशन-स्तरीय workspace guard और OS exec सैंडबॉक्स दोनों की है, macOS पर Seatbelt। Seatbelt एजेंट की shell कमांड को workspace (read-write), media (read-only) और आवश्यक सिस्टम पथों तक सीमित करता है, ~/.nanobot config डायरेक्टरी को छिपा देता है और HOME तथा TMPDIR को workspace की ओर पॉइंट करता है। यह नेटवर्क एक्सेस को प्रतिबंधित नहीं करता, और अकेला restrictToWorkspace कोई OS सैंडबॉक्स नहीं है। यदि एजेंट को shell की बिल्कुल ज़रूरत नहीं है, तो टूल को पूरी तरह हटा दें। साथ ही tools.maxSessionMessagesPerMinute को इसके डिफ़ॉल्ट 6 पर रखें और अपने LLM प्रोवाइडर पर एक खर्च सीमा सेट करें:
# Official production recommendation on macOS: merge into ~/.nanobot/config.json
{
"tools": {
"restrictToWorkspace": true,
"exec": { "sandbox": "seatbelt" }
}
}
# Agent does not need a shell? Remove the tool entirely instead:
# { "tools": { "exec": { "enable": false } } }
# Seatbelt sets HOME and TMPDIR to the workspace and masks ~/.nanobot. Scripts that need
# extra paths get them via tools.exec.sandboxRoBinds / sandboxRwBinds (use sparingly).
# Neither Seatbelt nor bwrap restricts network access.
# Keep WebUI / API on localhost (defaults: WebUI 127.0.0.1:8765, health 127.0.0.1:18790, serve 127.0.0.1:8900)
# and leave tools.webuiAllowRemotePackageInstall = false and tools.ssrfWhitelist = []
LaunchAgent इंस्टॉल करें
nanobot gateway install-service ~/Library/LaunchAgents/ai.nanobot.gateway.plist लिखता है, जो आपके वर्तमान Python के साथ python -m nanobot gateway --foreground चलाता है, लोड पर शुरू होता है (RunAtLoad), क्रैश पर पुनः आरंभ होता है (SuccessfulExit false के साथ KeepAlive) और ~/.nanobot/logs/ में लॉग करता है। यदि कोई मैनुअल गेटवे अभी भी चल रहा है तो यह address already in use के साथ विफल हो जाता है, इसलिए पहले उसे रोकें और --dry-run के साथ पूर्वावलोकन करें:
# Stop any manually started gateway first (otherwise: "address already in use")
nanobot gateway stop
# Preview the plist, then install it
nanobot gateway install-service --manager launchd --dry-run
nanobot gateway install-service --manager launchd
# Writes ~/Library/LaunchAgents/ai.nanobot.gateway.plist
# Runs: python -m nanobot gateway --foreground (RunAtLoad, KeepAlive on failure)
# Logs: ~/.nanobot/logs/
सर्विस प्रबंधित करें
LaunchAgent आपके user के gui डोमेन में रहता है, इसलिए यह तभी चलता है जब उस user का लॉगिन सेशन मौजूद हो, डॉक्स इसे आपके लॉगिन के बाद ऑनलाइन रहने के रूप में वर्णित करते हैं। हेडलेस Mac mini के रीबूट के बाद यह केवल तभी लौटता है जब आपका user स्वचालित रूप से लॉगिन करे; एक बार रीबूट-टेस्ट करें और launchctl list से जांचें। config.json के हर संपादन के बाद इसे पुनः आरंभ करें:
# Is it loaded?
launchctl list | grep ai.nanobot.gateway
# Restart after every config.json edit (config is read at startup only)
launchctl kickstart -k gui/$(id -u)/ai.nanobot.gateway
# Remove the service
nanobot gateway uninstall-service --manager launchd
# Second, isolated instance on the same Mac (own config, workspace, port and LaunchAgent).
# docs/multiple-instances.md: "Each instance must use a different port if they run at the same time"
# nanobot onboard --config ~/.nanobot-telegram/config.json --workspace ~/.nanobot-telegram/workspace
# Merge into ~/.nanobot-telegram/config.json (default gateway port is 18790; change the WebSocket
# channel port too if that instance also enables the WebUI, default 8765):
# { "gateway": { "host": "127.0.0.1", "port": 18792 },
# "channels": { "websocket": { "port": 8766 } } }
# nanobot gateway install-service --manager launchd --name nanobot-telegram \
# --config ~/.nanobot-telegram/config.json --workspace ~/.nanobot-telegram/workspace
# (for a one-off foreground run instead: nanobot gateway --config ~/.nanobot-telegram/config.json --port 18792)
हल्का विकल्प: nanobot gateway --background
README इसे एकमात्र ऐसी कमांड कहता है जो साझा गेटवे को स्थायी बैकग्राउंड मोड में प्रमोट करती है। यह टेस्टिंग के लिए सुविधाजनक है लेकिन OS-सुपरवाइज़्ड नहीं है, इसलिए रीबूट के बाद यह अपने आप वापस नहीं आता, इसे LaunchAgent के साथ न मिलाएं:
nanobot gateway --background
nanobot gateway status
nanobot gateway logs
nanobot gateway restart
nanobot gateway stop
nanobot अपडेट करें
कोई nanobot update कमांड नहीं है: उसी तरीके से अपग्रेड करें जिससे आपने इंस्टॉल किया था। प्रोजेक्ट आपसे साप्ताहिक रूप से अपडेट जांचने को कहता है और 2026 में पांच सुरक्षा एडवाइज़री प्रकाशित की हैं, इसलिए तुरंत अपग्रेड करें। पहले रिलीज़ नोट्स पढ़ें, v0.3.5 ने सेशन फ़ाइलों को sessions/<workspace-id>/ में ले जाया और आपसे कॉन्फ़िगरेशन, workspaces और सेशन स्टोरेज का बैकअप लेने और पहले पुरानी प्रोसेस रोकने को कहता है। इसलिए गेटवे रोकें (LaunchAgent अनइंस्टॉल करें, या बैकग्राउंड मोड में nanobot gateway stop), बैकअप लें, अपग्रेड करें, फिर इसे दोबारा शुरू करें, कभी भी दो वर्शन को एक ही workspace में एक साथ न लिखने दें:
# 1. Stop the old gateway first (v0.3.5 release notes: never let two versions write the same workspace)
nanobot gateway uninstall-service --manager launchd # LaunchAgent (nanobot documents no plain launchd stop)
# nanobot gateway stop # --background mode
# 2. Back up config, workspace and sessions
cp -R ~/.nanobot ~/nanobot-backup-$(date +%F)
# 3. Upgrade with the same method you installed with
curl -fsSL https://raw.githubusercontent.com/HKUDS/nanobot/main/scripts/install.sh | sh
# or: uv tool upgrade nanobot-ai
# or: pipx upgrade nanobot-ai
# or: python3 -m pip install -U nanobot-ai
nanobot --version
nanobot onboard --refresh # merge new default config fields, keep your values
# 4. Start again so the new code and config are loaded
nanobot gateway install-service --manager launchd # LaunchAgent: reinstall (RunAtLoad starts it)
# nanobot gateway --background # --background mode
7. सामान्य समस्याओं का निवारण
इंस्टॉलर रुक जाता है, pip इंस्टॉल करने से इनकार करता है, या nanobot PATH में नहीं है
यदि python3 का वर्शन 3.11 से पुराना है तो इंस्टॉलर रुक जाता है, एक वर्तमान Python इंस्टॉल करें और PYTHON वेरिएबल को उसकी ओर पॉइंट करें। externally-managed-environment त्रुटि का जवाब कभी भी --break-system-packages से न दें: uv, pipx या एक वर्चुअल एनवायरनमेंट उपयोग करें। यदि नए shell में कमांड गायब है, तो इंस्टॉलर द्वारा प्रिंट किया गया runner उपयोग करें:
# Python too old? Point the installer at a 3.11+ interpreter
python3 --version
PYTHON=/path/to/python3.12 sh -c "$(curl -fsSL https://raw.githubusercontent.com/HKUDS/nanobot/main/scripts/install.sh)"
# "externally-managed-environment" → isolated install, never --break-system-packages
uv tool install nanobot-ai
# or: pipx install nanobot-ai
# "curl: command not found" → skip the script
uv tool install nanobot-ai
# `nanobot` not on PATH in a new shell
uv tool run --from nanobot-ai nanobot --version
pipx run --spec nanobot-ai nanobot --version
~/.nanobot/venv/bin/python -m nanobot --version
export PATH="$HOME/.local/bin:$PATH"
पहला संदेश विफल होता है: गलत मॉडल, ConfigLoadError या एक प्रोवाइडर त्रुटि
एक प्रोवाइडर की key के साथ दूसरे प्रोवाइडर का मॉडल ID पहली बार चलाने पर सबसे आम विफलता है। एक अनसेट ${VAR} placeholder स्टार्टअप को ConfigLoadError के साथ तुरंत विफल कर देता है, LaunchAgent के तहत कोई एनवायरनमेंट पास नहीं होता, इसलिए वहां एक स्टोर की गई key उपयोग करें। मॉडल को कॉल किए बिना सेटअप जांचें, फिर verbose लॉगिंग के साथ पुनः प्रयास करें:
# Validate without spending tokens
nanobot status
# Provider and model must match in the preset: provider "anthropic" ↔ "claude-opus-4-5",
# provider "openai" ↔ "gpt-5", provider "openrouter" ↔ "anthropic/claude-opus-4.5", provider "ollama" ↔ "llama3.2"
# ConfigLoadError at startup = a ${VAR} placeholder is unset in the starting process' environment
# (the generated LaunchAgent passes no environment → store the key in config.json + chmod 600)
# Watch the gateway with verbose logging (also verifies MCP servers)
nanobot gateway --verbose
Telegram bot चुप रहता है
आमतौर पर तीन में से एक कारण: telegram फ़ीचर उसी Python एनवायरनमेंट में कभी सक्षम नहीं किया गया, आपका DM अभी भी pairing स्वीकृति की प्रतीक्षा में है, या आपने गेटवे को पुनः आरंभ किए बिना config.json संपादित किया (config केवल स्टार्टअप पर पढ़ा जाता है)। चैनल सूची जांचें, लंबित pairings स्वीकृत करें और पुनः आरंभ करें:
# Is the channel enabled and listed?
nanobot plugins enable telegram
nanobot channels status
# Pending pairing? Approve it from the CLI
nanobot agent -m "/pairing approve ABCD-EFGH"
# Edited config.json? Restart the gateway
launchctl kickstart -k gui/$(id -u)/ai.nanobot.gateway
# or: nanobot gateway restart
# Token revoked? Generate a new one via @BotFather (/mybots > API Token) and update config.json
# WhatsApp "login expired"? nanobot channels login whatsapp
LaunchAgent शुरू नहीं होता या रीबूट के बाद गेटवे गायब है
address already in use का मतलब है कि मैन्युअल रूप से शुरू किया गया गेटवे (फ़ोरग्राउंड या --background) अभी भी पोर्ट पकड़े हुए है, उसे रोकें और फिर से इंस्टॉल करें। रीबूट के बाद, gui-डोमेन LaunchAgent केवल तभी शुरू होता है जब आपका user लॉगिन हो। लॉग ~/.nanobot/logs/ में हैं; WebUI पोर्ट 8765 पर है जबकि 18790 केवल health endpoint है:
# "address already in use" → a manual gateway still holds the port
nanobot gateway stop
nanobot gateway install-service --manager launchd
# Loaded? Logs?
launchctl list | grep ai.nanobot.gateway
ls ~/.nanobot/logs/
# Gone after a reboot: a gui-domain LaunchAgent starts once your user has logged in.
# If your setup allows automatic login for the nanobot user, enable it and reboot-test;
# WARNING: auto-login trades console-login security for reboot survival, confirm with your ops policy first.
# Ports: WebUI 8765 (localhost), health endpoint 18790, `nanobot serve` API 8900
# Generic SSH tip (not a nanobot feature): reach the localhost WebUI from your laptop
# ssh -N -L 8765:127.0.0.1:8765 admin@your-server-ip → http://127.0.0.1:8765
8. क्लाउड VPS बनाम लागत विश्लेषण
nanobot स्वयं मुफ़्त है (MIT)। आप होस्ट और LLM उपयोग के लिए भुगतान करते हैं। नीचे दी गई होस्ट तुलना हमारी OpenClaw और Hermes गाइड्स की क्लाउड VPS रेंज का पुनः उपयोग करती है; LLM API उपयोग आपके प्रोवाइडर द्वारा अलग से बिल किया जाता है और दोनों होस्ट पर समान है, जब तक कि आप Mac mini पर एक लोकल Ollama मॉडल न चलाएं, जिस स्थिति में इन्फरेंस की लागत $0 है। nanobot कोई RAM या CPU फ़ुटप्रिंट आंकड़े प्रकाशित नहीं करता (यह स्वयं को केवल अल्ट्रा-लाइटवेट बताता है), इसलिए नीचे प्लान साइज़िंग गुणात्मक है।
| उपयोग मामला | AI कॉल/माह | क्लाउड VPS लागत | MyRemoteMac लागत | मासिक बचत |
|---|---|---|---|---|
| व्यक्तिगत सहायक (होस्टेड API मॉडल) | ~500 कॉल | $120/माह (बेसिक GPU VPS) | $85/माह (Mac mini M4) | $35/माह |
| टीम bot + शेड्यूल किए गए automations | ~5,000 कॉल | $200/माह | $85/माह (Mac mini M4) | $115/माह |
| लोकल Ollama मॉडल + एजेंट एक ही मशीन पर | असीमित (लोकल) | $350+/माह (GPU VPS) | $149/माह (Mac mini M6) | $201+/माह |
| कई आइसोलेटेड इंस्टेंस, भारी स्वचालन | 10,000+ कॉल | $600+/माह | $149/माह (Mac mini M6) | $451+/माह |
मान्यताएं: VPS कीमतें वही रेंज हैं जो हमारी गाइड्स में GPU-सक्षम AI-टियर इंस्टेंस के लिए उपयोग की जाती हैं और किसी विशिष्ट प्रदाता के कोटेशन नहीं हैं; MyRemoteMac कीमतें USD में वर्तमान मासिक दरें हैं (1 Gbps शामिल, Mac mini M6 22 सितंबर 2026 से उपलब्ध)। M4/M6 का विभाजन एक अनुशंसा है, मापी गई आवश्यकता नहीं: होस्टेड प्रोवाइडर पर एक व्यक्तिगत bot के लिए Mac mini M4 पर्याप्त से अधिक है; M6 तब चुनें जब वही मशीन एक लोकल Ollama मॉडल या कई nanobot इंस्टेंस भी चलाए।
निष्कर्ष: एक समर्पित Mac mini हर उपयोग स्तर पर GPU VPS से कम खर्चीला है, और nanobot की preset-आधारित fallback chains आपको नियमित काम को एक मुफ़्त लोकल Ollama preset पर रूट करने देती हैं जबकि कठिन प्रश्नों के लिए एक होस्टेड frontier मॉडल रखा जा सकता है, सब कुछ ऐसे हार्डवेयर पर जो केवल आपका है।
9. nanobot बनाम OpenClaw
दोनों ओपन-सोर्स (MIT), सेल्फ-होस्टेड, हमेशा-चालू व्यक्तिगत AI एजेंट हैं जो आपके चैट ऐप्स से संचालित होते हैं, दोनों एक लंबे समय तक चलने वाला गेटवे चलाते हैं और दोनों अपना स्वयं का launchd LaunchAgent पंजीकृत करते हैं (ai.nanobot.gateway बनाम ai.openclaw.gateway)। nanobot का README तो nanobot gateway को OpenClaw से आने वालों के लिए जाना-पहचाना एंट्री पॉइंट तक कहता है। अंतर स्टैक और पिच में है। OpenClaw Node.js (26.1+ या Homebrew के माध्यम से 24.16+) पर TypeScript है और npm से इंस्टॉल होता है; nanobot PyPI (nanobot-ai) से Python 3.11+ है, जो एक वन-लाइन स्क्रिप्ट, uv या pipx से इंस्टॉल होता है, बिना किसी Node.js के। OpenClaw की पिच व्यापकता और बड़ा समुदाय है; nanobot की पिच एक छोटा, पढ़ने योग्य कोर, प्रति-चैनल pairing और एक बिल्ट-इन macOS Seatbelt exec सैंडबॉक्स (v0.3.5 में नया), एक Mac पर कई आइसोलेटेड इंस्टेंस (multiple-instances.md) और एक Python SDK तथा OpenAI-संगत API है। OpenClaw iMessage का समर्थन करता है; nanobot नहीं।
यदि आप सबसे अधिक फ़ीचर वाला असिस्टेंट और बड़ा समुदाय तथा चैनल सूची चाहते हैं, तो हमारी Mac mini पर OpenClaw गाइड पढ़ें। यदि आप एक लाइटवेट Python एजेंट चाहते हैं जिसे आप शुरू से अंत तक पढ़ सकें, कई सैंडबॉक्स्ड इंस्टेंस, या उसी Mac mini पर Ollama, तो nanobot बेहतर विकल्प है। एक तीसरा विकल्प, Hermes Agent, हमारी Mac mini पर Hermes गाइड में शामिल है। Mac mini, launchd सर्विस और लोकल Ollama विकल्प तीनों के लिए समान हैं।
10. FAQ
क्या nanobot उपयोग के लिए मुफ़्त है?
हां। nanobot MIT-लाइसेंस प्राप्त और मुफ़्त है; आप केवल अपने चुने हुए प्रोवाइडर के LLM उपयोग के लिए भुगतान करते हैं। आपके Mac mini पर एक लोकल Ollama मॉडल चलाना मुफ़्त है। Mac mini स्वयं MyRemoteMac पर $85/माह (M4) या $149/माह (M6) से है, USD में बिल किया जाता है।
nanobot के लिए मुझे कौन सा Mac mini कॉन्फ़िगरेशन चुनना चाहिए?
nanobot कोई RAM या CPU आंकड़े प्रकाशित नहीं करता, इसलिए यह गुणात्मक है। होस्टेड प्रोवाइडर (Anthropic, OpenAI, OpenRouter, आदि) पर एक व्यक्तिगत bot के लिए $85/माह पर एंट्री Mac mini M4 (16 GB / 256 GB) समझदार विकल्प है: एजेंट को अल्ट्रा-लाइटवेट बताया गया है। Mac mini M6 ($149/माह से) तब चुनें जब वही मशीन एक लोकल Ollama मॉडल या कई आइसोलेटेड nanobot इंस्टेंस भी चलाए, क्योंकि लोकल इन्फरेंस को ही मेमोरी और कंप्यूट की ज़रूरत होती है।
क्या nanobot Mac mini के रीबूट के बाद भी चलता रहता है?
nanobot gateway install-service --manager launchd द्वारा लिखे गए LaunchAgent में RunAtLoad true और KeepAlive है, इसलिए launchd इसे आपके user सेशन के लोड होने पर शुरू करता है और क्रैश के बाद पुनः आरंभ करता है। यह gui डोमेन में रहता है, जिसका मतलब है कि रीबूट के बाद यह केवल तभी लौटता है जब आपका user लॉगिन करे। यदि आपका सेटअप उस user के लिए automatic login की अनुमति देता है, तो इसे सक्षम करने से रीबूट के बाद सर्विस बहाल हो जाती है, लेकिन ध्यान रखें कि auto-login रीबूट-सर्वाइवल के बदले कंसोल-लॉगिन सुरक्षा का त्याग करता है, इसलिए पहले इसे अपनी ops नीति के विरुद्ध जांचें, फिर एक बार रीबूट-टेस्ट करें और launchctl list | grep ai.nanobot.gateway से सत्यापित करें। nanobot gateway --background सुपरवाइज़्ड नहीं है और रीबूट के बाद नहीं चलता।
क्या nanobot API के बजाय लोकल मॉडल उपयोग कर सकता है?
हां। nanobot में एक समर्पित ollama प्रोवाइडर है (डिफ़ॉल्ट apiBase http://localhost:11434/v1) और साथ ही अन्य लोकल OpenAI-संगत सर्वरों के लिए lm_studio, vllm और OVMS। Mac mini पर Ollama शुरू करें, preset के model को कच्चे Ollama टैग पर सेट करें (उदाहरण के लिए llama3.2) और provider को ollama पर पिन करें। अधिकांश Ollama सेटअप को किसी API key की ज़रूरत नहीं होती। यदि टूल-उपयोग वाले टर्न धीमे हैं, तो डॉक्स कहते हैं कि मेमोरी या कॉन्टेक्स्ट सेटिंग्स छूने से पहले मॉडल का chat template और prompt-cache का पुनः उपयोग जांचें।
nanobot किन मैसेजिंग प्लेटफ़ॉर्म का समर्थन करता है?
आधिकारिक चैट-ऐप्स डॉक्यूमेंटेशन एक ही गेटवे द्वारा सेवा दिए जाने वाले Telegram, Discord, Slack, WhatsApp, WeChat/Weixin, WeCom, Feishu/Lark, DingTalk, QQ (और Napcat/OneBot), Matrix/Element, Email, Mattermost, Linear, Microsoft Teams, Signal और Mochat सूचीबद्ध करता है, साथ ही बंडल्ड WebUI, नेटिव टर्मिनल UI और nanobot serve के माध्यम से एक OpenAI-संगत HTTP API। iMessage समर्थित नहीं है।
क्या मेरे Mac mini पर एक AI एजेंट को shell एक्सेस देना सुरक्षित है?
केवल प्रलेखित गार्डरेल के साथ: nanobot को एक स्टैंडर्ड user के रूप में चलाएं (कभी root नहीं), tools.restrictToWorkspace को true और tools.exec.sandbox को seatbelt पर सेट करें (macOS पर प्रोजेक्ट की प्रोडक्शन अनुशंसा), या यदि एजेंट को shell की बिल्कुल ज़रूरत नहीं है तो tools.exec.enable को false पर सेट करें। हर चैनल पर pairing-only मोड या एक संकीर्ण allowFrom रखें, कभी wildcard नहीं, WebUI और API को localhost पर बाउंड रखें, प्रति मिनट 6 संदेशों की डिफ़ॉल्ट rate limit रखें, अपने प्रोवाइडर पर एक खर्च सीमा सेट करें, और साप्ताहिक अपडेट करें, 2026 में पांच एडवाइज़री प्रकाशित हुई हैं, इसलिए 0.3.5 या नया चलाएं।
11. स्रोत और आगे पढ़ें
इस गाइड की हर कमांड, पथ और config key आधिकारिक nanobot रिपॉज़िटरी (README और docs/ ट्री, 28 सितंबर 2026 को पढ़ा गया, v0.3.5) और इसके SECURITY.md से आती है। रिपॉज़िटरी के डॉक्स नवीनतम पैकेज रिलीज़ से नए हो सकते हैं, इसलिए यदि कोई कमांड अलग व्यवहार करे तो रिपॉज़िटरी से दोबारा जांचें।
- nanobot GitHub रिपॉज़िटरी (HKUDS/nanobot): इंस्टॉल और क्विक स्टार्ट
- क्विक स्टार्ट (config.json, workspace, उसी तरीके से अपग्रेड)
- डिप्लॉयमेंट: macOS LaunchAgent (install-service, launchctl kickstart)
- कॉन्फ़िगरेशन संदर्भ (secrets, ${VAR} placeholders, MCP, web टूल)
- कॉन्फ़िगरेशन: सुरक्षा (restrictToWorkspace, Seatbelt सैंडबॉक्स, exec.enable)
- प्रोवाइडर (presets, fallback chains, provider/model mismatch)
- प्रोवाइडर: Ollama (apiBase /v1, कच्चा मॉडल टैग)
- चैट ऐप्स (Telegram, Discord, Slack, WhatsApp, allowFrom, pairing)
- गाइड: Telegram AI एजेंट (pairing-only मोड, हेडलेस सेटअप)
- गाइड: सुरक्षित लोकल AI एजेंट (localhost binding, प्रति trust boundary एक workspace)
- CLI संदर्भ (onboard --wizard / --refresh, gateway, plugins, channels)
- WebUI (127.0.0.1:8765, tokenIssueSecret, LAN एक्सेस)
- Automations (cron टूल, लोकल triggers, heartbeat)
- एक मशीन पर कई इंस्टेंस
- समस्या निवारण (Python 3.11+, externally-managed-environment, पोर्ट)
- SECURITY.md (कभी root के रूप में न चलाएं, chmod 600/700, ज्ञात सीमाएं)
- सुरक्षा एडवाइज़री (2026 में पांच प्रकाशित)
- रिलीज़ v0.3.5 (15 सितंबर 2026: sessions लेआउट, Seatbelt, gateway lifetime)
- PyPI: nanobot-ai (Python 3.11+ आवश्यक, macOS 13+ wheels)
संबंधित गाइड्स
Mac mini पर OpenClaw इंस्टॉल करें
Node.js/npm पर पूर्ण-फ़ीचर वाला सेल्फ-होस्टेड AI एजेंट हार्नेस, वही Mac mini रेसिपी, अपने स्वयं के gateway-install LaunchAgent के साथ।
Mac mini पर Hermes Agent इंस्टॉल करें
Nous Research का स्व-सुधार करने वाला Python एजेंट: वन-लाइन इंस्टॉलर, Telegram और Discord, launchd और समर्पित Mac mini पर लोकल Ollama।
Mac mini M4 पर LLMs चलाएं
शून्य-लागत AI इन्फरेंस के लिए Apple Silicon पर नेटिव रूप से Ollama, llama.cpp और लोकल भाषा मॉडल चलाएं।
Mac mini M6 किराए पर लें
Apple का नवीनतम Mac mini, समर्पित 1:1, $149/माह से, वह विकल्प जब nanobot उसी मशीन पर एक लोकल Ollama मॉडल के साथ चलता है।