gentle-apple-32922
05/20/2026, 9:20 PMgentle-apple-32922
05/20/2026, 9:25 PMnutritious-balloon-65098
05/20/2026, 9:26 PMnutritious-balloon-65098
05/20/2026, 9:27 PMdev-docker.mjs script and all dev:docker npm commands entirely. The dev stack was replaced with a uvx-based approach (agent-server + automation + Vite + ingress), so Docker is simply no longer needed to run the project locally. npm run dev now handles everything.
Is uv/direct install as safe as Docker? No ā it is less safe for local laptop use. Docker previously provided a sandbox: the agent could only access a specific $PROJECTS_PATH folder you explicitly mounted into the container. With the current `uvx`/direct install, the agent runs natively on the host machine with full access to your entire filesystem. The README itself warns about this explicitly.
The removal was a deliberate tradeoff ā simplicity over sandboxing ā justified by the project's increasing focus on running on dedicated servers or cloud VMs (which are already isolated environments). The production Docker image (`ghcr.io/openhands/agent-canvas`) still exists for those who want containerized deployments; what was removed was only the local-dev Docker sandbox path.gentle-apple-32922
05/20/2026, 9:29 PMnutritious-balloon-65098
05/20/2026, 9:29 PMnutritious-balloon-65098
05/20/2026, 9:29 PMdev-docker.mjs script and all dev:docker npm commands entirely. The dev stack now runs via uvx (Python agent-server + automation + Vite + ingress proxy), so Docker is no longer needed as a development dependency. npm run dev just works.
Question 2: Is `uv`/direct install as safe as Docker?
No ā it's less safe for local laptop use. Docker sandboxed the agent to only the mounted $PROJECTS_PATH folder. The direct uvx approach gives the agent-server full host filesystem access. The README even has an explicit ā ļø warning about this. The tradeoff was made because the project is increasingly oriented toward servers/VMs (already isolated), not laptops.
Question 3: Why couldn't the agent access the CSV?
Almost certainly because the old Docker-based stack was still running when the file path was provided. Docker only mounted $PROJECTS_PATH ā files outside that folder were invisible to the agent regardless of what path was given.
Question 4: Do you need a clean install?
No, npm install is sufficient. Just stop the old server and run npm run dev (the old dev:docker commands no longer exist in the codebase).
Question 5: Is Docker completely gone?
Gone from the dev workflow, yes. The production Docker image (<http://ghcr.io/openhands/agent-canvas|ghcr.io/openhands/agent-canvas> on GHCR) still exists for self-hosted deployments, but it's not used for local development anymore.gentle-apple-32922
05/20/2026, 9:34 PMnutritious-balloon-65098
05/20/2026, 9:34 PMwooden-umbrella-84098
05/20/2026, 9:35 PMnutritious-balloon-65098
05/20/2026, 9:36 PMdev-docker.mjs, npm run dev:docker) were deleted entirely. npm run dev now uses uvx to spin up the agent-server directly, so Docker is no longer needed as a dev dependency.
Q2: Is `uv`/direct install as safe as Docker?
No ā it's less safe for laptop use. Docker sandboxed the agent to only the mounted $PROJECTS_PATH folder. The direct install gives the agent full host filesystem access. The README even warns about this explicitly. Docker is still present as a production distribution image (`ghcr.io/openhands/agent-canvas`) but is no longer part of the dev workflow.
Q3: Why couldn't the agent access a CSV after pulling latest?
Almost certainly because the old Docker-based stack was still running (only seeing the mounted folder), not the new uvx-based stack. A simple stop + npm run dev restart would fix it. No clean install needed ā npm install is sufficient.
Q4: How to still use Docker personally for sandboxing?
Two options:
1. Run the all-in-one image (`ghcr.io/openhands/agent-canvas`) with a -v mount
2. Run just the agent-server image (`ghcr.io/openhands/agent-server`) in Docker, run the frontend locally via npm run dev, and add the Dockerized backend via Manage Backends ā Add a Backend in the UI ā letting you flip between sandboxed and unsandboxed backends from the same frontend.wooden-umbrella-84098
05/20/2026, 9:37 PMquick-window-91705
05/20/2026, 9:37 PMgentle-apple-32922
05/21/2026, 3:21 PMquick-window-91705
05/21/2026, 3:31 PMnpm run dev? which branch are you on?gentle-apple-32922
05/21/2026, 3:39 PMgit checkout main
git pull origin main
npm install
npm run devquick-window-91705
05/21/2026, 3:41 PMrohitmalhotra@RohitMalhotra-MacBook-Pro agent-canvas % npm run dev
> @openhands/agent-canvas@1.0.0-alpha.3 dev
> node --env-file-if-exists=.env scripts/dev-with-automation.mjs
.env not found. Continuing without it.
Agent Canvas + Automation Development Stack
[1/2] Checking prerequisites...
ā uvx found
ā npm found
ā frontend dependencies found
[ports] Allocating ports...
[2/2] Starting services...
15:40:11 [agent-server] Starting on port 18000...
15:40:11 [agent-server] Using PyPI (1.23.0, default)
15:40:11 [agent-server] Downloading litellm (16.2MiB)
15:40:12 [agent-server] Downloaded litellm
15:40:12 [agent-server] Installed 187 packages in 445ms
15:40:17 [agent-server] 11:40:17 - LiteLLM:WARNING: common_utils.py:979 - litellm: could not pre-load bedrock-runtime response stream shape ā Bedrock event-stream decoding will be unavailable. Error: No module named 'botocore'
15:40:17 [agent-server] 11:40:17 - LiteLLM:WARNING: common_utils.py:24 - litellm: could not pre-load sagemaker-runtime response stream shape ā SageMaker event-stream decoding will be unavailable. Error: No module named 'botocore'
^C
Shutting down...
15:40:19 [agent-server] Stopping...
We seem to be using uvx to spin up the agents server (not docker)
what logs are you seeing?gentle-apple-32922
05/21/2026, 4:57 PMcd documents/GitHub/agent-canvas
git checkout main
git pull origin main
git restore package-lock.json // had a change that didn't match
npm install
npm run dev
And, it seems to be running now and no docker container running thinky spin okay it'gentle-apple-32922
05/21/2026, 4:58 PMgentle-apple-32922
05/21/2026, 5:01 PMgentle-apple-32922
05/21/2026, 5:06 PM$env:PYTHONUTF8 = "1"
node --env-file-if-exists=.env .\scripts\dev-static.mjs --skip-build
Allows me to avoid the bad getaway