Run with Docker#
Lens Prism is published as a container image. One container runs one agent, with its database persisted in a mounted volume.
- Image:
ghcr.io/lensapp/prism-agent:latest - Architectures: linux/amd64, linux/arm64
- Port: 3003
- Data: the agent's SQLite database lives at
/data/agent.dbinside the container — mount a volume at/datato persist it.
Tagged versions (vYYYY.M.DDHHMMSS) and commit-SHA tags are published alongside latest.
Run the agent and attach the terminal UI#
To start the runtime in the background and attach your terminal to the prism TUI:
-
Export your model provider credential (e.g. for Bedrock):
export AWS_BEARER_TOKEN_BEDROCK=<YOUR-KEY> -
Run the image:
docker run -it -p 3003:3003 -v prism-data:/data -e AWS_BEARER_TOKEN_BEDROCK \ ghcr.io/lensapp/prism-agent:latest \ /bin/sh -c './start.sh > /dev/null 2>&1 & exec prism' -
-e AWS_BEARER_TOKEN_BEDROCK(no=) passes the value through from your parent shell, so export it first. -v prism-data:/datapersists the agent's database in theprism-datanamed volume across container restarts.-p 3003:3003exposes the runtime so you can also reach the web UI at http://localhost:3003.
Run the runtime only#
To run the HTTP runtime (web UI, Slack, WebSocket) without the attached TUI, run the image with its default entrypoint:
docker run -d --name prism \
-p 3003:3003 \
-v prism-data:/data \
-e AWS_BEARER_TOKEN_BEDROCK=<YOUR-KEY> \
ghcr.io/lensapp/prism-agent:latest
The container exposes a health check on GET /health.
To open a TUI against a running server container:
docker exec -it prism prism
Persist data#
Everything the agent knows — identity, conversation history, memory, scheduled tasks, and Slack mappings — lives in the single SQLite database at /data/agent.db. Mount a volume at /data (named volume or host bind mount) so it survives container restarts and image upgrades. Back up the agent by backing up that volume, or export a .prism snapshot from the web UI.
start.sh defaults DATABASE_URL to file:/data/agent.db; you generally don't need to set it. See Configuration for the rest of the environment variables.
What's in the image#
The image bundles the tools the agent's shell can reach (git, gh, kubectl, aws, jq, yq, ripgrep, python with pip, pandoc, poppler-utils, and tesseract, plus Claude Code) so the agent can do real work out of the box. It runs as a non-root node user and drops privileges after setup.
The python/pandoc/poppler/tesseract set — plus the Python libraries the Anthropic pdf/docx/xlsx/pptx skills import (openpyxl, python-pptx, pypdf, pdfplumber, Pillow, and more; see requirements.txt) — is the toolchain those document skills need. The image ships the toolchain, not the skills themselves; skills are installed at runtime into /data/skills. Because python is a node-owned, non-externally-managed interpreter, pip install works out of the box against PyPI, which is already reachable. LibreOffice is intentionally not bundled (size), so document skills' LibreOffice-backed conversion, recalc, and render paths are unavailable.