---
title: Managed Agents Architecture (public)
description: How Harness Runtime, Action Gateway, and the DigitalOcean services around them fit together to run and govern AI agents.
product: Managed Agents
url: https://docs.digitalocean.com/products/managed-agents/agent-harness-runtime/concepts/architecture/
last_updated: "2026-10-12"
---

> **For AI agents:** The documentation index is at [https://docs.digitalocean.com/llms.txt](https://docs.digitalocean.com/llms.txt). Markdown versions of pages use the same URL with `index.html.md` in place of the HTML page (for example, append `index.html.md` to the directory path instead of opening the HTML document).

# Managed Agents Architecture (public)

DigitalOcean Harness Runtime provides managed, hardware-isolated microVM sandboxes with built-in tools such as Chromium to run harnesses and execute arbitrary code. Rich lifecycle APIs preserve conversational history and working state across sessions, letting you pause, resume, and fork work to control costs and adapt to the nonlinear nature of agentic workflows. Scale complete agents such as Claude Code or use sandboxes independently for code execution, all through the same service. See [What You Can Build](https://docs.digitalocean.com/products/managed-agents/agent-harness-runtime/details/what-you-can-build/index.html.md) for example use cases.

Managed Agents has two services that work together but scale independently. [Harness Runtime](https://docs.digitalocean.com/products/managed-agents/agent-harness-runtime/index.html.md) runs the agent, and [Action Gateway](https://docs.digitalocean.com/products/managed-agents/action-gateway/index.html.md) governs the tools it calls. Around them sit the DigitalOcean services an agent reaches for while it works: model inference, storage, and data.

![Managed Agents architecture. A Managed Agents boundary contains Harness Runtime, which runs Claude Code, Codex, OpenCode, Hermes, LangGraph, CrewAI, or your own OCI image unmodified in a microVM, and Action Gateway, which fronts 16,000 or more tools behind one governed endpoint. Tool calls pass between them. Signals analyzes conversations from Harness Runtime and Serverless Inference. Outside the boundary, Managed Agents connects to Inference Engine for model calls, Storage for reads and writes, and Data services for queries.](https://docs.digitalocean.com/screenshots/managed-agents/architecture.7fbd90d93e2954b7f5ef84af0622788f76f578ed0596e7db5f7fef31f973ee2e.png)

## What You Bring

You supply the agent and the credentials. DigitalOcean supplies everything under it.

- **An agent.** A coding agent or framework you already use, such as Codex CLI, Claude Code, OpenCode, Hermes, LangGraph, or CrewAI, or your own container image. Which one you pick is the [adapter](https://docs.digitalocean.com/products/managed-agents/agent-harness-runtime/concepts/agent-adapters/index.html.md).
- **A trigger.** A CLI command, a webhook, a cron schedule, or a message in the Control Panel.
- **Tools and credentials.** The provider accounts and API keys the agent needs for services like GitHub, Jira, or your own APIs.

You declare all of it in an [environment](https://docs.digitalocean.com/products/managed-agents/agent-harness-runtime/concepts/environments/index.html.md), written as a YAML [environment spec](https://docs.digitalocean.com/products/managed-agents/agent-harness-runtime/reference/environment-spec/index.html.md) or built in the Control Panel.

## Harness Runtime

Harness Runtime provisions one sandbox per [session](https://docs.digitalocean.com/products/managed-agents/agent-harness-runtime/concepts/sessions/index.html.md). The sandbox is a lightweight microVM, and isolation is enforced by the hypervisor rather than by container namespaces, so nothing an agent does in one session reaches another session or another customer.

Two things live inside that boundary:

- **Your agent, unmodified.** The agent or framework runs as it ships. Harness Runtime translates its native output into one event vocabulary rather than changing the agent itself.
- **Your workspace.** The working directory the agent reads and writes. Repositories, uploaded files, and build artifacts live there.

Sessions pause, resume, checkpoint, fork, and roll back. Pausing preserves the full machine state and stops compute charges, so a session costs you only while it is actively working.

## Action Gateway

Action Gateway is a managed MCP endpoint that gives agents access to tools without putting credentials in the model context. Credentials are brokered at execution time: the agent requests a tool call, Action Gateway resolves the credential from Secrets Manager, runs the call, and returns the result. The agent never holds the key.

Behind that single endpoint sit more than 16,000 tools, covering providers such as GitHub, Jira, Stripe, PagerDuty, Sentry, Notion, and Shopify, along with web search, web fetch, browser automation, and any MCP server you host yourself. Per-tool [permission policies](https://docs.digitalocean.com/products/managed-agents/agent-harness-runtime/concepts/permissions/index.html.md) decide what the agent may call, must ask about, or may never touch.

Action Gateway also works on its own, without Harness Runtime, as an MCP endpoint for any client. See the [Action Gateway documentation](https://docs.digitalocean.com/products/managed-agents/action-gateway/index.html.md).

## Signals

[Signals](https://docs.digitalocean.com/products/managed-agents/agent-harness-runtime/how-to/use-signals/index.html.md) analyzes conversations from Harness Runtime and chat completions from Serverless Inference, detecting behavioral patterns such as user frustration, failed tool calls, and execution loops. You can view sessions, dialogues, and detected signals with `doctl`, and export the data for offline analysis.

## Connected Services

Three groups of DigitalOcean services sit alongside a session:

- **Inference Engine.** Model calls route to more than 75 open and proprietary models, or to your own provider when you configure the environment with its endpoint and key.
- **Storage.** Artifacts and session state that need to outlive a single run.
- **Data services.** The records your agents read and update, including Managed Databases, Kafka, and Valkey.

## Traffic Separation

Managed Agents separates inbound and outbound traffic because the two differ by orders of magnitude. Inbound is a developer typing a prompt every few minutes. Outbound is every token the model produces, every tool result, and every file change, for every active session at once.

The control path carries session creation, developer input, and billing. The data path carries event streaming and never touches the privileged management network.