> ## Documentation Index
> Fetch the complete documentation index at: https://docs.charmos.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Base Images

Charm runs agents inside managed container environments. In the decoupled architecture, base images are automatically selected based on your `adapter_type` to ensure the smallest footprint and fastest cold-start times.

## Automatic Selection

The Charm Cloud Runner automatically provisions the correct base image by reading your `charm.yaml` file:

```yaml theme={"theme":{"light":"min-light","dark":"min-dark"}}
runtime:
  adapter:
    type: "langchain" # Automatically maps to the LangChain Base Image
```

Valid default mappings include:

* **Custom / Python** (`type: "custom"` or `"python"`): Uses `runner-base`. Minimal Python environment for plain code agents.
* **LangChain** (`type: "langchain"`): Uses `runner-langchain`.
* **LangGraph** (`type: "langgraph"`): Uses `runner-langchain` (same image as LangChain).
* **CrewAI** (`type: "crewai"`): Uses `runner-crewai`.
* **OpenClaw** (`type: "openclaw"`): Uses `runner-openclaw` (Playwright, FFmpeg, OpenClaw engine).
* **Third-party adapter plugins**: Use whatever image you declare in `runtime.custom_image` — the runner does not map plugin names automatically.

When `runtime.custom_image` is set, adapter→image mapping is **ignored** and your URI is used directly.

## Custom Images

> \[!TIP]
> **Community Plugins**: Instead of building your own image from scratch, you can discover pre-built custom runtimes with tools like FFmpeg or Chromium in the [Community Plugins Registry](https://github.com/CharmAIOS/charm-community-plugin).

If the default images do not meet your needs (e.g., you need specialized system libraries, custom rendering engines, or are building your own adapter), you can override this behavior by providing a `custom_image` URL.

```yaml theme={"theme":{"light":"min-light","dark":"min-dark"}}
runtime:
  adapter:
    type: "custom"
  custom_image: "ghcr.io/your-org/your-custom-runtime:latest"
```

When `custom_image` is declared, the Cloud Runner completely ignores the adapter mapping and boots your provided Docker image directly.

Third-party adapter plugins (registered via `charm.adapters` entry points) **require** a `custom_image` that installs the plugin package — see [Custom Adapters](/guides/custom-adapters).

> **Note**: The legacy `runtime.mode` configuration (`standard` or `full`) is now deprecated and ignored by the Cloud Runner.

## Related Pages

* [Execution Modes](/platform/execution-modes)
* [Base Image Contributions](/oss/base-image)
* [Building Custom Runtimes](/guides/custom-runtimes)
