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

# Docker Deployment

Deploy Vision Agents to production using Docker. For a complete Kubernetes setup with Helm charts, monitoring, and Grafana dashboards, see the [Kubernetes Deployment](/guides/kubernetes-deployment) guide.

## Key Considerations

| Factor         | Recommendation                                                           |
| -------------- | ------------------------------------------------------------------------ |
| **Region**     | US East for lowest latency (most AI providers default here)              |
| **CPU vs GPU** | CPU for most voice agents; GPU only if running local models              |
| **Scaling**    | Use the [HTTP server](/guides/http-server) for multi-session deployments |

## Docker

Two Dockerfiles are provided:

**CPU** (`Dockerfile`) - Small, fast to build (\~150MB)

```dockerfile theme={null}
FROM python:3.13-slim
WORKDIR /app
RUN pip install uv
COPY pyproject.toml uv.lock agent.py ./
EXPOSE 8080
ENV UV_LINK_MODE=copy
CMD ["sh", "-c", "uv sync --frozen && uv run agent.py serve --host 0.0.0.0 --port 8080"]
```

**GPU** (`Dockerfile.gpu`) - For local model inference (\~8GB)

```dockerfile theme={null}
FROM pytorch/pytorch:2.9.1-cuda12.8-cudnn9-runtime
WORKDIR /app
RUN pip install uv
COPY pyproject.toml uv.lock agent.py ./
EXPOSE 8080
ENV UV_LINK_MODE=copy
CMD ["sh", "-c", "uv sync --frozen && uv run agent.py serve --host 0.0.0.0 --port 8080"]
```

Build for Linux (required for cloud deployment):

```bash theme={null}
docker buildx build --platform linux/amd64 -t vision-agent .
```

<Info>
  Only use the GPU Dockerfile if running local models (Roboflow, local VLMs). Most voice agents use cloud APIs and don't need GPUs. Make sure CUDA drivers are installed and the base image matches your CUDA version.
</Info>

## Environment Variables

Create a `.env` file with your API keys:

```bash theme={null}
STREAM_API_KEY=your_key
STREAM_API_SECRET=your_secret
DEEPGRAM_API_KEY=your_key
ELEVENLABS_API_KEY=your_key
GOOGLE_API_KEY=your_key
```

For Kubernetes, create a secret:

```bash theme={null}
kubectl create secret generic vision-agent-env --from-env-file=.env
```

## Next Steps

<CardGroup cols={2}>
  <Card title="Built-in HTTP Server" icon="server" href="/guides/http-server">
    API endpoints, session limits, and authentication
  </Card>

  <Card title="Horizontal Scaling" icon="circle-nodes" href="/guides/horizontal-scaling">
    Scale across multiple servers with Redis
  </Card>

  <Card title="Kubernetes Deployment" icon="dharmachakra" href="/guides/kubernetes-deployment">
    Helm chart, Prometheus, and Grafana
  </Card>

  <Card title="Telemetry & Metrics" icon="chart-line" href="/core/telemetry">
    OpenTelemetry, Prometheus, and Jaeger setup
  </Card>
</CardGroup>
