Skip to main content

OpenCode / OpenHands (formerly OpenDevin)

A leading open-source platform for autonomous software engineering that performs complex engineering tasks in an isolated Docker environment with access to a terminal, browser, and file system.

1. Concept Overview & Systemic Problem

The emergence of commercial autonomous "AI Software Engineers" (like Devin) has showcased a future of development where models autonomously close backlog tasks. However, proprietary services carry significant risks: high costs (subscriptions starting at $500/month), closed internal algorithms, complete inability to customize behavior for a specific internal tech stack, and the risk of leaking trade secrets to vendor's closed clouds.

OpenHands (formerly OpenDevin) was created as a free, modular, and secure alternative. It is a full-fledged agent framework capable of autonomously cloning repositories, analyzing documentation, reproducing bugs through test writing, modifying codebases, and pushing Pull Requests. Security is achieved through strict isolation: each agent session runs in its own ephemeral Docker environment (Sandboxing).

2. Architectural Taxonomy & Mental Model

The architectural model of OpenHands is based on an Event Stream and isolated execution:

┌─────────────────────────────────────────────────────────────┐
│                   OPENHANDS ARCHITECTURE                    │
├─────────────────────────────────────────────────────────────┤
│ 1. EventStream Core (EventController & AgentController)     │
│    Central communication bus for events Action ➔ Observation │
├─────────────────────────────────────────────────────────────┤
│ 2. Agent Reasoning Layer (ReAct / CodeAct / Planner)       │
│    Supports Claude 3.7 Sonnet, DeepSeek R1, OpenAI o1/o3    │
├─────────────────────────────────────────────────────────────┤
│ 3. Isolated Sandbox Runtime (Docker / MicroVM / gVisor)     │
│    • Execution: Bash shell with background process tracking   │
│    • File System: AST-based editors & workspace mounting     │
│    • Headless Browser: Chromium for UI tests and documentation│
│    • Jupyter / IPython: interactive REPL for data analysis    │
├─────────────────────────────────────────────────────────────┤
│ 4. Git & CI/CD Integrations: GitHub App, PR Automation       │
└─────────────────────────────────────────────────────────────┘
  1. Event Stream Architecture:
    • All communications in the system are typed as a chain of "Action ➔ Observation."
    • Any step taken by the agent (executing a bash command, modifying a file, opening a URL in the browser) is recorded as an action, while the system's response (output, error, screenshot) is recorded as an observation.
  2. Agent Framework Strategies:
    • Supports the CodeAct paradigm — an approach where the agent generates directly executable Python or Bash code instead of complex JSON structures, significantly improving the accuracy of complex multi-step operations.
  3. Isolated Environment (Docker Sandboxing):
    • Provides physical isolation of code. The user's repository is mounted as a working volume, and all system binaries, dependencies, and servers run inside the container.

3. Technical Pipeline & Internal Mechanics

The lifecycle of solving an engineering task in OpenHands:

  1. Initialization and Environment Deployment: The platform receives a task (e.g., a link to a GitHub Issue). OpenHands creates a new Docker container with a pre-configured project environment (Node.js, Python, Rust) and clones the target branch of the repository.
  2. Exploration and Reproduction of Defect (Repro Test Phase):
    • The agent performs a semantic search of files using ripgrep.
    • Before making fixes, the agent creates a separate test file (Reproduction Script) that fails on the existing bug.
  3. Autonomous Modification Cycle (CodeAct Loop):
    • The agent modifies the business logic.
    • Runs tests in the container's terminal.
    • Receives results: if the test fails again, analyzes the call stack and formulates a new action.
  4. Browser Verification (Optional UI Inspection): If the task involves a web interface, the agent spins up a local dev server, opens the page via headless Chromium, and checks the visual representation.
  5. PR Generation and Resource Cleanup: After passing all tests, the agent makes a git commit, pushes a new branch to GitHub, opens a Pull Request with a detailed description of the work done, and stops the container.

4. Production Engineering Scenarios

01. Automated Nightly Backlog Worker

Connecting OpenHands to the repository via GitHub Actions / Webhooks:

  • When a ticket is tagged with needs-ai-fix, the platform deploys a container and assigns the agent to resolve the task.
  • By morning, the team receives 5 ready Pull Requests with passing tests, ready for final human review.

02. Fully Secure Testing of Untrusted External Code

Auditing the security of third-party open-source libraries or suspicious scripts:

  • The agent explores the repository, runs static analyzers, and performs load tests.
  • Thanks to the Docker sandbox, attempts by external code to connect to the host system or download malicious software are completely blocked.

03. Batch Updating Company Microservices

The need to update Dockerfile or Helm chart configurations in 40 microservices:

  • OpenHands sequentially spins up an isolated environment for each microservice, applies changes, verifies the success of the local container build, and publishes a PR to the corresponding repository.

5. Pitfalls, Common Mistakes & Security

  • Danger of Mounting Host Docker Socket: Deploying OpenHands with the /var/run/docker.sock socket exposed inside the container without additional protection (Docker-out-of-Docker) is extremely dangerous. This grants the agent root access to the host machine and nullifies the sandbox.
  • Computational Resource Requirements: Running multiple agents in Docker in parallel requires a significant amount of RAM (16-32 GB) and a powerful CPU; otherwise, the system may crash due to OOM (Out Of Memory).
  • Infinite Token Consumption on Environment Failure: If the container lacks a system compiler or the network is broken, the agent may waste hundreds of thousands of tokens in futile attempts to install a missing package. Always configure session timeouts.
  • Leftover "Orphaned" Containers: In the event of a crash of the platform's main process, temporary containers and created volumes may remain in the system, gradually consuming server disk space.
/ Frequently Asked QuestionsSchema.org FAQPage

FAQ: OpenCode / OpenHands (formerly OpenDevin)

OpenHands is 100% open-source, allowing deployment of an autonomous agent locally or in a corporate cloud, supports any models (Claude 3.7, DeepSeek R1, local via Ollama), and does not transmit confidential code to third parties.
/ Internal links
All terms