Skip to content

Docker Setup

The assistant runs as a multi-container Docker application with three services:

ServiceImagePurpose
assistant-appCustom (Bun + Next.js)API backend + web frontend
assistant-dbpgvector/pgvector:pg16PostgreSQL with vector extensions
assistant-redisredis:7-alpineCaching and pub/sub
Terminal window
# Copy and configure environment
cp .env.example .env.docker
# Build and start
docker compose up --build -d
# View logs
docker compose logs -f assistant
PortDefaultEnv Variable
API3015OCTIPUS_API_PORT
Web UI3017OCTIPUS_WEB_PORT
PostgreSQL5442POSTGRES_PORT
Redis6389REDIS_PORT
VolumeContainer PathPurpose
assistant-workspace/data/workspaceAgent workspace (files created by agents)
assistant-documents/data/documentsUploaded documents
assistant-extensions/data/extensionsPlugins and extensions
assistant-pgdataPostgreSQL dataDatabase persistence
assistant-redisRedis dataCache persistence

The container includes these tools for agent shell access:

CategoryTools
Corebash, curl, wget, git, ca-certificates
Text/Datajq, sed, awk, grep, ripgrep, less
Filestree, file, zip, unzip, tar, gzip, rsync
Buildmake, bun
Scriptingpython3 (minimal)
Remoteopenssh-client (ssh, scp, sftp)
  • Filesystem — full access within mounted volumes
  • Shell — commands run inside the container using installed tools
  • Git — fully functional (SSH keys need mounting)
  • Browser Extension — runs in user’s real browser, connects via WebSocket
  • Playwright — headless browser inside the container
  • Database & Redis — full access
  • MCP Servers — SSE transport works; stdio-based must be installed in the container
  • Network — full outbound access
CapabilityReasonWorkaround
Host CLI toolsContainer isolationInstall in Dockerfile or use Docker socket
Host filesystemOnly mounted volumes visibleAdd bind mounts in docker-compose.yml
Host processesContainer isolationUse Docker socket for other containers
GUI applicationsNo display serverUse browser extension (runs on host)

The Docker socket is mounted into the container, allowing Octipus to spawn sibling containers on the host’s Docker engine:

volumes:
- //var/run/docker.sock:/var/run/docker.sock

This enables running language-specific tools, building Docker images, and managing other containers. Docker socket access is powerful — only enable in trusted environments.

services:
assistant:
volumes:
- /path/on/host:/data/workspace/host-files:ro # read-only
- ~/projects:/data/workspace/projects # read-write

Mount into subdirectories of /data/workspace so agents can access them via the filesystem tool.

Terminal window
# Rebuild and restart (preserves data volumes)
docker compose down && docker compose up --build -d
# Full reset (deletes all data)
docker compose down -v && docker compose up --build -d