🌍 English | Español | Français | Italiano | Português | Deutsch | Русский | हिन्दी | 中文 | 日本語 | 한국어
OpenCode एक कंटेनर में चलता है जिसमें सब कुछ पहले से इंस्टॉल है। 50+ dev टूल, 10+ AI प्रोवाइडर, हेडलेस ब्राउज़र, परसिस्टेंट स्टेट। किसी भी मशीन पर डालें और ठीक वहीं से शुरू करें जहाँ छोड़ा था।
आपकी Claude सब्स्क्रिप्शन के साथ काम करता है। Claude Auth प्लगइन इनेबल करें और अपना मौजूदा Claude Max/Pro प्लान उपयोग करें। अलग API key की जरूरत नहीं।
मल्टी-एजेंट ऑर्केस्ट्रेशन बिल्ट-इन। oh-my-openagent इनेबल करें और OpenCode को पैरेलल एग्जीक्यूशन के साथ एक कोऑर्डिनेटेड एजेंट सिस्टम में बदलें।
आप अपना एनवायरनमेंट वापस पाने में एक घंटा लगाने वाले थे। या बस docker compose up चला सकते हैं।
सेल्फ-होस्ट नहीं करना चाहते? HolyCode Cloud आ रहा है। वही टूल, ज़ीरो सेटअप। अर्ली एक्सेस फ्री है।
आप जानते हैं यह कहानी। आप अपना dev एनवायरनमेंट बिल्कुल सही बनाते हैं। फिर मशीन बदलते हैं। या कंटेनर री-बिल्ड करते हैं। या आपका सिस्टम तय करता है कि आज उसका आखिरी दिन है।
अचानक आप टूल री-इंस्टॉल कर रहे हैं। कॉन्फ़िग फ़ाइलें ढूंढ रहे हैं। API keys दोबारा डाल रहे हैं। सोच रहे हैं कि ripgrep PATH में क्यों नहीं है। पता लगा रहे हैं कि Chromium क्यों लॉन्च नहीं होगा क्योंकि Docker कंटेनरों को 64MB shared memory देता है। फिर Xvfb कॉन्फ़िगर नहीं है। फिर कंटेनर के अंदर UID आपके होस्ट से मेल नहीं खाता और सब कुछ permission denied है।
HolyCode वह कंटेनर है जो मैंने इन सभी समस्याओं को हल करके बनाया।
यह OpenCode को रैप करता है, एक AI कोडिंग एजेंट जिसमें बिल्ट-इन वेब UI है। आपकी सभी सेटिंग्स, सेशन, MCP कॉन्फ़िग, प्लगइन और टूल हिस्ट्री कंटेनर के बाहर bind mount में रहती है। री-बिल्ड करें, अपडेट करें, या नई मशीन पर जाएं। आपकी स्थिति वापस आ जाती है।
यही विचार HolyClaude जैसा है लेकिन Claude Code की बजाय OpenCode को रैप करता है। और यहाँ बात यह है: OpenCode एक प्रोवाइडर तक सीमित नहीं है। इसे Anthropic, OpenAI, Google Gemini, Groq, AWS Bedrock, या Azure OpenAI पर पॉइंट करें। एक ही कंटेनर, मॉडल आपकी पसंद का।
50+ dev टूल, दो लैंग्वेज रनटाइम, हेडलेस ब्राउज़र स्टैक और प्रोसेस सुपरविज़न। सब कनेक्टेड, सब पहले बूट पर तैयार। मैं इसे अपने सर्वर पर चला रहा हूँ। हर बग हिट, डायग्नोज़ और फिक्स किया जा चुका है।
आप पुल करते हैं। चलाते हैं। ब्राउज़र खोलते हैं। बनाते हैं।
| अनुभाग | |
|---|---|
| 1 | त्वरित शुरुआत |
| 2 | HolyCode Cloud |
| 3 | प्लेटफ़ॉर्म सपोर्ट |
| 4 | HolyCode क्यों |
| 5 | प्रोवाइडर सपोर्ट |
| 6 | Docker Compose - त्वरित |
| 7 | Docker Compose - पूर्ण |
| 8 | एनवायरनमेंट वेरिएबल |
| 9 | अंदर क्या है |
| 10 | बंडल्ड सर्विसेज़ |
| 11 | आर्किटेक्चर |
| 12 | CLI उपयोग |
| 13 | डेटा और परसिस्टेंस |
| 14 | परमिशन |
| 15 | अपग्रेड करना |
| 16 | समस्या निवारण |
| 17 | लोकल बिल्ड |
| 18 | योगदान |
| 19 | सपोर्ट |
| 20 | लाइसेंस |
चरण 1. इमेज पुल करें।
docker pull coderluii/holycode:latestचरण 2. docker-compose.yaml बनाएं।
services:
holycode:
image: coderluii/holycode:latest
container_name: holycode
restart: unless-stopped
shm_size: 2g
ports:
- "4096:4096"
volumes:
- ./data/opencode:/home/opencode
- ./local-cache/opencode:/home/opencode/.cache/opencode
- ./workspace:/workspace
environment:
- PUID=1000
- PGID=1000
- ANTHROPIC_API_KEY=your-key-here
चरण 3. शुरू करें।
docker compose up -dhttp://localhost:4096 खोलें। आप तैयार हैं।
शिप किया गया
docker-compose.yaml${ANTHROPIC_API_KEY}सिंटैक्स का उपयोग करता है जो आपके शेल एनवायरनमेंट या.envफ़ाइल से पढ़ता है।.env.exampleको.envमें कॉपी करें और अपनी API key भरें।
सेल्फ-होस्ट नहीं करना चाहते? हम HolyCode का मैनेज्ड वर्शन बना रहे हैं।
वही 50+ टूल। वही 10+ प्रोवाइडर। वही परसिस्टेंट स्टेट। कोई Docker नहीं। कोई टर्मिनल नहीं। बस ब्राउज़र खोलें और कोड करें।
Cloud के साथ आपको क्या मिलता है:
- ज़ीरो सेटअप। कोई Docker नहीं, कोई कॉन्फ़िग फ़ाइल नहीं, कोई टर्मिनल कमांड नहीं।
- किसी भी डिवाइस पर काम करता है। लैपटॉप, टैबलेट, फ़ोन। ब्राउज़र खोलें और शुरू करें।
- हमेशा अपडेटेड। लेटेस्ट OpenCode, लेटेस्ट टूल। हम संभाल लेते हैं।
- आपकी स्थिति आपके साथ चलती है। सेशन, सेटिंग्स, MCP कॉन्फ़िग उपयोगों के बीच सेव होते हैं।
अर्ली एक्सेस फ्री है। कोई क्रेडिट कार्ड नहीं चाहिए।
| प्लेटफ़ॉर्म | आर्किटेक्चर | स्थिति |
|---|---|---|
| Linux | amd64 | सपोर्टेड |
| Linux | arm64 | सपोर्टेड |
| macOS (Docker Desktop) | amd64 / arm64 | सपोर्टेड |
| Windows (WSL2) | amd64 | सपोर्टेड |
मैंने यह इसलिए बनाया क्योंकि मैं हर बार वही सेटअप दोबारा करने से थक गया था। OpenCode इंस्टॉल करना, हेडलेस ब्राउज़र वायर करना, परमिशन इश्यू ठीक करना, प्रोसेस सुपरविज़न डीबग करना। हर। बार।
तो मैंने एक कंटेनर बनाया जो यह सब करता है। और फिर मैंने हर संभावित बग का सामना किया ताकि आपको न करना पड़े।
| HolyCode | खुद से | |
|---|---|---|
| पहले काम करने वाले सेशन तक समय | 2 मिनट से कम | 30-60 मिनट |
| Chromium + Xvfb हेडलेस ब्राउज़र | प्री-कॉन्फ़िगर्ड | खुद रिसर्च करें, इंस्टॉल करें, डीबग करें |
| Dev टूल सूट (ripgrep, fzf, lazygit, आदि) | प्री-इंस्टॉल्ड | एक-एक करके ढूंढें और इंस्टॉल करें |
| री-बिल्ड के बीच स्टेट परसिस्टेंस | bind mount के ज़रिए ऑटोमेटिक | मैनुअल bind mounts, गलती आसान |
| UID/GID फ़ाइल परमिशन रीमैपिंग | बिल्ट-इन PUID/PGID | Dockerfile chmod हैक |
| मल्टी-आर्च सपोर्ट | amd64 + arm64 आउट ऑफ बॉक्स | खुद बनाएं और पुश करें |
| अपडेट | docker pull + compose up |
स्क्रैच से री-बिल्ड, उम्मीद करें कुछ न टूटे |
OpenCode प्रोवाइडर-अज्ञेयवादी है। जो API key आप उपयोग करते हैं वह सेट करें और हो गया।
| प्रोवाइडर | एनवायरनमेंट वेरिएबल | नोट्स |
|---|---|---|
| Anthropic | ANTHROPIC_API_KEY |
Claude मॉडल |
| OpenAI | OPENAI_API_KEY |
GPT मॉडल |
| Google Gemini | GEMINI_API_KEY |
Gemini मॉडल |
| Groq | GROQ_API_KEY |
फास्ट इन्फेरेंस |
| AWS Bedrock | AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION |
तीनों सेट करें |
| Azure OpenAI | AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_API_KEY, AZURE_OPENAI_API_VERSION |
तीनों सेट करें |
| GitHub | GITHUB_TOKEN |
OpenAI-कम्पेटिबल एंडपॉइंट के ज़रिए GitHub Copilot |
| Vertex AI | (OpenCode के ज़रिए कॉन्फ़िगर) | Google Vertex AI मॉडल |
| GitHub Models | (OpenCode के ज़रिए कॉन्फ़िगर) | GitHub-होस्टेड मॉडल |
| Ollama | (OpenCode के ज़रिए कॉन्फ़िगर) | Ollama के ज़रिए लोकल मॉडल |
केवल उन प्रोवाइडर की keys सेट करें जो आप वास्तव में उपयोग करते हैं। बाकी सब ऑप्शनल है और इग्नोर होता है।
Vertex AI, GitHub Models और Ollama को OpenCode के प्रोवाइडर सिस्टम के ज़रिए कॉन्फ़िगर किया जाता है। कंटेनर के अंदर opencode providers login चलाएं।
न्यूनतम सेटअप। कॉपी करें, अपनी key भरें, चलाएं।
services:
holycode:
image: coderluii/holycode:latest
container_name: holycode
restart: unless-stopped
shm_size: 2g # Required for Chromium stability
ports:
- "4096:4096" # OpenCode web UI
volumes:
- ./data/opencode:/home/opencode
- ./local-cache/opencode:/home/opencode/.cache/opencode
- ./workspace:/workspace # Your project files
environment:
- PUID=1000
- PGID=1000
- ANTHROPIC_API_KEY=your-key-here # Or swap for any provider key
हर ऑप्शन डॉक्युमेंटेड। docker-compose.yaml में कॉपी करें और जो चाहिए वह अनकमेंट करें।
# HolyCode - Full Configuration Reference
# Copy this file to docker-compose.yaml and customize.
# All options documented. Uncomment what you need.
services:
holycode:
image: coderluii/holycode:latest
container_name: holycode
restart: unless-stopped
shm_size: 2g
ports:
- "4096:4096" # OpenCode web UI
volumes:
# --- Persistent state (all OpenCode data under home dir) ---
- ./data/opencode:/home/opencode # Config, sessions, plugins, all XDG paths
# --- Cache isolation (keeps plugin cache on local disk, avoids CIFS/SMB symlink issues) ---
- ./local-cache/opencode:/home/opencode/.cache/opencode
# --- Workspace ---
- ./workspace:/workspace # Your project files
environment:
# --- Container user ---
- PUID=1000 # Match your host UID for file permissions
- PGID=1000 # Match your host GID for file permissions
# --- Git identity (used on first boot) ---
# - GIT_USER_NAME=Your Name
# - GIT_USER_EMAIL=you@example.com
# --- AI provider API keys (add the ones you use) ---
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-}
# - OPENAI_API_KEY=${OPENAI_API_KEY:-}
# - GEMINI_API_KEY=${GEMINI_API_KEY:-}
# - GROQ_API_KEY=${GROQ_API_KEY:-}
# - GITHUB_TOKEN=${GITHUB_TOKEN:-}
# --- AWS Bedrock (uncomment all 3 for Bedrock) ---
# - AWS_ACCESS_KEY_ID=
# - AWS_SECRET_ACCESS_KEY=
# - AWS_REGION=us-east-1
# --- Azure OpenAI (uncomment all 3 for Azure) ---
# - AZURE_OPENAI_ENDPOINT=
# - AZURE_OPENAI_API_KEY=
# - AZURE_OPENAI_API_VERSION=
# --- OpenCode behavior (set by default in image, override if needed) ---
# - OPENCODE_DISABLE_AUTOUPDATE=true
# - OPENCODE_DISABLE_TERMINAL_TITLE=true
# - OPENCODE_MODEL=claude-sonnet-4-6
# - OPENCODE_PERMISSION=auto
# - OPENCODE_DISABLE_LSP_DOWNLOAD=true
# - OPENCODE_DISABLE_AUTOCOMPACT=true
# - OPENCODE_ENABLE_EXA=true
# --- Web UI Security (basic auth for opencode web) ---
# - OPENCODE_SERVER_PASSWORD=your-password
# - OPENCODE_SERVER_USERNAME=opencode
# --- Claude Auth (use Claude subscription instead of API key) ---
# Reads credentials from ./data/opencode/.claude/.credentials.json
# NOTE: May violate Anthropic TOS. Use at your own risk.
# Toggle on/off with docker compose down && up -d
# - ENABLE_CLAUDE_AUTH=true
# --- oh-my-openagent (multi-agent orchestration for OpenCode) ---
# Installs automatically on first boot when enabled
# Toggle on/off with docker compose down && up -d
# - ENABLE_OH_MY_OPENAGENT=true
| वेरिएबल | डिफ़ॉल्ट | उद्देश्य |
|---|---|---|
PUID |
1000 |
कंटेनर यूज़र UID, सही फ़ाइल ओनरशिप के लिए अपने होस्ट से मिलाएं |
PGID |
1000 |
कंटेनर यूज़र GID, सही फ़ाइल ओनरशिप के लिए अपने होस्ट से मिलाएं |
GIT_USER_NAME |
HolyCode User |
पहले बूट पर कॉन्फ़िगर की गई Git पहचान |
GIT_USER_EMAIL |
noreply@holycode.local |
पहले बूट पर कॉन्फ़िगर की गई Git पहचान |
ANTHROPIC_API_KEY |
(कोई नहीं) | Anthropic Claude |
OPENAI_API_KEY |
(कोई नहीं) | OpenAI GPT मॉडल |
GEMINI_API_KEY |
(कोई नहीं) | Google Gemini |
GROQ_API_KEY |
(कोई नहीं) | Groq फास्ट इन्फेरेंस |
GITHUB_TOKEN |
(कोई नहीं) | GitHub CLI ऑथ और Copilot |
AWS_ACCESS_KEY_ID |
(कोई नहीं) | AWS Bedrock - तीनों AWS वेरिएबल सेट करें |
AWS_SECRET_ACCESS_KEY |
(कोई नहीं) | AWS Bedrock |
AWS_REGION |
(कोई नहीं) | AWS Bedrock रीजन (जैसे us-east-1) |
AZURE_OPENAI_ENDPOINT |
(कोई नहीं) | Azure OpenAI - तीनों Azure वेरिएबल सेट करें |
AZURE_OPENAI_API_KEY |
(कोई नहीं) | Azure OpenAI |
AZURE_OPENAI_API_VERSION |
(कोई नहीं) | Azure OpenAI API वर्शन |
OPENCODE_DISABLE_AUTOUPDATE |
true |
OpenCode को कंटेनर के अंदर सेल्फ-अपडेट करने से रोकें |
OPENCODE_DISABLE_TERMINAL_TITLE |
true |
OpenCode को टर्मिनल टाइटल बदलने से रोकें |
OPENCODE_MODEL |
(कोई नहीं) | डिफ़ॉल्ट मॉडल ओवरराइड करें |
OPENCODE_PERMISSION |
(कोई नहीं) | परमिशन प्रॉम्प्ट स्किप करने के लिए auto सेट करें |
OPENCODE_DISABLE_LSP_DOWNLOAD |
(कोई नहीं) | ऑटोमेटिक LSP सर्वर डाउनलोड डिसेबल करें |
OPENCODE_DISABLE_AUTOCOMPACT |
(कोई नहीं) | ऑटोमेटिक कॉन्टेक्स्ट कंपैक्शन डिसेबल करें |
OPENCODE_ENABLE_EXA |
(कोई नहीं) | Exa वेब सर्च इंटीग्रेशन इनेबल करें |
OPENCODE_SERVER_PASSWORD |
(कोई नहीं) | वेब UI को बेसिक ऑथ से प्रोटेक्ट करें |
OPENCODE_SERVER_USERNAME |
opencode |
वेब UI बेसिक ऑथ के लिए यूज़रनेम |
ENABLE_CLAUDE_AUTH |
(कोई नहीं) | API key की बजाय Claude सब्स्क्रिप्शन उपयोग करने के लिए true सेट करें |
ENABLE_OH_MY_OPENAGENT |
(कोई नहीं) | मल्टी-एजेंट ऑर्केस्ट्रेशन प्लगइन इनेबल करने के लिए true सेट करें |
ENABLE_PAPERCLIP |
(कोई नहीं) | Paperclip डैशबोर्ड और एजेंट बोर्ड शुरू करने के लिए true सेट करें |
PAPERCLIP_PORT |
3100 |
Paperclip के लिए कंटेनर पोर्ट ओवरराइड करें |
PAPERCLIP_INSTANCE_ID |
default |
आइसोलेटेड स्टेट के लिए लोकल Paperclip इंस्टेंस नाम |
ENABLE_HERMES |
(कोई नहीं) | Hermes को बंडल्ड मेटा-एजेंट API के रूप में शुरू करने के लिए true सेट करें |
HERMES_PORT |
8642 |
Hermes के लिए कंटेनर पोर्ट ओवरराइड करें |
HOLYCODE_PLUGIN_UPDATE |
manual |
प्लगइन अपडेट मोड: manual (गायब होने पर इंस्टॉल करें) या auto (बूट पर इंस्टॉल और अपडेट करें) |
प्लगइन टॉगल (
ENABLE_CLAUDE_AUTH,ENABLE_OH_MY_OPENAGENT) कंटेनर रीस्टार्ट पर प्रभावी होते हैं। env var सेट करें औरdocker compose down && up -dचलाएं।
HOLYCODE_PLUGIN_UPDATEप्लगइन पैकेज अपडेट को कंट्रोल करता है।manual(डिफ़ॉल्ट) इनेबल्ड प्लगइन केवल तभी इंस्टॉल करता है जब वे गायब हों।autoगायब प्लगइन इंस्टॉल करता है और हर बूट पर इनेबल्ड प्लगइन अपडेट करता है। यहOPENCODE_DISABLE_AUTOUPDATEसे अलग है, जो केवल OpenCode को प्रभावित करता है।
ENABLE_OH_MY_OPENAGENT=trueप्लगइन इनेबल करता है और बिल्ट-इन/oh-my-openagent-setupस्किल एक्सपोज़ करता है। स्किल केवल तभी दिखती है जब प्लगइन इनेबल हो। इसे~/.config/opencode/oh-my-openagent.jsoncपर प्लगइन-स्पेसिफिक कॉन्फ़िग फ़ाइल बनाने या अपडेट करने के लिए उपयोग करें।
HolyCode की डिफ़ॉल्ट पिकर पॉलिसी: दृश्यमान:
sisyphus,hephaestus,prometheus,atlas; छुपे सबएजेंट:oracle,librarian,explore,metis,momus,multimodal-looker,sisyphus-junior। अगर आप नया प्रोवाइडर जोड़ते हैं और दृश्यमान डिफ़ॉल्ट मॉडल पुराना लगे, तो/oh-my-openagent-setupदोबारा चलाएं, फिर:docker exec -it holycode bash -c "bunx oh-my-opencode doctor"औरdocker exec -it holycode bash -c "bunx oh-my-opencode refresh-model-capabilities"।
ENABLE_PAPERCLIP=trueकंटेनर के अंदर पोर्ट3100पर Paperclip शुरू करता है। डैशबोर्ड खोलें, एक कंपनी बनाएं, फिर वहाँ से OpenCode-बैक्ड एजेंट हायर करें। Paperclip ऑटोमेटिक~/.paperclipमें परसिस्ट होता है।
ENABLE_HERMES=trueकंटेनर के अंदर पोर्ट8642पर Hermes शुरू करता है। Hermes~/.hermesमें परसिस्ट होता है, पहले से इंस्टॉलopencodeबाइनरी उपयोग करता है, और OpenAI-कम्पेटिबल API एक्सपोज़ कर सकता है जबकि कोड काम HolyCode को वापस डेलीगेट करता है।
GIT_USER_NAMEऔरGIT_USER_EMAILकेवल पहले बूट पर लागू होते हैं। दोबारा लागू करने के लिए, sentinel फ़ाइल हटाएं और रीस्टार्ट करें:docker exec holycode rm /home/opencode/.config/opencode/.holycode-bootstrappedफिरdocker compose restart।
मुख्य टूल
| टूल | उद्देश्य |
|---|---|
git |
वर्शन कंट्रोल |
ripgrep |
फास्ट फ़ाइल कंटेंट सर्च |
fd |
फास्ट फ़ाइल फाइंडर |
fzf |
फज़ी फाइंडर |
bat |
सिंटैक्स हाइलाइटिंग के साथ Cat |
eza |
आधुनिक ls रिप्लेसमेंट |
lazygit |
टर्मिनल git UI |
delta |
बेहतर git diffs |
gh |
GitHub CLI |
htop |
प्रोसेस मॉनिटर |
tar |
आर्काइव बनाना और निकालना |
tree |
डायरेक्टरी ट्री विज़ुअलाइज़ेशन |
less |
पेज्ड फ़ाइल व्यूअर |
vim |
टर्मिनल टेक्स्ट एडिटर |
tmux |
टर्मिनल मल्टीप्लेक्सर |
लैंग्वेज रनटाइम
| रनटाइम | वर्शन |
|---|---|
| Node.js | 22 (LTS) |
| npm | Node.js 22 के साथ बंडल्ड |
| Python | 3 (सिस्टम) |
| pip | Python 3 के साथ बंडल्ड |
Dev टूल
| टूल | उद्देश्य |
|---|---|
curl |
HTTP रिक्वेस्ट |
wget |
फ़ाइल डाउनलोड |
jq |
JSON प्रोसेसिंग |
unzip / zip |
आर्काइव टूल |
ssh |
रिमोट एक्सेस |
build-essential + pkg-config |
नेटिव npm addon कंपाइलेशन |
python3-venv |
Python वर्चुअल एनवायरनमेंट |
procps |
प्रोसेस टूल: ps, top |
iproute2 |
नेटवर्क टूल: ip, ss |
lsof |
ओपन फ़ाइल डायग्नोस्टिक्स |
| OpenSSL | क्रिप्टो और सर्ट टूल (बेस इमेज के ज़रिए) |
ब्राउज़र स्टैक
| कंपोनेंट | उद्देश्य |
|---|---|
| Chromium | हेडलेस ब्राउज़र इंजन |
| Xvfb | वर्चुअल फ्रेमबफर डिस्प्ले सर्वर |
| Playwright | ब्राउज़र ऑटोमेशन फ्रेमवर्क |
ब्राउज़र स्टैक आउट ऑफ बॉक्स हेडलेस चलता है। कोई डिस्प्ले सर्वर नहीं, कोई GPU नहीं, कोई एक्स्ट्रा कॉन्फ़िग नहीं। Playwright और Puppeteer स्क्रिप्ट उम्मीद के मुताबिक काम करती हैं।
सही पेज रेंडरिंग और स्क्रीनशॉट के लिए Liberation, DejaVu, Noto और Noto Color Emoji फॉन्ट शामिल हैं।
बंडल्ड सर्विसेज़
| सर्विस | उद्देश्य |
|---|---|
| Hermes Agent | MCP, मैसेजिंग एडेप्टर और OpenCode डेलीगेशन के साथ सेल्फ-इम्प्रूविंग मेटा-एजेंट |
| Paperclip | लोकल एजेंट बोर्ड जो OpenCode वर्कर हायर करता है और हार्टबीट पर जगाता है |
| Claude Code CLI | ENABLE_CLAUDE_AUTH के ज़रिए Claude सब्स्क्रिप्शन ऑथ फ्लो के लिए इंस्टॉल्ड |
प्रोसेस मैनेजमेंट
| कंपोनेंट | उद्देश्य |
|---|---|
| s6-overlay v3 | प्रोसेस सुपरवाइज़र और इनिट सिस्टम |
| कस्टम एंट्रीपॉइंट | UID/GID रीमैपिंग, git सेटअप, बूटस्ट्रैप |
s6-overlay OpenCode और Xvfb को सुपरवाइज़ करता है। अगर कोई प्रोसेस क्रैश होती है, यह ऑटोमेटिक रीस्टार्ट होती है। कंटेनर रीस्टार्ट पॉलिसी क्लीन रहती हैं क्योंकि सुपरवाइज़र इसे आंतरिक रूप से हैंडल करता है।
HolyCode अब OpenCode के ऊपर दो ऑप्शनल लेयर के साथ आता है। कंटेनर उपयोग करने के लिए आपको इनकी जरूरत नहीं। env var फ्लिप करें, कंटेनर रीस्टार्ट करें, और सर्विस नॉर्मल वेब UI के साथ शुरू हो जाती है।
Hermes "स्मार्टर ब्रेन" ऑप्शन है। यह बंडल्ड मेटा-एजेंट के रूप में चलता है, पोर्ट 8642 पर OpenAI-कम्पेटिबल API एक्सपोज़ करता है, और HolyCode में पहले से शिप लोकल opencode बाइनरी को कॉल करके कोडिंग काम डेलीगेट करता है।
इसे इनेबल करें:
environment:
- ENABLE_HERMES=true
- HERMES_PORT=8642Hermes स्टेट /home/opencode/.hermes में रहती है, HolyCode के बाकी हिस्से जैसी ही परसिस्टेंस स्टोरी के साथ।
Paperclip "एजेंट बोर्ड" ऑप्शन है। यह पोर्ट 3100 पर एक लोकल डैशबोर्ड देता है जहाँ आप एक कंपनी बनाते हैं, एजेंट हायर करते हैं, और उन एजेंट को शेड्यूल पर जगने देते हैं। अंदर से यह opencode run प्रोसेस स्पॉन करता है, इसलिए वर्कर अभी भी HolyCode हैं।
इसे इनेबल करें:
environment:
- ENABLE_PAPERCLIP=true
- PAPERCLIP_PORT=3100Paperclip स्टेट /home/opencode/.paperclip में रहती है। डैशबोर्ड खोलें, अपनी कंपनी सेटअप करें, और वहाँ से OpenCode-बैक्ड एम्प्लॉई हायर करें।
graph TD
A[docker compose up -d] --> B[entrypoint.sh]
B --> C[UID/GID Remap]
C --> D[Plugin Toggles]
D --> E{First Boot?}
E -->|Yes| F[bootstrap.sh]
E -->|No| G[s6-overlay /init]
F --> G
G --> H[Xvfb :99]
G --> I[opencode web :4096]
I --> J[Web UI]
J --> K[Your Browser]
I --> L[CLI Access]
L --> M[docker exec -it holycode bash]
M --> N[opencode TUI]
M --> O[opencode run 'message']
M --> P[opencode attach localhost:4096]
एंट्रीपॉइंट यूज़र रीमैपिंग, प्लगइन टॉगल, ऑप्शनल बंडल्ड-सर्विस टॉगल और फर्स्ट-बूट सेटअप हैंडल करता है। s6-overlay Xvfb, OpenCode वेब सर्वर और आपके इनेबल किए किसी भी ऑप्शनल बंडल्ड सर्विस को सुपरवाइज़ करता है। अगर कोई सुपरवाइज़्ड प्रोसेस क्रैश होती है, s6 ऑटोमेटिक रीस्टार्ट करता है। पोर्ट 4096 पर वेब UI एक्सेस करें या पूर्ण CLI अनुभव के लिए कंटेनर में exec करें।
पोर्ट 4096 पर वेब UI प्राथमिक इंटरफेस है। लेकिन आप कंटेनर के अंदर कमांड लाइन से सीधे OpenCode का उपयोग भी कर सकते हैं।
docker exec -it holycode bash
opencodeयह वेब वर्शन जैसी सभी सुविधाओं के साथ OpenCode का पूरा टर्मिनल UI खोलता है।
TUI में एंटर किए बिना एक सिंगल प्रॉम्प्ट चलाएं:
docker exec -it holycode bash -c "opencode run 'explain this codebase'"पहले से चल रहे OpenCode वेब सर्वर से एक लोकल TUI सेशन कनेक्ट करें:
docker exec -it holycode bash -c "opencode attach http://localhost:4096"यह वेब UI के समान सेशन शेयर करता है। एक में बदलाव दूसरे में दिखते हैं।
कंटेनर के अंदर से AI प्रोवाइडर लिस्ट और कॉन्फ़िगर करें:
docker exec -it holycode bash -c "opencode providers list"
docker exec -it holycode bash -c "opencode providers login"अगर आपने ENABLE_OH_MY_OPENAGENT=true इनेबल किया है, तो /oh-my-openagent-setup स्किल उपलब्ध हो जाती है। प्लगइन-स्पेसिफिक कॉन्फ़िग बनाने या रिफ्रेश करने के लिए इसका उपयोग करें:
/oh-my-openagent-setup
अगर आप नया प्रोवाइडर जोड़ते हैं और दृश्यमान डिफ़ॉल्ट मॉडल पुराना लगे, तो /oh-my-openagent-setup दोबारा चलाएं, फिर:
docker exec -it holycode bash -c "bunx oh-my-opencode doctor"
docker exec -it holycode bash -c "bunx oh-my-opencode refresh-model-capabilities"| कमांड | क्या करती है |
|---|---|
opencode |
TUI लॉन्च करें |
opencode run 'message' |
वन-शॉट प्रॉम्प्ट |
opencode attach <url> |
चल रहे सर्वर से TUI कनेक्ट करें |
opencode web --port 4096 |
वेब सर्वर शुरू करें (s6 के ज़रिए पहले से चल रहा) |
opencode serve |
हेडलेस API सर्वर |
opencode providers list |
कॉन्फ़िगर्ड प्रोवाइडर दिखाएं |
opencode providers login |
प्रोवाइडर जोड़ें या बदलें |
bunx oh-my-opencode doctor |
oh-my-openagent कॉन्फ़िग और मॉडल रेज़ोल्यूशन डायग्नोज़ करें |
bunx oh-my-opencode refresh-model-capabilities |
प्रोवाइडर/मॉडल कैपेबिलिटी कैश रिफ्रेश करें |
opencode models |
उपलब्ध मॉडल लिस्ट करें |
opencode models <provider> |
किसी प्रोवाइडर के लिए मॉडल लिस्ट करें |
opencode stats |
टोकन उपयोग और लागत दिखाएं |
opencode session list |
पिछले सेशन लिस्ट करें |
opencode export <sessionID> |
सेशन को JSON के रूप में एक्सपोर्ट करें |
opencode plugin <module> |
प्लगइन इंस्टॉल करें |
opencode upgrade |
OpenCode अपग्रेड करें (कंटेनर में डिफ़ॉल्ट रूप से डिसेबल्ड) |
सभी OpenCode स्टेट ./data/opencode पर एक bind mount में रहती है। कंटेनर स्टेटलेस है। bind mount में वह सब है जो मायने रखता है।
| होस्ट पाथ | कंटेनर पाथ | अंदर क्या है |
|---|---|---|
./data/opencode/.config/opencode |
/home/opencode/.config/opencode |
सेटिंग्स, एजेंट, MCP कॉन्फ़िग, थीम, प्लगइन |
./data/opencode/.local/share/opencode |
/home/opencode/.local/share/opencode |
SQLite सेशन डेटाबेस, MCP OAuth टोकन |
./data/opencode/.local/state/opencode |
/home/opencode/.local/state/opencode |
Frecency डेटा, मॉडल कैश, की-वैल्यू स्टोर |
./local-cache/opencode |
/home/opencode/.cache/opencode |
प्लगइन node_modules, ऑटो-इंस्टॉल्ड डिपेंडेंसी |
कभी भी कंटेनर री-बिल्ड करें। docker compose pull && docker compose up -d चलाएं और आपके सेशन, सेटिंग्स और कॉन्फ़िग ऑटोमेटिक वापस आ जाएंगे।
SQLite WAL नोट। सेशन डेटाबेस Write-Ahead Logging उपयोग करता है। कंटेनर चलते समय .db फ़ाइल कॉपी न करें। डेटाबेस फ़ाइल बैकअप या माइग्रेट करने से पहले कंटेनर बंद करें।
नेटवर्क स्टोरेज नोट। यदि ./data/opencode CIFS/SMB नेटवर्क माउंट (NAS, Synology, TrueNAS) पर है, तो SQLite WAL मोड विफल हो सकता है क्योंकि SMB डिफ़ॉल्ट रूप से बाइट-रेंज लॉकिंग का समर्थन नहीं करता। HolyCode स्टार्टअप पर इसका पता लगाता है और फिक्स के साथ चेतावनी दिखाता है। नीचे ट्रबलशूटिंग सेक्शन देखें।
HolyCode आंतरिक कंटेनर यूज़र को आपके होस्ट यूज़र से मैच करने के लिए PUID और PGID उपयोग करता है। इसका मतलब है ./workspace में लिखी गई फ़ाइलें आपकी हैं, root की नहीं।
Linux और macOS पर अपने IDs खोजें:
id -u # PUID
id -g # PGIDज़्यादातर सिस्टम पर यह 1000:1000 है। macOS पर अक्सर 501:20 है। अपने compose फ़ाइल में सेट करें:
environment:
- PUID=501
- PGID=20अगर यह छोड़ देते हैं, तो आपके workspace में फ़ाइलें root की हो सकती हैं और होस्ट से एडिट करने के लिए sudo चाहिए होगा।
लेटेस्ट इमेज पुल करें और कंटेनर री-क्रिएट करें। आपका डेटा अनटच्ड रहता है।
docker compose pull
docker compose up -dबस। एक कमांड। आपके सेशन, सेटिंग्स और कॉन्फ़िग bind mount में हैं इसलिए कुछ नहीं खोता।
Chromium क्रैश होता है या ब्राउज़र ऑटोमेशन फेल होती है
सबसे आम कारण पर्याप्त shared memory नहीं है। Chromium को विश्वसनीय रूप से चलने के लिए कम से कम 1-2 GB /dev/shm चाहिए।
सुनिश्चित करें कि आपके compose फ़ाइल में shm_size: 2g है:
services:
holycode:
shm_size: 2gइसके बिना, Chromium चुपचाप क्रैश होगा या टूटे हुए स्क्रीनशॉट बनाएगा।
Workspace फ़ाइलों पर Permission denied
आपके PUID और PGID होस्ट यूज़र से मेल नहीं खाते। अपने IDs खोजें:
id -u && id -gमेल खाने के लिए compose environment सेक्शन अपडेट करें:
environment:
- PUID=1001 # replace with your actual UID
- PGID=1001 # replace with your actual GIDफिर कंटेनर री-क्रिएट करें: docker compose up -d --force-recreate
पोर्ट 4096 पहले से उपयोग में है
आपकी मशीन पर कुछ और पोर्ट 4096 उपयोग कर रहा है। दूसरे होस्ट पोर्ट पर रीमैप करें:
ports:
- "4097:4096" # access via http://localhost:4097या कॉन्फ्लिक्टिंग प्रोसेस ढूंढें और बंद करें:
# Linux / macOS
lsof -i :4096
# Windows
netstat -ano | findstr :4096कंटेनर शुरू होता है लेकिन वेब UI कभी लोड नहीं होता
कंटेनर लॉग चेक करें:
docker compose logs -f holycodeOpenCode को इनिशियलाइज़ होने में कुछ सेकंड लगते हैं। docker compose up -d के बाद ब्राउज़र खोलने से पहले 10-15 सेकंड रुकें। अगर अभी भी नहीं आया, लॉग बताएंगे क्यों।
HolyCode को SYS_ADMIN या seccomp=unconfined की ज़रूरत क्यों नहीं?
Chromium कंटेनर के अंदर --no-sandbox के साथ चलता है, जो कंटेनराइज़्ड ब्राउज़र सेटअप के लिए स्टैंडर्ड है। यह SYS_ADMIN कैपेबिलिटी या seccomp=unconfined की ज़रूरत खत्म करता है जो कुछ अन्य Docker ब्राउज़र सेटअप को चाहिए। कंटेनर खुद इज़ोलेशन बाउंड्री प्रोवाइड करता है।
अगर आप Chromium का बिल्ट-इन सैंडबॉक्स उपयोग करना चाहते हैं, तो अपने compose फ़ाइल में यह जोड़ें और CHROMIUM_FLAGS एनवायरनमेंट वेरिएबल से --no-sandbox हटाएं:
cap_add:
- SYS_ADMIN
security_opt:
- seccomp=unconfinedSQLite WAL CIFS/SMB नेटवर्क माउंट पर विफल होता है (NAS)
यदि आपकी ./data/opencode निर्देशिका CIFS/SMB नेटवर्क शेयर पर है, तो OpenCode
निम्न त्रुटि के साथ विफल हो सकता है:
Failed to run the query 'PRAGMA journal_mode = WAL'
OpenCode अपने सेशन डेटाबेस के लिए SQLite Write-Ahead Logging (WAL) का उपयोग करता है। WAL को बाइट-रेंज लॉकिंग की आवश्यकता होती है, जो CIFS/SMB डिफ़ॉल्ट रूप से समर्थन नहीं करता। HolyCode स्टार्टअप पर इसका पता लगाता है।
समाधान:/etc/fstab में CIFS माउंट विकल्पों में nobrl,mfsymlinks जोड़ें:
# पहले
//192.168.1.100/share /mnt/share cifs credentials=/etc/smbcreds,uid=1000,gid=1000 0 0
# बाद में (nobrl,mfsymlinks जोड़ें)
//192.168.1.100/share /mnt/share cifs credentials=/etc/smbcreds,uid=1000,gid=1000,nobrl,mfsymlinks 0 0
फिर रीमाउंट करें:
sudo umount /mnt/share
sudo mount /mnt/shareHolyCode पुनः आरंभ करें: docker compose up -d --force-recreate
रेपो क्लोन करें, इमेज बिल्ड करें, अपने compose फ़ाइल में स्वैप करें।
git clone https://github.com/coderluii/holycode.git
cd holycode
docker build -t holycode:local .फिर अपने docker-compose.yaml में इमेज स्वैप करें:
image: holycode:local- रेपो फोर्क करें
- एक ब्रांच बनाएं:
git checkout -b feature/your-feature - अपने बदलाव कमिट करें:
git commit -m "feat: your feature" - पुश करें:
git push origin feature/your-feature - एक pull request खोलें
पूर्ण गाइडलाइन के लिए CONTRIBUTING.md देखें।
अगर HolyCode ने आपको एनवायरनमेंट सेटअप के एक और घंटे से बचाया, तो यहाँ वापस देने का तरीका है।
- GitHub पर रेपो को स्टार करें
- इसे किसी ऐसे व्यक्ति के साथ शेयर करें जिसे उपयोगी लगे
- Buy Me A Coffee
- PayPal
- GitHub Sponsors
MIT लाइसेंस - LICENSE देखें।
CoderLuii द्वारा निर्मित · coderluii.dev
