---
title: "Build from source"
url: "/docs/proxy/lens/deployment/development"
canonical_url: "https://docs.litellm.ai/docs/proxy/lens/deployment/development"
type: "docs"
last_updated: "2026-10-08"
summary: "Build matching Lens images or run the services with hot reload."
related:
  - "/docs/proxy/lens/deployment/upgrades"
  - "/docs/proxy/lens/first-trace"
---
# Build from source

> Index of all LiteLLM docs: https://docs.litellm.ai/llms.txt


Use this page when developing Lens. For published images, use [Releases and images](./releases.md).

Build from the same source commit and `LITELLM_RELEASE_TAG` as your gateway:

```bash
export LITELLM_RELEASE_TAG='<gateway-release-identity>'
export LENS_WORKER_IMAGE='<your-registry>/litellm-lens-worker:<image-tag>'
docker build --build-arg LITELLM_RELEASE_TAG="$LITELLM_RELEASE_TAG" \
  -f deploy/lens/Dockerfile -t "$LENS_WORKER_IMAGE" .
docker push "$LENS_WORKER_IMAGE"
```

Use a registry your host can pull from. The image supports native amd64 and arm64. Development images use `ghcr.io/berriai/litellm-lens-worker-dev:sha-<full-commit>`; an image is available only after that commit's build and publication succeed.

## Local development

For hot reload, start LiteLLM, Lens, and the dashboard from the repository root:

```bash
make lens-dev
```

Set `LENS_DEV_PROXY_PORT` and `LENS_DEV_UI_PORT` to change the local ports. For containers, pass the same release identity to both builds. Unversioned or incompatible workers are refused before claiming work.

## Related pages

- [Upgrade Lens](https://docs.litellm.ai/docs/proxy/lens/deployment/upgrades.md)
- [Send your first trace](https://docs.litellm.ai/docs/proxy/lens/first-trace.md)
