> For the complete documentation index, see [llms.txt](https://docs.clore.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.clore.ai/guides/guides_v2-hi/ai-platforms-and-agents/openhands.md).

# OpenHands AI Developer

## अवलोकन

[OpenHands](https://github.com/All-Hands-AI/OpenHands) (पूर्व में OpenDevin) स्वायत्त एआई सॉफ़्टवेयर विकास एजेंटों के लिए एक ओपन-सोर्स प्लेटफ़ॉर्म है। 65K+ GitHub स्टार्स के साथ, यह एआई को वास्तविक प्रोग्रामिंग कार्य सौंपने के लिए सबसे लोकप्रिय टूल्स में से एक बन गया है — कोड लिखना, बग ठीक करना, GitHub मुद्दों का समाधान करना, शेल कमांड चलाना, वेब ब्राउज़ करना और आपके कोडबेस के साथ एंड-टू-एंड इंटरैक्ट करना।

सामान्य कोड-पूरक टूल्स के विपरीत, OpenHands एक **एजेन्टिक लूप**चलाता है: यह एक कार्य प्राप्त करता है, योजना बनाता है, कोड लिखता है, उसे निष्पादित करता है, आउटपुट का निरीक्षण करता है, और पुनरावृत्ति करता है — यह सब बिना मानव हस्तक्षेप के। यह OpenAI, Anthropic Claude, Google Gemini सहित दर्जनों LLM बैकएंड्स और Ollama या vLLM के माध्यम से लोकली-होस्टेड मॉडलों का समर्थन करता है।

**OpenHands के लिए Clore.ai क्यों?**

* OpenHands स्वयं CPU-आधारित है और GPU की आवश्यकता नहीं होती
* हालाँकि, इसे **स्थानीय LLM** (Ollama, vLLM) के साथ एक ही सर्वर पर जोड़ने से API लागत और विलंबता समाप्त हो जाती है
* Clore.ai के किफायती GPU सर्वर आपको OpenHands और एक स्थानीय मॉडल चलाने देते हैं, वह भी सिर्फ **$0.20–$0.35/घं**
* आपको स्थायी वर्कस्पेस स्टोरेज, Docker-in-Docker समर्थन और पूर्ण रूट एक्सेस मिलता है
* लंबे समय तक चलने वाले स्वायत्त कार्यों के लिए आदर्श जो क्लाउड LLM APIs के माध्यम से महंगे होंगे

**Clore.ai पर सामान्य उपयोग के मामलों में:**

* विशिष्ट विवरण या मुद्दे के वर्णन से स्वायत्त कोड जनरेशन
* बड़े कोडबेस का थोक रीफैक्टरिंग
* 100% ऑफ़लाइन एजेन्टिक विकास के लिए OpenHands + Ollama को साथ में चलाना
* API लागत के बिना CI/CD कार्य स्वचालन

***

## आवश्यकताएँ

OpenHands को Docker सॉकेट एक्सेस की आवश्यकता होती है और यह आंतरिक रूप से एक सैंडबॉक्सेड रनटाइम कंटेनर चलाता है। निम्न तालिका Clore.ai पर अनुशंसित कॉन्फ़िगरेशन को कवर करती है:

| कॉन्फ़िगरेशन                        | GPU                | VRAM      | RAM   | स्टोरेज | अनुमानित मूल्य    |
| ----------------------------------- | ------------------ | --------- | ----- | ------- | ----------------- |
| **केवल API (कोई स्थानीय LLM नहीं)** | किसी भी / केवल CPU | लागू नहीं | 8 GB  | 20 GB   | \~$0.05–0.10/घंटा |
| **+ Ollama (Llama 3.1 8B)**         | RTX 3090           | 24 GB     | 16 GB | 40 GB   | \~$0.20/घंटा      |
| **+ Ollama (Qwen2.5 32B)**          | RTX 4090           | 24 GB     | 32 GB | 60 GB   | \~$0.35/घंटा      |
| **+ vLLM (Llama 3.1 70B)**          | A100 80GB          | 80 GB     | 64 GB | 100 GB  | \~$1.10/घंटा      |
| **+ vLLM (Llama 3.3 70B INT4)**     | RTX 4090           | 24 GB     | 32 GB | 80 GB   | \~$0.35/घंटा      |

> **नोट:** यदि आप केवल OpenAI/Anthropic/Gemini APIs का उपयोग करते हैं, तो ≥8 GB RAM वाला कोई भी सर्वर काम कर जाएगा। उसी मशीन पर स्थानीय LLM चलाना है तो GPU की आवश्यकता होगी। देखें [GPU तुलना मार्गदर्शिका](/guides/guides_v2-hi/getting-started/gpu-comparison.md) अधिक विवरण के लिए।

**Clore.ai सर्वर पर सॉफ़्टवेयर आवश्यकताएँ:**

* Docker Engine (सभी Clore.ai इमेजेस पर पहले से इंस्टॉल)
* NVIDIA कंटेनर टूलकिट (GPU इमेज पर पूर्व-इंस्टॉल्ड)
* Docker सॉकेट पहुंच योग्य है: `/var/run/docker.sock`
* GHCR इमेज खींचने के लिए बाहरी इंटरनेट एक्सेस

***

## त्वरित प्रारम्भ

### चरण 1: एक Clore.ai सर्वर चुनें और कनेक्ट करें

में [Clore.ai मार्केटप्लेस](https://clore.ai)सेर्वरों को फ़िल्टर करने के लिए:

* RAM ≥ 16 GB (स्थानीय LLM कॉम्बो के लिए)
* Docker: ✓ सक्षम
* यदि स्थानीय मॉडल का उपयोग कर रहे हैं तो अपनी पसंदीदा GPU चुनें

सर्वर प्रोविजन होने के बाद SSH के माध्यम से कनेक्ट करें:

```bash
ssh root@<server-ip> -p <port>
```

### चरण 2: जांचें कि Docker चल रहा है

```bash
docker info
ls -la /var/run/docker.sock
```

दोनों कमांड सफल होनी चाहिए। यदि Docker सॉकेट गायब है, तो Clore.ai समर्थन से संपर्क करें या किसी अलग इमेज का चयन करें।

### चरण 3: OpenHands पुल और चलाएँ

```bash
# वर्कस्पेस निर्देशिका सेट करें
export WORKSPACE_BASE=$(pwd)/workspace
mkdir -p $WORKSPACE_BASE

# OpenHands चलाएँ (GHCR से नवीनतम 0.38 इमेज खींचता है)
docker run -it --pull=always \
  -e SANDBOX_RUNTIME_CONTAINER_IMAGE=ghcr.io/all-hands-ai/runtime:0.38-nikolaik \
  -e SANDBOX_USER_ID=$(id -u) \
  -e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
  -v $WORKSPACE_BASE:/opt/workspace_base \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -p 3000:3000 \
  --add-host host.docker.internal:host-gateway \
  ghcr.io/all-hands-ai/openhands:0.38
```

### चरण 4: वेब UI तक पहुँच

UI उपलब्ध है: `http://<server-ip>:3000`

> **Clore.ai पोर्ट फॉरवर्डिंग:** Clore.ai डैशबोर्ड में, सुनिश्चित करें कि पोर्ट `3000` आपकी सर्वर कॉन्फ़िगरेशन में अग्रेषित/एक्सपोज़ किया गया है। कुछ टेम्पलेट्स बाहरी पोर्ट्स को प्रतिबंधित करते हैं — अपने सर्वर विवरण में "Ports" सेक्शन की जाँच करें।

प्रथम लॉन्च पर, OpenHands आपसे एक LLM प्रदाता कॉन्फ़िगर करने के लिए कहेगा।

### चरण 5: अपना LLM कॉन्फ़िगर करें

वेब UI सेटिंग्स में:

* **प्रदाता:** OpenAI, Anthropic, Google, या Custom चुनें
* **API कुंजी:** अपनी API कुंजी दर्ज करें
* **मॉडल:** उदा., `gpt-4o`, `claude-3-5-sonnet-20241022`, या `ollama/llama3.1`

लोकल Ollama (नीचे GPU Acceleration सेक्शन देखें) के लिए, उपयोग करें:

* प्रदाता: `ollama`
* बेस URL: `http://host.docker.internal:11434`
* मॉडल: `ollama/llama3.1:8b`

***

## कॉन्फ़िगरेशन

### पर्यावरण चर

OpenHands को पूरी तरह से उन पर्यावरण चर के माध्यम से कॉन्फ़िगर किया जा सकता है जो `docker run`:

```bash
docker run -it --pull=always \
  -e SANDBOX_RUNTIME_CONTAINER_IMAGE=ghcr.io/all-hands-ai/runtime:0.38-nikolaik \
  -e SANDBOX_USER_ID=$(id -u) \
  -e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
  -e LLM_MODEL=claude-3-5-sonnet-20241022 \
  -e LLM_API_KEY=sk-ant-... \
  -e LLM_BASE_URL="" \
  -e SANDBOX_TIMEOUT=120 \
  -e MAX_ITERATIONS=100 \
  -v $WORKSPACE_BASE:/opt/workspace_base \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -p 3000:3000 \
  --add-host host.docker.internal:host-gateway \
  ghcr.io/all-hands-ai/openhands:0.38
```

| वैरिएबल           | विवरण                                                         | डिफ़ॉल्ट            |
| ----------------- | ------------------------------------------------------------- | ------------------- |
| `LLM_MODEL`       | मॉडल पहचानकर्ता (जैसे `gpt-4o`, `claude-3-5-sonnet-20241022`) | UI में सेट किया गया |
| `LLM_API_KEY`     | LLM प्रदाता के लिए API कुंजी                                  | UI में सेट किया गया |
| `LLM_BASE_URL`    | कस्टम बेस URL (Ollama, vLLM, LiteLLM के लिए)                  | प्रदाता डिफ़ॉल्ट    |
| `SANDBOX_TIMEOUT` | एजेंट सैंडबॉक्स टाइमआउट (सेकंड में)                           | `120`               |
| `MAX_ITERATIONS`  | प्रति कार्य अधिकतम एजेन्टिक लूप पुनरावृत्तियाँ                | `100`               |
| `SANDBOX_USER_ID` | सैंडबॉक्स को चलाने के लिए UID (उपयोग करें `$(id -u)`)         | `0`                 |
| `LOG_ALL_EVENTS`  | विस्तृत इवेंट लॉगिंग सक्षम करें (`true`/`false`)              | `false`             |

### स्थायी कॉन्फ़िगरेशन फ़ाइल

आप सेटिंग्स को एक कॉन्फ़िग डायरेक्टरी माउंट करके स्थायी बना सकते हैं:

```bash
mkdir -p /opt/openhands/config

docker run -it --pull=always \
  -e SANDBOX_RUNTIME_CONTAINER_IMAGE=ghcr.io/all-hands-ai/runtime:0.38-nikolaik \
  -e SANDBOX_USER_ID=$(id -u) \
  -e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
  -v $WORKSPACE_BASE:/opt/workspace_base \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /opt/openhands/config:/app/config \
  -p 3000:3000 \
  --add-host host.docker.internal:host-gateway \
  ghcr.io/all-hands-ai/openhands:0.38
```

### बैकग्राउंड में चलाना (Detached मोड)

Clore.ai पर लंबे चलने वाले सत्रों के लिए:

```bash
export WORKSPACE_BASE=/opt/workspace
mkdir -p $WORKSPACE_BASE

docker run -d \
  --name openhands \
  --restart unless-stopped \
  --pull=always \
  -e SANDBOX_RUNTIME_CONTAINER_IMAGE=ghcr.io/all-hands-ai/runtime:0.38-nikolaik \
  -e SANDBOX_USER_ID=0 \
  -e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
  -e LLM_MODEL=claude-3-5-sonnet-20241022 \
  -e LLM_API_KEY=your_api_key_here \
  -v $WORKSPACE_BASE:/opt/workspace_base \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -p 3000:3000 \
  --add-host host.docker.internal:host-gateway \
  ghcr.io/all-hands-ai/openhands:0.38

# लॉग देखें
docker logs -f openhands
```

***

## GPU त्वरण (स्थानीय LLM एकीकरण)

जबकि OpenHands स्वयं GPU का उपयोग नहीं करता, इसे Clore.ai के GPU पर **स्थानीय LLM** चलाने से आपको एक शक्तिशाली, किफायती, API-रहित स्वायत्त एजेंट मिलता है।

### विकल्प A: OpenHands + Ollama (शुरुआती के लिए अनुशंसित)

पहले Ollama चलाएँ, फिर OpenHands को उसकी ओर इशारा करें:

```bash
# 1. Ollama शुरू करें (पूर्ण विवरण के लिए Ollama गाइड देखें)
docker run -d \
  --name ollama \
  --gpus all \
  -p 11434:11434 \
  -v ollama-data:/root/.ollama \
  ollama/ollama:latest

# 2. एक कोडिंग-अनुकूलित मॉडल खींचें
docker exec ollama ollama pull qwen2.5-coder:7b
# या अधिक शक्ति के लिए:
docker exec ollama ollama pull llama3.1:8b
docker exec ollama ollama pull deepseek-coder-v2:16b

# 3. OpenHands को Ollama की ओर संकेत करते हुए शुरू करें
export WORKSPACE_BASE=/opt/workspace
mkdir -p $WORKSPACE_BASE

docker run -d \
  --name openhands \
  -e SANDBOX_RUNTIME_CONTAINER_IMAGE=ghcr.io/all-hands-ai/runtime:0.38-nikolaik \
  -e SANDBOX_USER_ID=0 \
  -e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
  -e LLM_MODEL=ollama/qwen2.5-coder:7b \
  -e LLM_BASE_URL=http://host.docker.internal:11434 \
  -e LLM_API_KEY=ollama \
  -v $WORKSPACE_BASE:/opt/workspace_base \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -p 3000:3000 \
  --add-host host.docker.internal:host-gateway \
  ghcr.io/all-hands-ai/openhands:0.38
```

> पूरा देखें [Ollama गाइड](/guides/guides_v2-hi/language-models/ollama.md) मॉडल चयन, प्रदर्शन ट्यूनिंग, और GPU कॉन्फ़िगरेशन के लिए।

### विकल्प B: OpenHands + vLLM (उच्च प्रदर्शन)

बड़े मॉडलों के साथ अधिकतम थ्रूपुट के लिए:

```bash
# 1. कोडिंग मॉडल के साथ vLLM शुरू करें
docker run -d \
  --name vllm \
  --gpus all \
  -p 8000:8000 \
  --ipc=host \
  vllm/vllm-openai:latest \
  --model Qwen/Qwen2.5-Coder-32B-Instruct \
  --max-model-len 16384 \
  --gpu-memory-utilization 0.92

# मॉडल लोड होने की प्रतीक्षा करें (~2-5 मिनिट)
docker logs -f vllm | grep "Application startup"

# 2. vLLM बैकएंड के साथ OpenHands शुरू करें
docker run -d \
  --name openhands \
  -e SANDBOX_RUNTIME_CONTAINER_IMAGE=ghcr.io/all-hands-ai/runtime:0.38-nikolaik \
  -e SANDBOX_USER_ID=0 \
  -e WORKSPACE_MOUNT_PATH=/opt/workspace \
  -e LLM_MODEL=openai/Qwen/Qwen2.5-Coder-32B-Instruct \
  -e LLM_BASE_URL=http://host.docker.internal:8000/v1 \
  -e LLM_API_KEY=none \
  -v /opt/workspace:/opt/workspace_base \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -p 3000:3000 \
  --add-host host.docker.internal:host-gateway \
  ghcr.io/all-hands-ai/openhands:0.38
```

> पूरे सेटअप के लिए देखें [vLLM गाइड](/guides/guides_v2-hi/language-models/vllm.md) पूर्ण सेटअप, क्वांटाइज़ेशन विकल्प, और मल्टी-GPU कॉन्फ़िगरेशन के लिए।

### कोडिंग के लिए अनुशंसित लोकल मॉडल्स

| मॉडल                    | आकार | न्यूनतम VRAM | गुणवत्ता |
| ----------------------- | ---- | ------------ | -------- |
| `qwen2.5-coder:7b`      | 7B   | 8 GB         | ★★★☆☆    |
| `deepseek-coder-v2:16b` | 16B  | 12 GB        | ★★★★☆    |
| `qwen2.5-coder:32b`     | 32B  | 24 GB        | ★★★★☆    |
| `llama3.1:70b`          | 70B  | 48 GB        | ★★★★★    |

***

## टिप्स और सर्वोत्तम प्रथाएँ

### 1. वर्कस्पेस माउंट्स का बुद्धिमानी से उपयोग करें

अपनी वास्तविक प्रोजेक्ट डायरेक्टरी को वर्कस्पेस के रूप में माउंट करें ताकि OpenHands सीधे आपकी फ़ाइलों को संपादित कर सके:

```bash
export WORKSPACE_BASE=/opt/my-project
git clone https://github.com/your/repo $WORKSPACE_BASE
```

### 2. सर्वोत्तम परिणामों के लिए टास्क प्रॉम्प्टिंग

OpenHands विशिष्ट, क्रियान्वयन योग्य प्रॉम्प्ट्स के साथ सबसे अच्छा काम करता है:

```
✅ अच्छा: "src/auth/login.py में प्रमाणीकरण बग ठीक करें जहां JWT टोकन 
         तुरंत समाप्त हो जाते हैं। समस्या टोकन समाप्ति गणना में है."

❌ खराब: "बग ठीक करें"
```

### 3. संसाधन उपयोग की निगरानी करें

```bash
# GPU और मेमोरी उपयोग देखें
watch -n 2 'nvidia-smi && docker stats --no-stream'
```

### 4. पुनरावृत्ति सीमाएँ सेट करें

एजेंट्स को बहुत अधिक API टोकन उपयोग करने से रोकें:

```bash
-e MAX_ITERATIONS=50  # प्रति कार्य 50 चरणों तक सीमित करें
```

### 5. GitHub एकीकरण

OpenHands सीधे GitHub मुद्दों को हल कर सकता है। UI में कॉन्फ़िगर करें:

* GitHub टोकन: आपका व्यक्तिगत एक्सेस टोकन जिसमें `repo` स्कोप
* OpenHands रिपो को क्लोन करेगा, समस्या ठीक करेगा और एक PR बनाएगा

### 6. लागत का अनुमान

API-आधारित LLMs के लिए, प्रति कार्य लागत का अनुमान:

* सरल बग फिक्स: \~$0.05–0.15 (Claude Haiku/GPT-4o-mini)
* जटिल फीचर: \~$0.50–2.00 (Claude Sonnet/GPT-4o)
* यदि दिन में 100+ कार्य हैं, तो Clore.ai पर स्थानीय LLM अपनी लागत निकाल लेता है

***

## समस्याओं का निवारण

### Docker सॉकेट अनुमति अस्वीकृत

```bash
# त्रुटि: Docker डेमॉन से कनेक्ट करते समय अनुमति अस्वीकृत
# समाधान: सुनिश्चित करें कि सॉकेट पहुँच योग्य है
ls -la /var/run/docker.sock
# दिखना चाहिए: srw-rw---- 1 root docker ...

# यदि आवश्यक हो तो अपने उपयोगकर्ता को docker समूह में जोड़ें
usermod -aG docker $USER
# फिर शेल को रीस्टार्ट करें या उपयोग करें: newgrp docker
```

### सैंडबॉक्स कंटेनर शुरू नहीं होता

```bash
# जाँच करें कि रनटाइम इमेज पहुंच योग्य है
docker pull ghcr.io/all-hands-ai/runtime:0.38-nikolaik

# GHCR दर सीमाओं की जाँच करें (प्रमाणीकरण की आवश्यकता हो सकती है)
docker login ghcr.io
```

### पोर्ट 3000 पहुँच योग्य नहीं है

```bash
# सत्यापित करें कि कंटेनर चल रहा है और पोर्ट बंधा हुआ है
docker ps | grep openhands
docker port openhands

# Clore.ai फ़ायरवॉल की जाँच करें — सुनिश्चित करें कि पोर्ट 3000 आपके पोर्ट मैपिंग में है
# Clore.ai डैशबोर्ड में: Server → Ports → Add 3000:3000
```

### Ollama के साथ LLM कनेक्शन त्रुटियाँ

```bash
# OpenHands कंटेनर से Ollama पहुँच योग्य है या नहीं यह परीक्षण करें
docker exec openhands curl http://host.docker.internal:11434/api/tags

# यदि यह विफल होता है, तो सत्यापित करें कि --add-host फ़्लैग docker run में शामिल था
# साथ ही जांचें कि Ollama कंटेनर चल रहा है:
docker ps | grep ollama
docker logs ollama | tail -20
```

### एजेंट लूप अनंत तक चलता है

```bash
# अधिकतम पुनरावृत्तियाँ घटाएँ
docker stop openhands
docker run ... -e MAX_ITERATIONS=30 ...

# या एक टाइमआउट सेट करें
-e SANDBOX_TIMEOUT=60
```

### मेमोरी समाप्त (OOM)

```bash
# मेमोरी उपयोग जाँचें
free -h
docker stats

# यदि स्थानीय LLM चला रहे हैं, तो एक छोटा मॉडल ट्राय करें
docker exec ollama ollama pull qwen2.5-coder:3b

# या क्वांटाइज़्ड संस्करण का उपयोग करें (कम VRAM)
docker exec ollama ollama pull llama3.1:8b-instruct-q4_K_M
```

***

## अधिक पढ़ने के लिए

* [OpenHands GitHub रिपॉज़िटरी](https://github.com/All-Hands-AI/OpenHands) — स्रोत कोड, मुद्दे, और रिलीज़
* [OpenHands दस्तावेज़ीकरण](https://docs.all-hands.dev) — आधिकारिक डॉक्स जिनमें LLM कॉन्फ़िगरेशन शामिल है
* [Clore.ai पर Ollama](/guides/guides_v2-hi/language-models/ollama.md) — एजेंट अनुमान के लिए लोकल LLMs चलाएँ मुफ्त में
* [Clore.ai पर vLLM](/guides/guides_v2-hi/language-models/vllm.md) — उच्च-प्रदर्शन लोकल LLM सर्विंग
* [GPU तुलना मार्गदर्शिका](/guides/guides_v2-hi/getting-started/gpu-comparison.md) — अपने वर्कलोड के लिए सही GPU चुनें
* [OpenHands Discord](https://discord.gg/ESHStjSjD4) — समुदाय सहायता और मॉडल सिफारिशें
* [SWE-bench लीडरबोर्ड](https://www.swebench.com) — वास्तविक GitHub मुद्दों पर एजेंट प्रदर्शन की तुलना करें


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.clore.ai/guides/guides_v2-hi/ai-platforms-and-agents/openhands.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
