Skip to content

Latest commit

 

History

History
1197 lines (891 loc) · 71 KB

File metadata and controls

1197 lines (891 loc) · 71 KB

🌍 English | Español | Français | Italiano | Português | Deutsch | Русский | हिन्दी | 中文 | 日本語 | 한국어

HolyClaude HolyClaude

HolyClaude Banner

License: MIT Docker Pulls Full Image Slim Image
GitHub Stars Twitter Follow PayPal Buy Me A Coffee Website GitHub Release Issues Contributors

कॉन्फ़िगर करना बंद करें। बनाना शुरू करें।

एक कमांड। पूरा AI डेवलपमेंट वर्कस्टेशन। Claude Code, वेब UI, हेडलेस ब्राउज़र, 7 AI CLIs, 50+ डेव टूल्स — कंटेनराइज़्ड और तैयार।

आप इसे मैन्युअली सेट अप करने में 2 घंटे लगाने वाले थे। या बस docker compose up कर सकते हैं।

आपकी मौजूदा Claude Code सब्सक्रिप्शन के साथ काम करता है। Max/Pro प्लान, API key — जो भी आपके पास है, यह बस काम करता है।


यह क्या है?

आप इसे जानते हैं। आप Claude Code चाहते हैं। लेकिन आप इसे ब्राउज़र में भी चाहते हैं। स्क्रीनशॉट और टेस्टिंग के लिए हेडलेस ब्राउज़र के साथ। Playwright कॉन्फ़िगर के साथ। हर AI CLI के साथ। TypeScript, Python, डिप्लॉयमेंट टूल्स, डेटाबेस क्लाइंट्स, GitHub CLI के साथ।

तो आप चीजें इंस्टॉल करना शुरू करते हैं। एक-एक करके। फिर Chromium लॉन्च नहीं होता क्योंकि Docker की शेयर्ड मेमोरी 64MB है। फिर Xvfb कॉन्फ़िगर नहीं है। फिर कंटेनर के अंदर का UID आपके होस्ट से मेल नहीं खाता और सब कुछ permission denied है। फिर आपको पता चलता है कि Claude Code का इंस्टॉलर रुक जाता है जब WORKDIR root-owned हो। फिर SQLite आपके NAS माउंट पर लॉक हो जाता है। फिर—

HolyClaude वह कंटेनर है जो मैंने उन सभी समस्याओं को हल करने के बाद बनाया।

मैं इसे हफ्तों से अपने सर्वर पर रोज़ाना चला रहा हूं। हर बग को हिट किया गया, डायग्नोज़ किया गया, और ठीक किया गया। हर एज केस को संभाला गया। हर "Docker में यह क्यों काम नहीं करता" का जवाब दिया गया।

आप इसे पुल करते हैं। आप इसे चलाते हैं। आप अपना ब्राउज़र खोलते हैं। आप बनाते हैं।

💳 अपनी मौजूदा सब्सक्रिप्शन का उपयोग करें

यह असली Claude Code CLI चलाता है। कोई wrapper नहीं। कोई proxy नहीं। कोई नकल नहीं।

आपका मौजूदा Anthropic अकाउंट सीधे काम करता है:

  • Claude Max/Pro प्लान — CloudCLI वेब UI के ज़रिए authenticate करें (OAuth), डेस्कटॉप Claude Code जैसा ही
  • Anthropic API key — वेब UI में अपनी API key डालें, हमेशा की तरह वही बिलिंग
  • कोई अतिरिक्त लागत नहीं — HolyClaude मुफ़्त और ओपन सोर्स है। आप Anthropic को सिर्फ उसी चीज़ के लिए पे करते हैं जो आप use करते हैं, जैसा आप पहले से करते हैं।

HolyClaude आपके credentials को नहीं छूता। वे आपके bind-mounted volume (./data/claude/) में locally स्टोर होते हैं, वैसे ही जैसे bare metal पर होते।

↑ शीर्ष पर वापस जाएं


सामग्री तालिका

अनुभाग
त्वरित शुरुआत
💻 प्लेटफ़ॉर्म समर्थन
🌟 HolyClaude क्यों
💳 सब्सक्रिप्शन और प्रमाणीकरण
📦 इमेज वेरिएंट
🐳 Docker Compose — त्वरित
🐋 Docker Compose — पूर्ण
🔧 पर्यावरण वेरिएबल्स
🚀 अंदर क्या है
🤖 AI CLI प्रदाता
🦙 Ollama का उपयोग
🏗️ आर्किटेक्चर
📁 प्रोजेक्ट संरचना
💾 डेटा और स्थायित्व
🔒 अनुमतियां
🛡️ Remote Access और Exposure
🔔 सूचनाएं
🔄 अपग्रेड करना
🚧 समस्या निवारण
⚠️ ज्ञात समस्याएं
🛠️ लोकल बिल्ड
📊 विकल्प
🚀 रोडमैप
🏆 HolyClaude से बनाया
🤝 योगदान
❤️ समर्थन
📜 थर्ड-पार्टी सॉफ़्टवेयर
📄 लाइसेंस

↑ शीर्ष पर वापस जाएं


⚡ त्वरित शुरुआत

1. HolyClaude के लिए एक फ़ोल्डर बनाएं:

mkdir holyclaude && cd holyclaude

2. एक docker-compose.yaml फ़ाइल बनाएं। नीचे दिए गए टेम्पलेट में से एक कॉपी करें:

3. पुल करें और शुरू करें:

docker compose up -d

4. वेब UI खोलें:

http://localhost:3001

5. एक CloudCLI अकाउंट बनाएं (10 सेकंड लगते हैं), अपने Anthropic अकाउंट से साइन इन करें, और आप live हैं।

कोई .env फ़ाइलें नहीं। कोई प्री-कॉन्फ़िगरेशन नहीं। शुरू करने से पहले 40 पेज के डॉक्स पढ़ने की ज़रूरत नहीं। यह बस चलता है।

अपने network के बाहर से access करना चाहते हैं? Port-forward मत करें। Remote Access और Exposure देखें — Tailscale या Cloudflare Tunnel use करें।

↑ शीर्ष पर वापस जाएं


💻 प्लेटफ़ॉर्म समर्थन

प्लेटफ़ॉर्म स्थिति नोट्स
Linux (amd64) ✅ पूरी तरह समर्थित नेटिव परफॉर्मेंस, अनुशंसित
Linux (arm64) ✅ पूरी तरह समर्थित Raspberry Pi 4+, Oracle Cloud, AWS Graviton
macOS (Docker Desktop) ✅ पूरी तरह समर्थित Apple Silicon और Intel via Docker Desktop
Windows (WSL2 + Docker Desktop) ✅ पूरी तरह समर्थित WSL2 backend आवश्यक
Synology / QNAP NAS ✅ पूरी तरह समर्थित SMB माउंट के लिए CHOKIDAR_USEPOLLING=true उपयोग करें
Kubernetes 🔜 जल्द आ रहा है Helm chart योजनाबद्ध

↑ शीर्ष पर वापस जाएं


🌟 HolyClaude क्यों

मैंने यह इसलिए बनाया क्योंकि मैं हर बार एक ही सेटअप दोबारा करते-करते थक गया था। Claude Code इंस्टॉल करना, एक वेब UI वायर करना, Docker में Chromium कॉन्फ़िगर करना, permission issues ठीक करना, process supervision डीबग करना। हर बार।

तो मैंने एक कंटेनर बनाया जो यह सब करता है। और फिर मैंने हर संभव बग को हिट किया ताकि आपको न करना पड़े।

HolyClaude खुद करना
सेटअप 30 सेकंड 1-2 घंटे (अगर अच्छा जाए)
Claude Code प्री-इंस्टॉल्ड, प्री-कॉन्फ़िगर्ड, तैयार इंस्टॉल करें, कॉन्फ़िगर करें, इंस्टॉलर हैंग डीबग करें, WORKDIR ठीक करें
Web UI CloudCLI plugins के साथ शामिल एक वेब UI ढूंढें, इंस्टॉल करें, कॉन्फ़िगर करें, Claude से जोड़ें
हेडलेस ब्राउज़र Chromium + Xvfb + Playwright, कॉन्फ़िगर्ड Chromium इंस्टॉल करें, Xvfb इंस्टॉल करें, display :99 कॉन्फ़िगर करें, shm ठीक करें, sandbox ठीक करें, seccomp ठीक करें...
AI CLIs 7 providers, एक कंटेनर हर एक को 3 package managers में अलग-अलग इंस्टॉल करें
Dev tools 50+ टूल्स, तैयार अगले एक घंटे के लिए apt-get install / npm i -g / pip install
Process management s6-overlay (auto-restart, graceful shutdown) अपना supervisord config लिखें या Docker restart काम करने की उम्मीद रखें
Persistence Bind mounts, credentials सब कुछ survive करते हैं Docker volumes समझें, "यह directory क्यों है file नहीं" डीबग करें
अपडेट docker pull && docker compose up -d 50 टूल्स मैन्युअली अपडेट करें, प्रार्थना करें कुछ टूटे नहीं
Multi-arch AMD64 + ARM64 प्रार्थना करें कि आपका Dockerfile ARM पर बिल्ड हो

हर मैन्युअल सेटअप की आखिरी पंक्ति होती है "मेरी मशीन पर काम करता है।" HolyClaude हर मशीन पर काम करता है।

↑ शीर्ष पर वापस जाएं


💳 सब्सक्रिप्शन और प्रमाणीकरण

HolyClaude Anthropic का आधिकारिक Claude Code CLI चलाता है। आपका मौजूदा अकाउंट out of the box काम करता है।

क्या काम करता है:

प्रमाणीकरण विधि कैसे लागत
Claude Max/Pro प्लान (सब्सक्रिप्शन) CloudCLI वेब UI के ज़रिए साइन इन करें — डेस्कटॉप जैसा ही OAuth flow आपकी मौजूदा सब्सक्रिप्शन, कोई अतिरिक्त शुल्क नहीं
Anthropic API key वेब UI में अपनी API key पेस्ट करें Pay-per-use, वही Anthropic बिलिंग

क्या काम नहीं करता:

क्यों
Claude के लिए OpenAI API key अलग कंपनी, अलग API। OpenAI keys Codex CLI के साथ काम करती हैं (जो भी प्री-इंस्टॉल्ड है)

ChatGPT Plus/Pro सब्सक्राइबर्स: आपकी सब्सक्रिप्शन Codex CLI के साथ काम करती है। अपने ChatGPT अकाउंट से authenticate करने के लिए कंटेनर के अंदर codex login --device-auth चलाएं।

अन्य AI CLIs शामिल हैं:

CLI आपको क्या चाहिए
Gemini CLI Google AI API key (GEMINI_API_KEY)
OpenAI Codex OpenAI API key (OPENAI_API_KEY) या ChatGPT Plus/Pro सब्सक्रिप्शन (codex login --device-auth)
Cursor Cursor API key (CURSOR_API_KEY)
TaskMaster AI आपकी AI provider keys का उपयोग करता है (Anthropic, OpenAI, आदि)
Junie JetBrains अकाउंट (JetBrains AI सब्सक्रिप्शन)
OpenCode opencode TUI के ज़रिए कॉन्फ़िगर करें (कई providers समर्थित)

HolyClaude मुफ़्त और ओपन सोर्स है। आप अपने AI providers को उपयोग के लिए पे करते हैं, जैसा आप पहले से करते हैं। हम आपके credentials को proxy, intercept, या touch नहीं करते। वे आपके local bind mount में रहते हैं।

↑ शीर्ष पर वापस जाएं


📦 इमेज वेरिएंट

दो विकल्प। समान गुणवत्ता। अपना वज़न वर्ग चुनें।

Tag आपको क्या मिलता है किसके लिए सबसे अच्छा
latest सब कुछ प्री-इंस्टॉल्ड — हर टूल, हर लाइब्रेरी, हर CLI अधिकांश उपयोगकर्ता। ज़ीरो wait time। Claude को कभी रुककर कुछ इंस्टॉल नहीं करना पड़ता।
slim केवल core tools — Claude अतिरिक्त चीजें on-demand इंस्टॉल करता है छोटा VPS, सीमित disk, मीटर्ड bandwidth
X.Y.Z पूर्ण इमेज, pinned version Production stability — आप तय करते हैं कब अपडेट करना है
X.Y.Z-slim Slim इमेज, pinned version Production + छोटा footprint
# Full — batteries included (अनुशंसित)
docker pull coderluii/holyclaude

# Slim — lean and mean
docker pull coderluii/holyclaude:slim

latest हमेशा पूर्ण इमेज है। Slim उपयोगकर्ता: चिंता न करें — जब आप Claude से कुछ ऐसा करवाते हैं जिसके लिए कोई missing टूल चाहिए, तो वह सेकंडों में इंस्टॉल हो जाता है। आपको वही क्षमताएं मिलती हैं, बस छोटा initial download।

↑ शीर्ष पर वापस जाएं


🐳 Docker Compose — त्वरित

"मैं बस इसे चलाना चाहता हूं" टेम्पलेट। इस पूरे block को एक docker-compose.yaml फ़ाइल में कॉपी करें:

# ==============================================================================
# HolyClaude — Quick Start
# Just run: docker compose up -d
# Then open: http://localhost:3001
# ==============================================================================

services:
  holyclaude:
    image: coderluii/holyclaude:latest     # Full image (use :slim for smaller download)
    container_name: holyclaude
    hostname: holyclaude
    restart: unless-stopped
    shm_size: 2g                           # Chromium needs this — don't remove
    network_mode: bridge
    cap_add:
      - SYS_ADMIN                          # Required: Chromium sandboxing
      - SYS_PTRACE                         # Required: debugging tools
    security_opt:
      - seccomp=unconfined                 # Required: Chromium in Docker
    ports:
      - "3001:3001"                        # CloudCLI web UI
    volumes:
      #
      # ./data/claude — Your settings, credentials, API keys, and Claude's memory.
      #                  This is what survives container rebuilds.
      #                  NEVER delete this folder — your auth lives here.
      #
      - ./data/claude:/home/claude/.claude
      #
      # ./workspace — Your code. All projects go here.
      #               Bind-mounted so you can access files from your host.
      #
      - ./workspace:/workspace
    environment:
      - TZ=UTC                             # Your timezone (e.g., America/New_York, Europe/London)

फिर:

docker compose up -d

http://localhost:3001 खोलें। CloudCLI अकाउंट बनाएं। अपने Anthropic अकाउंट से साइन इन करें। कुछ बनाएं।

बस यही पूरा सेटअप है। आप कर चुके हैं।

SYS_ADMIN + seccomp=unconfined क्यों? Chromium को Docker के अंदर चलाने के लिए ये चाहिए — यह किसी भी कंटेनराइज़्ड ब्राउज़र के लिए मानक है (Playwright docs, Puppeteer docs, हर CI pipeline जो browser tests चलाती है)। इनके बिना, Chromium startup पर crash हो जाता है। यह HolyClaude के लिए कोई अनोखा security risk नहीं है।

shm_size: 2g क्यों? Docker डिफ़ॉल्ट रूप से containers को 64MB shared memory देता है। Chromium tab rendering के लिए /dev/shm का भारी उपयोग करता है। 64MB पर, tabs randomly crash होते हैं। किसी भी Chromium-in-Docker सेटअप के लिए 2GB अनुशंसित न्यूनतम है।

↑ शीर्ष पर वापस जाएं


🐋 Docker Compose — पूर्ण

वही इमेज, हर विकल्प exposed। इस पूरे block को एक docker-compose.yaml फ़ाइल में कॉपी करें:

# ==============================================================================
# HolyClaude — Full Configuration
# All options documented inline.
# Detailed docs: https://github.com/CoderLuii/HolyClaude/blob/master/docs/configuration.md
# ==============================================================================

services:
  holyclaude:
    image: coderluii/holyclaude:latest     # Full image (use :slim for smaller download)
    container_name: holyclaude
    hostname: holyclaude
    restart: unless-stopped
    shm_size: 2g                           # Chromium shared memory — increase to 4g for heavy browser use
    network_mode: bridge
    cap_add:
      - SYS_ADMIN                          # Required: Chromium sandboxing
      - SYS_PTRACE                         # Required: debugging tools (strace, lsof)
    security_opt:
      - seccomp=unconfined                 # Required: Chromium syscall requirements
    ports:
      #
      # CloudCLI web UI — this is the only port you need.
      # Override the host-side port from `.env` if 3001 is already in use.
      #
      - "${HOLYCLAUDE_HOST_PORT:-3001}:3001"
      #
      # Dev server ports — uncomment as needed.
      # These let you access dev servers running inside the container from your host browser.
      #
      # - "3000:3000"                      # Next.js / Express
      # - "4321:4321"                      # Astro
      # - "5173:5173"                      # Vite
      # - "8787:8787"                      # Wrangler (Cloudflare Workers)
      # - "9229:9229"                      # Node.js debugger
    volumes:
      #
      # PERSISTENT DATA
      #
      # ./data/claude — Settings, credentials, API keys, Claude's memory file.
      #                  Survives container rebuilds. NEVER delete this folder.
      #                  Override the host path from `.env` if you want it elsewhere.
      #
      - ${HOLYCLAUDE_HOST_CLAUDE_DIR:-./data/claude}:/home/claude/.claude
      #
      # ./workspace — Your code and projects. Everything you build goes here.
      #               Accessible from your host machine.
      #               Override the host path from `.env` if you want a different root.
      #
      - ${HOLYCLAUDE_HOST_WORKSPACE_DIR:-./workspace}:/workspace
    environment:
      #
      # TIMEZONE
      # Full list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
      #
      - TZ=UTC
      #
      # PERFORMANCE
      # Node.js heap memory limit in MB. Increase if you work on large monorepos
      # and hit out-of-memory errors. 4096 (4GB) is a solid default.
      #
      - NODE_OPTIONS=--max-old-space-size=4096
      #
      # USER MAPPING
      # Match these to your host user so files created inside the container
      # have the right ownership on your host. Run `id -u` and `id -g` on your host.
      #
      - PUID=1000
      - PGID=1000
      #
      # SMB/CIFS NETWORK MOUNTS
      # Only enable these if your volumes are on a NAS, Samba share, or CIFS mount.
      # They enable polling-based file watching since network mounts don't support inotify.
      # Leave commented out for local storage — polling uses more CPU.
      #
      # - CHOKIDAR_USEPOLLING=1
      # - WATCHFILES_FORCE_POLLING=true
      #
      # NOTIFICATIONS (optional)
      # Get notified when Claude finishes a task or hits an error.
      # Uses Apprise — supports 100+ services. Also requires creating a flag file
      # inside the container: touch ~/.claude/notify-on
      #
      # - NOTIFY_DISCORD=discord://webhook_id/webhook_token
      # - NOTIFY_TELEGRAM=tg://bot_token/chat_id
      # - NOTIFY_PUSHOVER=pover://user_key@app_token
      # - NOTIFY_SLACK=slack://token_a/token_b/token_c
      # - NOTIFY_EMAIL=mailto://user:pass@gmail.com?to=you@gmail.com
      # - NOTIFY_GOTIFY=gotify://hostname/token
      # - NOTIFY_URLS=                                   # catch-all: comma-separated Apprise URLs
      #
      # AI PROVIDER KEYS (optional)
      # Claude Code can authenticate via web UI (OAuth) or ANTHROPIC_API_KEY.
      # Set these if you want to use additional AI CLIs or API-based auth.
      #
      # - GEMINI_API_KEY=your_key
      # - OPENAI_API_KEY=your_key
      # - CURSOR_API_KEY=your_key

फिर:

docker compose up -d

अगर आप compose edit किए बिना host-side port या bind-mount paths बदलना चाहते हैं, तो .env.example को .env में कॉपी करें और सेट करें:

HOLYCLAUDE_HOST_PORT=3003
HOLYCLAUDE_HOST_CLAUDE_DIR=./data/claude
HOLYCLAUDE_HOST_WORKSPACE_DIR=./workspace

ये values Docker Compose द्वारा host पर पढ़ी जाती हैं। ये container environment variables नहीं हैं।

हर section क्या नियंत्रित करता है:

Section यह क्या करता है कब बदलें
Timezone Container clock हमेशा — अपने local TZ पर सेट करें
Performance Node.js memory ceiling सिर्फ तब जब बड़े projects पर OOM errors हों
User mapping Container और host के बीच file permissions अगर आपको "permission denied" मिले (id -u और id -g अपने host पर चलाएं)
SMB/CIFS File watcher polling mode सिर्फ तब जब आपके volumes NAS या network share पर हों
Notifications Apprise के ज़रिए push alerts (Discord, Telegram, Slack, Email, 100+ services) अगर आप जाना चाहते हैं और जानना चाहते हैं कि Claude कब done हो
AI providers Gemini, Codex, Cursor, Junie, OpenCode के लिए API keys अगर आप Claude के अलावा अन्य AI CLIs उपयोग करना चाहते हैं

हर एक environment variable optional है। Container सिर्फ TZ=UTC के साथ perfectly चलता है। बाकी सब में sensible defaults हैं या वेब UI के ज़रिए handle होते हैं।

↑ शीर्ष पर वापस जाएं


🔧 पर्यावरण वेरिएबल्स

पूरा संदर्भ। हर variable, इसका default क्या है, यह क्या करता है।

Variable Default यह क्या करता है
TZ UTC Container timezone
PUID 1000 Container user ID — permission issues से बचने के लिए अपने host से मिलाएं
PGID 1000 Container group ID — permission issues से बचने के लिए अपने host से मिलाएं
NODE_OPTIONS --max-old-space-size=4096 Node.js heap memory limit in MB
GIT_USER_NAME HolyClaude User Git commit author (पहले boot पर एक बार सेट)
GIT_USER_EMAIL noreply@holyclaude.local Git commit email (पहले boot पर एक बार सेट)
CHOKIDAR_USEPOLLING (unset) SMB/CIFS के लिए 1 सेट करें — polling file watchers enable करता है
WATCHFILES_FORCE_POLLING (unset) SMB/CIFS के लिए true सेट करें — Python polling enable करता है
NOTIFY_DISCORD (unset) सूचनाओं के लिए Discord webhook URL
NOTIFY_TELEGRAM (unset) सूचनाओं के लिए Telegram bot URL
NOTIFY_PUSHOVER (unset) सूचनाओं के लिए Pushover URL
NOTIFY_SLACK (unset) सूचनाओं के लिए Slack webhook URL
NOTIFY_EMAIL (unset) सूचनाओं के लिए Email (SMTP) URL
NOTIFY_GOTIFY (unset) सूचनाओं के लिए Gotify URL
NOTIFY_URLS (unset) Catch-all — comma-separated Apprise URLs
ANTHROPIC_API_KEY (unset) Anthropic API key (वेब UI OAuth के विकल्प के रूप में)
ANTHROPIC_AUTH_TOKEN (unset) Anthropic auth token (API key के विकल्प के रूप में)
ANTHROPIC_BASE_URL (unset) Custom Anthropic API endpoint (proxies, private deployments)
CLAUDE_CODE_USE_BEDROCK (unset) Amazon Bedrock backend उपयोग करने के लिए 1 सेट करें
CLAUDE_CODE_USE_VERTEX (unset) Google Vertex AI backend उपयोग करने के लिए 1 सेट करें
GEMINI_API_KEY (unset) Google Gemini API key
OPENAI_API_KEY (unset) OpenAI API key (Codex CLI के लिए, या ChatGPT सब्सक्रिप्शन के लिए codex login --device-auth उपयोग करें)
CURSOR_API_KEY (unset) Cursor API key
OLLAMA_HOST (unset) Ollama endpoint URL (जैसे, http://host.docker.internal:11434)

↑ शीर्ष पर वापस जाएं


🚀 अंदर क्या है

यह एक minimal container नहीं है। यह एक पूरा development workstation है।

दोनों variants (full + slim)

Node.js 22 LTS + npm global packages
Package किसके लिए है
typescript, tsx TypeScript compilation और execution
pnpm Fast, disk-efficient package manager
vite, esbuild Lightning-fast build tools
eslint, prettier Code quality और formatting
serve, nodemon Static file server, auto-restart dev server
concurrently Multiple scripts को parallel में चलाएं
dotenv-cli .env files से env vars load करें
Python 3 packages
Package किसके लिए है
requests, httpx HTTP clients
beautifulsoup4, lxml Web scraping और HTML parsing
Pillow Image processing (pre-compiled — कोई wait नहीं)
pandas, numpy Data manipulation (pre-compiled — सच में, आप इन्हें runtime पर pip install नहीं करना चाहते)
openpyxl Excel files read/write
python-docx Word documents read/write
jinja2, markdown Templating और markdown rendering
pyyaml, python-dotenv Config file parsing
rich, click, tqdm खूबसूरत CLIs और progress bars
playwright Browser automation (Chromium पहले से configured और तैयार)
System tools
टूल किसके लिए है
git, gh Version control + GitHub CLI (terminal से PRs, issues, releases)
ripgrep (rg), fd, fzf Blazing-fast search — Claude इनका लगातार उपयोग करता है
bat, tree, jq Better cat (syntax highlighting), directory trees, JSON processing
curl, wget HTTP downloads
tmux Terminal multiplexer — background में चीजें चलाएं
htop, lsof, strace Process monitoring और debugging
imagemagick Image conversion (convert, identify, mogrify)
chromium Headless browser — screenshots, Playwright, Lighthouse
psql, redis-cli, sqlite3 सीधे databases से बात करें
openssh-client चीजों में SSH करें
AI CLIs — हर major provider
CLI Command किसके लिए है
Claude Code claude मुख्य event — आप इसके अंदर चल रहे हैं
Gemini CLI gemini Google का AI coding agent
OpenAI Codex codex OpenAI का coding agent
Cursor cursor Cursor का AI agent
TaskMaster AI task-master Task planning और orchestration
Junie junie JetBrains का AI coding agent
OpenCode opencode Open source AI agent (multiple providers)

सात AI CLIs। एक container। एक Tab दबाकर उनके बीच switch करें। कोई अन्य Docker image यह नहीं करती।

केवल Full image (अतिरिक्त packages)

Full image में ऊपर सब कुछ, plus:

अतिरिक्त npm packages — deployment, ORMs, performance
Package किसके लिए है
wrangler, @cloudflare/next-on-pages Cloudflare Workers deployment
vercel Vercel deployment
netlify-cli Netlify deployment
az Cloud deployment और management के लिए Azure CLI
prisma, drizzle-kit दो सबसे popular Node.js ORMs
pm2 Production process manager
eas-cli Expo / React Native builds
lighthouse, @lhci/cli Performance auditing (Chromium पहले से मौजूद है)
sharp-cli Image processing CLI
json-server, http-server Mock REST APIs, static file serving
@marp-team/marp-cli Markdown से presentation slides
अतिरिक्त Python packages — PDFs, data viz, web frameworks
Package किसके लिए है
reportlab, weasyprint, cairosvg, fpdf2, PyMuPDF, pdfkit, img2pdf हर major PDF library। उन्हें generate करें, पढ़ें, convert करें, merge करें।
xlsxwriter, xlrd Excel formats जो openpyxl cover नहीं करता
matplotlib, seaborn Data visualization और charts
python-pptx PowerPoint generation
fastapi, uvicorn Python web framework
httpie Human-friendly HTTP client (curl जैसा लेकिन पढ़ने योग्य)
अतिरिक्त system packages — media, documents
Package किसके लिए है
pandoc किसी भी document format के बीच convert करें (markdown, HTML, PDF, docx, epub...)
ffmpeg Video और audio processing (extract, convert, transcode)
libvips-dev High-performance image processing library

Slim उपयोगकर्ता: कोई package missing है? Claude से पूछें। यह npm/pip packages सेकंडों में इंस्टॉल करता है। System packages (pandoc, ffmpeg) में 1-2 मिनट लगते हैं। आपको वही क्षमताएं मिलती हैं — full image में बस ज़ीरो wait time है।

↑ शीर्ष पर वापस जाएं


🤖 AI CLI प्रदाता

सात AI CLIs। एक container। कोई अन्य Docker image आपको यह नहीं देती।

Provider Command कैसे authenticate करें सब्सक्रिप्शन काम करती है?
Claude Code claude CloudCLI वेब UI (OAuth) हां — Max/Pro प्लान या API key
Gemini CLI gemini GEMINI_API_KEY env var API key (pay-per-use)
OpenAI Codex codex OPENAI_API_KEY या codex login --device-auth हां — ChatGPT Plus/Pro/Team/Enterprise या API key
Cursor cursor CURSOR_API_KEY env var API key
TaskMaster AI task-master मौजूदा AI provider keys उपयोग करता है configured keys के साथ काम करता है
Junie junie JetBrains AI सब्सक्रिप्शन JetBrains अकाउंट आवश्यक
OpenCode opencode TUI के ज़रिए configure करें कई providers समर्थित

Claude Code primary CLI है। बाकी इसलिए हैं क्योंकि कभी-कभी आप दूसरी राय चाहते हैं, या किसी specific model की खूबियां चाहते हैं, या outputs की तुलना कर रहे हैं। एक Tab दूर सभी का होना ही पूरा point है।

↑ शीर्ष पर वापस जाएं


🦙 Ollama का उपयोग

HolyClaude Anthropic सब्सक्रिप्शन के विकल्प के रूप में Ollama के साथ काम करता है। दो environment variables सेट करें और local या cloud models उपयोग करें।

पूरा setup guide देखें: docs/ollama.md

↑ शीर्ष पर वापस जाएं


🏗️ आर्किटेक्चर

graph TB
    subgraph Docker Container
        EP["entrypoint.sh"] --> BS["bootstrap.sh\n(first boot only)"]
        EP --> S6["s6-overlay\n(PID 1)"]
        S6 --> CC["CloudCLI\n(:3001)"]
        S6 --> XV["Xvfb\n(:99)"]
        CC --> CLAUDE["Claude Code CLI"]
        CLAUDE --> TOOLS["Dev Tools\n(Node, Python, Git...)"]
        CLAUDE --> CHROME["Chromium\n(headless)"]
        XV -.-> CHROME
    end

    subgraph Host
        DATA["./data/claude"] -.->|bind mount| HOME["~/.claude"]
        WS["./workspace"] -.->|bind mount| WORK["/workspace"]
    end

    USER["Browser"] -->|":3001"| CC

    style S6 fill:#2d3748,color:#fff
    style CC fill:#6366f1,color:#fff
    style CLAUDE fill:#f59e0b,color:#000
Loading

टुकड़े कैसे fit होते हैं

  1. Container शुरू होता हैentrypoint.sh root के रूप में चलता है। UID/GID को आपके host user से मिलाने के लिए remap करता है, आवश्यक files pre-creates करता है (Docker के "directory के रूप में create करना" bug को रोकता है), check करता है कि यह first boot है या नहीं।

  2. केवल पहले boot परbootstrap.sh एक बार चलता है। Default settings, memory template copy करता है, git identity configure करता है। एक sentinel file (.holyclaude-bootstrapped) बनाता है ताकि यह दोबारा कभी न चले। उस बिंदु से आपके customizations सुरक्षित हैं।

  3. s6-overlay PID 1 के रूप में कार्यभार संभालता है — यह supervisord नहीं है। यह s6-overlay है, जो Docker के लिए purpose-built है। CloudCLI और Xvfb को supervise करता है। Crash पर auto-restart करता है। Signals forward करता है। Zombies reap करता है। Gracefully shutdown करता है।

  4. CloudCLI वेब UI serve करता है — Port 3001। Claude Code का browser-based interface जिसमें project management, multiple sessions, और plugins (project stats + web terminal शामिल) हैं।

  5. Xvfb एक virtual display प्रदान करता है — Chromium को render करने के लिए एक screen चाहिए, यहां तक कि "headless" mode में भी। Xvfb उसे :99 पर एक 1920x1080 virtual display देता है। इसीलिए Playwright, screenshots, और Lighthouse out of the box काम करते हैं।

पूरे technical deep-dive के लिए docs/architecture.md देखें — जिसमें यह भी शामिल है कि हमने supervisord पर s6 क्यों चुना, plugins image में क्यों baked हैं, और su के बजाय runuser क्यों।

↑ शीर्ष पर वापस जाएं


📁 प्रोजेक्ट संरचना

holyclaude/
├── .github/                 # CI/CD workflows, issue & PR templates
│   ├── FUNDING.yml          # Sponsor/donation links
│   ├── ISSUE_TEMPLATE/      # Bug report, feature request, package request
│   ├── pull_request_template.md
│   ├── SECURITY.md          # Security policy
│   └── workflows/           # Docker build & push automation
├── assets/                  # Logo and banner images
├── config/                  # Claude Code configuration
│   ├── claude-memory-full.md
│   ├── claude-memory-slim.md
│   └── settings.json
├── docs/                    # Extended documentation
│   ├── architecture.md
│   ├── CHANGELOG.md
│   ├── configuration.md
│   ├── dockerhub-description.md
│   ├── ollama.md
│   └── troubleshooting.md
├── scripts/                 # Container lifecycle scripts
│   ├── bootstrap.sh         # First-run setup
│   ├── entrypoint.sh        # Container entrypoint
│   └── notify.py            # Notification helper (Apprise)
├── s6-overlay/              # Process supervision (s6-rc services)
├── Dockerfile               # Single-stage build
├── docker-compose.yaml      # Quick start (minimal config)
├── docker-compose.full.yaml # Full config (all options)
├── LICENSE
└── README.md

↑ शीर्ष पर वापस जाएं


💾 डेटा और स्थायित्व

क्या कहां (container) कहां (host) rebuild survive करता है?
Settings, credentials, API keys /home/claude/.claude ./data/claude हां
Claude Code session (OAuth, onboarding) /home/claude/.claude.json ./data/claude/.claude.json.persist हां
आपका code और projects /workspace ./workspace हां
CloudCLI अकाउंट /home/claude/.cloudcli (default में केवल container में — नीचे देखें) नहीं (opt-in उपलब्ध)

docker compose down && docker compose up से क्या बचता है:

  • आपकी Anthropic authentication और API keys
  • Claude Code settings, memory (CLAUDE.md) और OAuth session (दोबारा login नहीं)
  • ./workspace में आपका सारा code
  • Git configuration
  • Codex, Gemini और Cursor CLI auth (v1.1.7 से)

आप क्या दोबारा करेंगे (10 सेकंड):

  • CloudCLI वेब अकाउंट — quick signup, बस इतना ही (जब तक नीचे persistence enable न करें)

पहले-boot setup को दोबारा trigger करना:

# sentinel file delete करें — पूरा folder नहीं
rm ./data/claude/.holyclaude-bootstrapped
docker compose restart holyclaude

./data/claude/ को पूरी तरह कभी न delete करें। वहां आपके credentials रहते हैं। अगर आप fresh bootstrap चाहते हैं तो sentinel file delete करें। Settings reset करने के लिए specific config files delete करें। लेकिन पूरा folder कभी न मिटाएं।

CloudCLI account को persist करना (optional, केवल local storage)

Default में, CloudCLI account database (~/.cloudcli) container-local है और rebuild पर wipe हो जाती है। Account दोबारा बनाने में 10 सेकंड लगते हैं, इसलिए ज़्यादातर लोग इसे ऐसे ही छोड़ देते हैं।

अगर आप चाहते हैं कि यह rebuilds के बाद भी बचे, तो अपने compose file में एक named Docker volume जोड़ें:

services:
  holyclaude:
    volumes:
      - ./data/claude:/home/claude/.claude
      - ./workspace:/workspace
      - cloudcli-data:/home/claude/.cloudcli   # add this line

volumes:
  cloudcli-data:                                # and this block

./data/cloudcli को network share (NAS, SMB/CIFS, NFS) पर bind-mount न करें। CloudCLI अपना account SQLite में store करता है, और SQLite का file locking network mounts पर काम नहीं करता। आपको लगातार database is locked errors आएंगी। Named volumes Docker engine के local filesystem पर रहते हैं, इसीलिए यह काम करता है — NAS पर pointing bind mounts काम नहीं करेंगे।

Local SSD path पर bind mount भी ठीक है, बस किसी भी network share से दूर रखें।

↑ शीर्ष पर वापस जाएं


🔒 अनुमतियां

Claude Code डिफ़ॉल्ट रूप से allowEdits mode में चलता है। यह सबसे सुरक्षित उपयोगी setting है:

कार्य अनुमति है?
Files पढ़ना हां
Files edit / create करना हां
Shell commands चलाना पहले आपसे पूछता है
Packages install करना पहले आपसे पूछता है

पूरी bypass चाहते हैं? (power users)

यह वैसे ही है जैसे मैं personally चलाता हूं। अपने host पर ./data/claude/settings.json edit करें:

{
  "permissions": {
    "defaultMode": "bypassPermissions"
  }
}

Bypass mode का मतलब है Claude बिना confirmation के कोई भी command execute करता है। Fast, powerful, और exactly वही जो आप चाहते हैं अगर आप जो बना रहे हैं उस पर भरोसा करते हैं। लेकिन allowEdits एक कारण से safe default है।

↑ शीर्ष पर वापस जाएं


🛡️ Remote Access और Exposure

HolyClaude CloudCLI को port 3001 से bind करता है। Default में यह केवल local है — अपने laptop या home server पर चलाने के लिए ठीक है जिसे आप SSH से access करते हैं।

जिस moment आप इसे अपने network के बाहर से access करना चाहते हैं, यह section पढ़ें।

इसे public internet पर port-forward न करें

सीधे कहता हूं: अपने router में hole मत करो और 3001 को open internet पर expose मत करो। Password के साथ भी नहीं। क्यों:

  • CloudCLI web terminal plugin के ज़रिए full shell expose करता है
  • यह arbitrary code run कर सकता है, packages install कर सकता है, और आपका पूरा /workspace read/write कर सकता है
  • इसमें आपके Anthropic OAuth tokens और API keys हैं
  • Basic auth passwords brute-force, credential-stuff होते हैं और logs से निकाले जाते हैं
  • एक leaked password = कोई और आपके पैसे से आपकी machine पर paid Claude Code instance चला रहा है

Password एक speed bump है, दरवाज़ा नहीं। HolyClaude को SSH session की तरह treat करें: बिना proper tunnel के open internet पर कभी नहीं।

इसके बजाय proper tunnel use करें

ये दो options हैं जो मैं actually recommend करता हूं:

Option किसके लिए क्यों
Tailscale Personal use, small teams WireGuard mesh VPN। अपने server + laptop/phone पर Tailscale install करें, और आप http://holyclaude:3001 को कहीं से भी access कर सकते हैं जैसे LAN पर हों। कोई open ports नहीं, कोई DNS नहीं, कोई certs नहीं। Personal use के लिए free।
Cloudflare Tunnel दूसरों के साथ share करना, public hostname Cloudflare connection proxy करता है, इसलिए port 3001 बंद रहता है। आपको HTTPS के साथ real domain मिलता है, और आप Cloudflare Access (Google/GitHub SSO) सामने रख सकते हैं। Free tier ज़्यादातर personal use cover करता है।

दोनों आपको देते हैं:

  • Router पर zero open ports
  • End to end encrypted transport
  • Real identity-based auth (shared password नहीं)
  • Audit logs

अगर आप इसे directly expose करने पर जोर देते हैं (please मत करें)

अगर आपको absolutely tunnel skip करना है (self-hosting tutorial, isolated lab network, जो भी हो), कम से कम:

  1. इसके सामने reverse proxy रखें (Caddy, nginx, Traefik) real TLS के साथ
  2. Firewall या proxy level पर IP allowlisting जोड़ें — केवल आपके known IPs
  3. bypassPermissions: false enable करें (default) ताकि shell commands अभी भी confirm करें
  4. अपने Anthropic credentials rotate करें अगर कुछ गड़बड़ लगे
  5. Cloudflare Access या similar SSO के पीछे run करें, basic auth नहीं

इन सबके बावजूद, risk surface बहुत बड़ा है। Tailscale या Cloudflare Tunnel use करें। ये free हैं, setup में पांच मिनट लगते हैं, और यही मैं personally use करता हूं।

↑ शीर्ष पर वापस जाएं


🔔 सूचनाएं

अपने computer से दूर जाएं और जानें कि Claude कब done हो गया। Notifications के लिए Apprise का उपयोग करता है — Discord, Telegram, Slack, Email, Pushover, Gotify, और अधिक सहित 100+ services support करता है।

Enable करने के लिए:

  1. अपने compose environment में एक या अधिक NOTIFY_* variables जोड़ें:
    - NOTIFY_DISCORD=discord://webhook_id/webhook_token
    - NOTIFY_TELEGRAM=tg://bot_token/chat_id
  2. Container के अंदर: touch ~/.claude/notify-on

सभी supported variables और URL formats के लिए configuration docs देखें।

Disable करने के लिए: rm ~/.claude/notify-on

वे events जो notifications trigger करते हैं:

Event क्या हुआ
stop Claude ने current task finish कर दी
error एक tool use failure हुई

Configure न होने पर पूरी तरह silent। कोई NOTIFY_* vars नहीं? कोई flag file नहीं? Zero network calls। Zero log spam। Zero overhead।

↑ शीर्ष पर वापस जाएं


🔄 अपग्रेड करना

# Latest image pull करें
docker compose pull

# नई image के साथ container recreate करें
docker compose up -d

आपका data ./data/claude और ./workspace में persist रहता है — upgrading केवल container replace करती है, आपकी files नहीं।

latest के बजाय specific version pin करने के लिए:

image: coderluii/holyclaude:1.1.2   # instead of :latest

↑ शीर्ष पर वापस जाएं


🚧 समस्या निवारण

CloudCLI गलत default directory दिखाता है

CloudCLI /workspace के बजाय /home/claude पर खुलता है।

कारण: WORKSPACES_ROOT CloudCLI process तक नहीं पहुंच रहा। Docker-compose env vars s6-overlay के s6-setuidgid के ज़रिए pass नहीं होते — यह design द्वारा clean environment में चलता है (security feature, bug नहीं)।

Fix: HolyClaude में पहले से handled। s6 run script process environment में सीधे WORKSPACES_ROOT=/workspace सेट करता है।

SQLite "database is locked"

कारण: SMB/CIFS network mounts पर SQLite databases। CIFS उस file-level locking को support नहीं करता जो SQLite को चाहिए।

Fix: Network shares पर SQLite databases store न करें। HolyClaude इसी कारण container-local storage में .cloudcli रखता है। अगर आपके अपने SQLite databases /workspace में NAS पर हैं, तो उन्हें local path पर move करें।

Chromium crashes / blank pages / tab failures

कारण: अपर्याप्त shared memory। Docker defaults to 64MB।

Fix: अपने compose file में shm_size: 2g ensure करें। Heavy browser use (कई tabs, complex pages) के लिए 4g तक बढ़ाएं।

File watchers changes detect नहीं कर रहे (hot reload टूटा हुआ)

कारण: SMB/CIFS network mounts inotify support नहीं करते।

Fix: अपने compose environment में polling enable करें:

- CHOKIDAR_USEPOLLING=1
- WATCHFILES_FORCE_POLLING=true

नोट: Polling inotify से ज़्यादा CPU उपयोग करता है। केवल network mounts पर enable करें।

Permission denied errors

कारण: Container UID/GID host file ownership से मेल नहीं खाता।

Fix:

# आपकी host machine पर
id -u  # → यह आपका PUID है
id -g  # → यह आपका PGID है

इन्हें अपने compose file में सेट करें:

- PUID=1000
- PGID=1000
Docker .claude.json को directory के रूप में create करता है

कारण: अगर container start से पहले bind-mount target file exist नहीं करती, Docker इसे helpfully एक directory के रूप में create करता है। धन्यवाद, Docker।

Fix: पहले से handled — entrypoint.sh इसे file के रूप में pre-create करता है।

सभी SMB/CIFS gotchas और उन bugs के पूरे इतिहास सहित complete guide के लिए docs/troubleshooting.md देखें जिन्हें हमने encounter और fix किया।

↑ शीर्ष पर वापस जाएं


⚠️ ज्ञात समस्याएं

ये HolyClaude bugs नहीं हैं — ये upstream issues या intentional trade-offs हैं।

समस्या क्यों समाधान
"Continue in Shell" button टूटा हुआ CloudCLI upstream bug (terminal init में race condition) इसके बजाय Web Terminal plugin उपयोग करें (pre-installed)
Cursor CLI "Command timeout" कोई API key configure नहीं — केवल cosmetic, किसी चीज़ को affect नहीं करता CURSOR_API_KEY सेट करें या ignore करें
Rebuild पर CloudCLI अकाउंट खो जाता है SQLite network mounts पर persist नहीं कर सकता — intentional trade-off अकाउंट दोबारा बनाएं (~10 सेकंड)
Web push notifications "not supported" CloudCLI में browser limitation, standard behavior इसके बजाय Apprise notifications उपयोग करें (देखें सूचनाएं)

↑ शीर्ष पर वापस जाएं


🛠️ लोकल बिल्ड

Docker Hub से pull करने के बजाय खुद image build करना चाहते हैं? करें:

git clone https://github.com/CoderLuii/HolyClaude.git
cd holyclaude

# Full image build करें
docker build -t holyclaude .

# Slim image build करें
docker build --build-arg VARIANT=slim -t holyclaude:slim .

# ARM के लिए build करें (Apple Silicon, Raspberry Pi, AWS Graviton)
docker buildx build --platform linux/arm64 -t holyclaude .

फिर अपने compose file में image: coderluii/holyclaude:latest के बजाय image: holyclaude उपयोग करें।

↑ शीर्ष पर वापस जाएं


📊 विकल्प

HolyClaude अन्य approaches से कैसे compare करता है?

Approach Web UI Multi-AI Pre-configured tools Headless browser One command setup Persistence
HolyClaude CloudCLI 5 CLIs 50+ tools Chromium + Xvfb + Playwright docker compose up Bind mounts
Claude Code (bare metal) नहीं नहीं खुद install करें खुद install करें Multi-step install Manual
Claude Code + oh-my-openagent नहीं हां (multi-model) कुछ नहीं npm install Manual
DIY Docker + Claude Code शायद शायद जो आप add करें अगर आप configure करें अगर आप Dockerfile लिखें अगर आप volumes set up करें
Cursor IDE Built-in Cursor only IDE-bundled नहीं Download app App data

HolyClaude coding agents के साथ compete नहीं कर रहा — यह वह infrastructure layer है जो उन सभी को बेहतर काम करने देती है। यह वह container है जिसके अंदर आप उन्हें चलाते हैं।

↑ शीर्ष पर वापस जाएं


🚀 रोडमैप

आगे क्या आ रहा है:

स्थिति Feature
🔜 ARM-native builds — optimized native ARM64 images, सिर्फ emulated नहीं
🔜 VS Code tunnel integration — VS Code desktop से connect करने के लिए built-in VS Code Server या tunnel
🔜 Notification routing — event type के अनुसार अलग notification destinations (errors Telegram पर, completions Discord पर)

कोई idea है? Discussion शुरू करें या feature request करें

↑ शीर्ष पर वापस जाएं


🏆 HolyClaude से बनाया

HolyClaude से कुछ build कर रहे हैं? हम देखना चाहेंगे।

showcase label के साथ एक issue खोलें या अपना project यहां add करने के लिए PR submit करें:

यहां अपना project add करने वाले पहले बनें।

↑ शीर्ष पर वापस जाएं


🤝 योगदान

Contributions स्वागत योग्य हैं। यह project वास्तविक दैनिक उपयोग से जन्मा है, और यह तब बेहतर होता है जब अधिक लोग इसे उपयोग करते हैं और edge cases ढूंढते हैं।

  1. Fork करें
  2. Branch करें (git checkout -b feature/something)
  3. Commit करें
  4. Push करें
  5. PR करें

Bugs, feature requests, questions: issue खोलें

संपर्क करें

Channel किसके लिए उपयोग करें
GitHub Discussions Questions, अपना setup share करें, ideas
Issues Bug reports, feature और package requests
Security Advisories Vulnerability reports (private)

कोई टूल add करवाना चाहते हैं?

📦 Package Request issue template उपयोग करें। Package name, install method, और कौन सा variant (full/slim) target होना चाहिए, include करें।

↑ शीर्ष पर वापस जाएं


❤️ समर्थन

HolyClaude मुफ़्त, ओपन सोर्स है, और एक developer द्वारा maintain किया जाता है जो इसे हर दिन उपयोग करता है।

अगर इसने आपका time बचाया, तो यहां आप कैसे help कर सकते हैं:

  • इस repo को Star करें — visibility के लिए यह सबसे बड़ी चीज़ है जो आप कर सकते हैं
  • Share करें — किसी दोस्त को बताएं, post करें, tweet करें
  • Issues खोलें — bug reports और feature requests HolyClaude को सभी के लिए बेहतर बनाते हैं
  • Contribute करें — PRs हमेशा welcome हैं

PayPal Buy Me A Coffee

↑ शीर्ष पर वापस जाएं


📜 थर्ड-पार्टी सॉफ़्टवेयर

HolyClaude Docker image में third-party software शामिल है, जिनमें से प्रत्येक अपने own license के अंतर्गत है। Notable components:

Component License Source
CloudCLI GPL-3.0 siteboon/claudecodeui
s6-overlay ISC just-containers/s6-overlay
Node.js MIT nodejs/node

पूरी details के लिए THIRD-PARTY-NOTICES देखें जिसमें modification notices शामिल हैं। HolyClaude का अपना source code MIT licensed है।

↑ शीर्ष पर वापस जाएं


📄 लाइसेंस

MIT — LICENSE देखें। इसे जैसे चाहें उपयोग करें।

↑ शीर्ष पर वापस जाएं



CoderLuii द्वारा बनाया गया · coderluii.dev

यह container वही है जो मैं हर दिन उपयोग करता हूं। अगर इसने आपका आधा भी setup time बचाया जो इसने मेरा बचाया, तो एक star अच्छा लगेगा।