mvp-factory-setups/SETUP-COMPLETE.md

388 lines
10 KiB
Markdown

# 🎉 OpenHands API Integration - SETUP COMPLETE!
**Date:** 2025-11-29
**Phase:** Phase 2 Complete - Ready for Testing
**Total Time:** ~2 hours
---
## ✅ What's Been Accomplished
### 1. OpenHands Server Setup ✅
- **Status:** Running as systemd service
- **Port:** 3000
- **API:** Fully operational with REST endpoints
- **Auto-start:** Enabled on boot
- **Configuration:** MiniMax M2 LLM with fallback support
**Verification:**
```bash
sudo systemctl status openhands.service
curl http://localhost:3000/api/options/agents
```
### 2. API Endpoints Discovered & Documented ✅
- **Swagger UI:** http://localhost:3000/docs
- **OpenAPI Spec:** http://localhost:3000/openapi.json
- **Key Endpoints:**
- `POST /api/conversations` - Create session
- `GET /api/conversations/{id}` - Get status
- `GET /api/conversations/{id}/events` - Monitor progress
- `POST /api/conversations/{id}/message` - Send tasks
### 3. n8n Integration Complete ✅
- **n8n Network:** Configured to access OpenHands at `172.18.0.1:3000`
- **Test Workflow:** Created with manual trigger
- **Webhook Workflow:** Created with Gitea integration
- **Both workflows:** Ready to import
### 4. Complete Documentation Created ✅
- API Reference Guide
- n8n Workflow Setup Guide
- Gitea Webhook Integration Guide
- Troubleshooting documentation
---
## 📁 Files Created
| File | Purpose |
|------|---------|
| `/tmp/openhands-workflow.json` | Manual test workflow for n8n |
| `/tmp/openhands-gitea-webhook-workflow.json` | Production webhook workflow |
| `/home/bam/openhands-api-reference.md` | Complete API documentation |
| `/home/bam/n8n-workflow-setup-guide.md` | Step-by-step n8n import guide |
| `/home/bam/gitea-webhook-setup-guide.md` | Gitea webhook configuration |
| `/home/bam/openhands-server.sh` | OpenHands startup script |
| `/etc/systemd/system/openhands.service` | Systemd service file |
---
## 🚀 Quick Start - Next Steps
### Option A: Test Basic Workflow First (Recommended)
**Estimated Time:** 10 minutes
1. **Import test workflow to n8n:**
- Open https://n8n.oky.sh
- Import `/tmp/openhands-workflow.json`
- Execute workflow manually
- Verify OpenHands creates a file
2. **Check results:**
```bash
docker ps | grep openhands-runtime
docker exec [container-name] cat /workspace/hello.txt
```
**Guide:** `/home/bam/n8n-workflow-setup-guide.md`
---
### Option B: Set Up Full CI/CD Pipeline
**Estimated Time:** 30 minutes
1. **Import webhook workflow:**
- Open https://n8n.oky.sh
- Import `/tmp/openhands-gitea-webhook-workflow.json`
- Activate the workflow
- Copy webhook URL
2. **Create test repository in Gitea:**
- Open https://git.oky.sh
- Create new repo: `openhands-test`
- Initialize with README
3. **Configure webhook:**
- Repo Settings → Webhooks → Add Webhook
- URL: `https://n8n.oky.sh/webhook/gitea-push`
- Trigger: Push events
- Test delivery
4. **Clone and push:**
```bash
git clone https://git.oky.sh/[username]/openhands-test.git
cd openhands-test
# Add package.json, index.js, test.js (see guide)
git add .
git commit -m "Add Node.js project"
git push origin main
```
5. **Watch automation:**
- Check n8n Executions
- Monitor OpenHands conversation
- Verify build results
**Guide:** `/home/bam/gitea-webhook-setup-guide.md`
---
## 🔧 System Architecture
```
┌─────────────────────────────────────────────────────────┐
│ Internet/User │
└──────────────┬──────────────────────────────────────────┘
│ HTTPS (Let's Encrypt SSL)
┌──────────────────────┐
│ Caddy Reverse │
│ Proxy │
│ (ports 80, 443) │
└──┬────────────┬──────┘
│ │
│ │
↓ ↓
┌──────────┐ ┌──────────┐
│ Gitea │ │ n8n │
│ :3000 │ │ :5678 │
│(git.oky) │ │(n8n.oky) │
└────┬─────┘ └─────┬────┘
│ │
│ Webhook │ HTTP Request
└──────────────┤
│ 172.18.0.1:3000
┌──────────────────────┐
│ OpenHands Server │
│ (systemd service) │
│ localhost:3000 │
└──────────┬───────────┘
│ Docker API
┌──────────────────────┐
│ OpenHands Runtime │
│ Container(s) │
│ (per conversation) │
└──────────────────────┘
```
---
## 📊 Service Status
### Quick Health Check
```bash
# All services status
cd /home/bam/services/services-stack && docker compose ps
# OpenHands status
sudo systemctl status openhands.service
# Test OpenHands API
curl http://localhost:3000/api/options/agents
# Test n8n → OpenHands connectivity
docker exec n8n wget -O- http://172.18.0.1:3000/api/options/agents
```
### Expected Output
```
# docker compose ps
NAME STATUS
caddy Up X hours
gitea Up X hours
n8n Up X hours
postgres Up X hours (healthy)
# systemctl status openhands
● openhands.service - OpenHands API Server
Active: active (running)
# curl localhost:3000/api/options/agents
["BrowsingAgent","CodeActAgent",...]
# docker exec n8n wget
["BrowsingAgent","CodeActAgent",...]
```
---
## 🔐 Access Information
### Web Interfaces
| Service | URL | Credentials |
|---------|-----|-------------|
| Gitea | https://git.oky.sh | Your Gitea account |
| n8n | https://n8n.oky.sh | Your n8n account |
| OpenHands API | http://localhost:3000/docs | No auth (localhost only) |
### API Keys
- **Location:** `/home/bam/openhands/.env`
- **Primary LLM:** MiniMax M2
- **Backup LLM:** DeepSeek V2
- **Optional:** OpenAI GPT-4o
---
## 📚 Documentation Reference
### Quick Links
- **API Docs:** `/home/bam/openhands-api-reference.md`
- **n8n Setup:** `/home/bam/n8n-workflow-setup-guide.md`
- **Gitea Webhook:** `/home/bam/gitea-webhook-setup-guide.md`
- **Project Instructions:** `/home/bam/claude/mvp-factory/CLAUDE.md`
### Command Reference
```bash
# Restart OpenHands
sudo systemctl restart openhands.service
# View OpenHands logs
sudo journalctl -u openhands.service -f
# Restart n8n
cd /home/bam/services/services-stack
docker compose restart n8n
# View n8n logs
docker logs -f n8n
# List OpenHands conversations
curl http://localhost:3000/api/conversations
# Get conversation events
curl "http://localhost:3000/api/conversations/{id}/events"
# List runtime containers
docker ps | grep openhands-runtime
# Check runtime logs
docker logs [container-name]
```
---
## 🎯 Next Milestones
### Phase 2: Complete ✅
- [x] OpenHands server running
- [x] API endpoints discovered
- [x] n8n workflows created
- [x] Gitea webhook integration designed
### Phase 3: Testing (Next - YOU)
- [ ] Import test workflow to n8n
- [ ] Execute manual test
- [ ] Verify file creation
- [ ] Import webhook workflow
- [ ] Create Gitea test repository
- [ ] Configure webhook
- [ ] Test git push automation
### Phase 4: Production (Optional)
- [ ] Add retry logic for failed builds
- [ ] Implement commit status updates in Gitea
- [ ] Add notifications (Slack/Email)
- [ ] Configure multiple repositories
- [ ] Add build artifact storage
- [ ] Implement deployment pipeline
---
## ⚠️ Important Notes
### First Run Considerations
1. **Initial Conversation:** Takes 2-3 minutes (Docker image pull + runtime init)
2. **Subsequent Runs:** 30-60 seconds
3. **Runtime Containers:** Created per conversation, auto-removed when done
4. **Resource Usage:** Each runtime uses ~500MB RAM, 1 vCPU
### Security Considerations
1. **OpenHands API:** Only accessible from localhost (127.0.0.1)
2. **n8n Access:** Secured via HTTPS + Basic Auth
3. **Gitea Access:** Secured via HTTPS
4. **Docker Socket:** Mounted read-only in n8n
### Scaling Considerations
1. **Concurrent Builds:** Currently supports 1 build at a time
2. **To Scale:** Run multiple OpenHands server instances on different ports
3. **Load Balancing:** Add n8n load balancer node to distribute requests
4. **Resource Limits:** Set Docker memory/CPU limits for runtime containers
---
## 🐛 Troubleshooting Quick Reference
### Problem: OpenHands not responding
```bash
# Check status
sudo systemctl status openhands.service
# Check logs
sudo journalctl -u openhands.service -n 50
# Restart service
sudo systemctl restart openhands.service
# Test manually
curl http://localhost:3000/api/options/agents
```
### Problem: n8n can't reach OpenHands
```bash
# Test connectivity from n8n
docker exec n8n wget -O- http://172.18.0.1:3000/api/options/agents
# If fails, restart n8n
cd /home/bam/services/services-stack
docker compose restart n8n
```
### Problem: Webhook not triggering
1. Check n8n workflow is **Active**
2. Verify webhook URL matches
3. Check Gitea "Recent Deliveries" for errors
4. Test manual webhook trigger in Gitea
### Problem: Build timeout
1. Check OpenHands logs for errors
2. Verify runtime container is running
3. Increase retry limit in n8n workflow
4. Check LLM API keys are valid
---
## 📞 Support Resources
- **OpenHands Docs:** https://docs.openhands.dev
- **n8n Docs:** https://docs.n8n.io
- **Gitea Docs:** https://docs.gitea.io
- **Local Swagger UI:** http://localhost:3000/docs
---
## 🎉 You're All Set!
Everything is configured and ready to test. The next steps are in your hands:
1. **Test basic workflow** → Follow `/home/bam/n8n-workflow-setup-guide.md`
2. **Set up full CI/CD** → Follow `/home/bam/gitea-webhook-setup-guide.md`
3. **Customize workflows** → Modify tasks, add notifications, etc.
**Good luck with your AI-powered CI/CD pipeline!** 🚀
---
**Generated:** 2025-11-29
**By:** Claude (Anthropic)
**Project:** AI Dev Factory MVP