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

# Container Images

> Build and publish Siclaw container images for Kubernetes deployment.

## What Docker Supports Today

Siclaw ships three Dockerfiles, one per deployment image:

* `portal` — Web UI + REST API + DB (the user-facing front door)
* `runtime` — Control plane: channels, cron, AgentBox spawner
* `agentbox` — Per-user execution runtime (spawned by Runtime)

For a single-machine setup, use [CLI & Local Server](/install/cli). The repository does **not** include a supported `docker compose` deployment.

## Build Images

From the repo root:

```bash theme={null}
make docker REGISTRY=registry.example.com/myteam TAG=latest
```

That builds:

* `registry.example.com/myteam/siclaw-runtime:latest`
* `registry.example.com/myteam/siclaw-portal:latest`
* `registry.example.com/myteam/siclaw-agentbox:latest`

To build one image only:

```bash theme={null}
make docker-runtime  REGISTRY=registry.example.com/myteam TAG=latest
make docker-portal   REGISTRY=registry.example.com/myteam TAG=latest
make docker-agentbox REGISTRY=registry.example.com/myteam TAG=latest
```

## Push Images

```bash theme={null}
make push REGISTRY=registry.example.com/myteam TAG=latest
```

Or push individually:

```bash theme={null}
make push-runtime  REGISTRY=registry.example.com/myteam TAG=latest
make push-portal   REGISTRY=registry.example.com/myteam TAG=latest
make push-agentbox REGISTRY=registry.example.com/myteam TAG=latest
```

## Runtime Notes

* The Portal image serves the Web UI on container port `3003`.
* Runtime and AgentBox communicate over mTLS inside the cluster.
* The AgentBox image is designed to be spawned by the Runtime inside Kubernetes.
* Core skills are baked into the images; dynamic skills and credentials are synced at runtime.

## Next Step

After publishing images, continue with [Kubernetes Deployment](/install/kubernetes).
