services: senia: build: context: .. dockerfile: docker/Dockerfile args: USER_UID: 750 USER_GID: 750 image: senia/claude:latest container_name: senia restart: unless-stopped env_file: "../private/.senia.env" stdin_open: true tty: true ports: - "8000:8000" volumes: # workspace: read/write, this is where senia does its work - ../workspace:/workspace # claude config and auth: read/write so /login persists - ../claude:/home/senia/.claude - ../.claude.json:/home/senia/.claude.json # persona: real if submodule initialized, placeholder otherwise - ../private/CLAUDE.md:/home/senia/.claude/CLAUDE.md:ro # contexts: real if submodule initialized, empty dir otherwise # - ../private/contexts:/etc/senia/data/contexts:ro # dockerfile read-only: senia can read it, suggest edits in conversation, can't modify - ./Dockerfile:/etc/senia/Dockerfile:ro # mcp servers source, read-only - ../mcp:/etc/senia/mcp:ro - ../scripts:/etc/senia/scripts # data dir: read-write, where mcp servers store sqlite dbs and other state - ../private/data:/etc/senia/data