4 Commits

Author SHA1 Message Date
Rohit Kushwaha
8aa6423a18 chore: add resource limits to docker-compose (8GB RAM, 4 CPUs) 2026-03-19 15:57:30 +05:30
Rohit Kushwaha
ff7ab6227f fix(docker): production-ready Docker image with workspace, CLI backends, and networking (#254)
* fix(docker): mount workspace volume for agent-created files (#238)

Files created by the agent (via Claude SDK Write/Bash tools or native
filesystem tools) were landing in the container's ephemeral filesystem
and lost on restart. This adds a dedicated workspace directory that is
bind-mounted to the host, so agent-created files persist and are
directly accessible.

- Dockerfile: create /home/pocketpaw/workspace, set FILE_JAIL_PATH env
- docker-compose.yml: bind-mount ./workspace to the container workspace
- claude_sdk.py: use settings.file_jail_path as cwd instead of Path.home()

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(docker): install Node.js + Claude Code CLI in image

The claude_agent_sdk backend requires the `claude` CLI binary (a Node.js
package). Without Node.js and the CLI installed, the backend errors with
"Claude Code CLI not found".

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(docker): also install Codex CLI for codex_cli backend

Node.js is already in the image for Claude Code CLI — adding
@openai/codex in the same npm install so the codex_cli backend
also works out of the box.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(health): correct claude-agent-sdk package name in health checks

The backend dependency check and playbook referenced the wrong package
name `claude-code-sdk` instead of `claude-agent-sdk`, causing a false
FAIL on the --doctor health check.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(docker): add host.docker.internal for host-side Ollama access

Containers can't reach localhost on the host. Adding extra_hosts with
host-gateway lets the container resolve host.docker.internal, so users
running Ollama on the host can set:
  POCKETPAW_OLLAMA_HOST=http://host.docker.internal:11434

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: update Docker deployment docs for workspace volume and Ollama

- Document workspace bind mount and POCKETPAW_FILE_JAIL_PATH
- Add host Ollama instructions (host.docker.internal)
- Note Node.js + Claude Code CLI + Codex CLI in image overview
- Add Copilot SDK limitation note
- Update README Docker section with workspace and Ollama hints

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(docker): harden Node.js install and document image size

Replace curl|bash NodeSource script with multi-stage copy from the
official node:22-slim image, eliminating unpinned remote script
execution. Add image size callout (~200 MB) to Docker docs with
instructions for stripping the Node.js layer.

Addresses review feedback from #254.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 22:53:40 +05:30
Rohit Kushwaha
b6e24334bb fix: rename POCKETCLAW_ env prefix and paths to POCKETPAW_
Complete the user-facing rename from pocketclaw to pocketpaw across
env vars, Docker paths (~/.pocketclaw → ~/.pocketpaw), and all
documentation references.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 23:44:46 +05:30
Rohit Kushwaha
ccf321e994 Add Docker support with multi-stage build and Compose profiles
Adds a production-ready Dockerfile (multi-stage, non-root user, Playwright
Chromium, tesseract OCR) and docker-compose.yml with optional Ollama and
Qdrant services behind Compose profiles. Includes .env.example template,
.dockerignore, and updated README + docs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 21:39:22 +05:30