mvp-factory-setups/SETUP-COMPLETE.md

10 KiB

🎉 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:

sudo systemctl status openhands.service
curl http://localhost:3000/api/options/agents

2. API Endpoints Discovered & Documented

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

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:

    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:

  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:

    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

# 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

  • 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

# 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

  • OpenHands server running
  • API endpoints discovered
  • n8n workflows created
  • 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

# 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

# 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


🎉 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