Skip to content

feat: support non-Docker development environment - #176

Draft
Simpleyyt wants to merge 2 commits into
mainfrom
cursor/non-docker-dev-environment-f28c
Draft

feat: support non-Docker development environment#176
Simpleyyt wants to merge 2 commits into
mainfrom
cursor/non-docker-dev-environment-f28c

Conversation

@Simpleyyt

@Simpleyyt Simpleyyt commented Jul 14, 2026

Copy link
Copy Markdown
Owner

Summary

Adds first-class support for developing AI Manus without Docker.

  • dev-local.sh — orchestrates the whole dev stack as plain host processes: mongodb, redis, mockserver, sandbox, backend, frontend. Supports up [service...], down, status, logs <service>. Reads .env and automatically rewrites Docker Compose hostnames (mongodb/redis/mockserver/backend) to localhost, so the same .env works for both ./dev.sh and ./dev-local.sh. Reuses MongoDB/Redis instances already listening on standard ports. Runtime state (PIDs, logs, data, isolated Python venvs) lives in .dev-local/ (gitignored), so it never clashes with root-owned .venv/node_modules leftovers from the Docker dev stack.
  • Sandbox standalone modeSupervisorService no longer crashes on import when supervisord is absent; it falls back to standalone mode: GET /api/v1/supervisor/status returns a synthetic RUNNING status (so the backend readiness check passes), shell/file APIs operate on the host, and supervisord-backed actions (stop/restart/shutdown) return a clear error.
  • Docs — non-Docker development sections added to README.md / README_zh.md, AGENTS.md, CLAUDE.md, .cursor/skills/starter.md, sandbox READMEs, and .env.example (synced into docs/*/quick_start.md via ./update_doc.sh).

Limitations of the non-Docker mode (documented): sandbox shell/file tools run directly on the host (no isolation); browser tools are unavailable (no Chrome/CDP/VNC); Claw is not started.

Testing

Verified end-to-end on a machine without using Docker for any service:

  • ./dev-local.sh up started all six services; status/logs/down work, and down cleanly kills the full process trees.
  • Full agent session via the frontend (mockserver LLM): plan → message → search → 3× file_write → shell_exec (ls -a terminal panel) → browser_navigate (fails as expected without Chrome, flow continues) → Task Completed with attachments. Files really appeared on the host (/home/ubuntu/example.{txt,md,py}).

non_docker_stack_agent_session_demo.mp4

Completed session with attachments

  • cd sandbox && uv run pytest against the standalone sandbox: 3 passed.
  • cd backend && uv run pytest against the non-Docker backend: identical results to the Docker-compose baseline (auth-suite failures are pre-existing on main with AUTH_PROVIDER=password: 5 failed / 17 passed on both stacks).

To show artifacts inline, enable in settings.

Open in Web Open in Cursor 

cursoragent and others added 2 commits July 14, 2026 18:07
- Add dev-local.sh to run the full dev stack (mongodb, redis, mockserver,
  sandbox, backend, frontend) as plain host processes without Docker
- Sandbox: fall back to standalone mode when supervisord is unavailable
  (synthetic RUNNING status; shell/file APIs work, supervisord actions error)
- Document non-Docker development in READMEs, AGENTS.md, CLAUDE.md,
  starter skill, and .env.example (synced to docs via update_doc.sh)

Co-authored-by: Simpleyyt <simpleyyt@gmail.com>
- Record the session-leader pid from inside the setsid wrapper so 'down'
  kills the full process tree (uv/npm/uvicorn reloader children)
- Background the nohup command as a standalone statement to avoid a
  lingering subshell that keeps the script's stdout pipe open
- Isolate Python venvs under .dev-local/venvs to avoid clashing with
  root-owned .venv dirs left by the Docker dev stack; detect unwritable
  node_modules leftovers with a helpful error

Co-authored-by: Simpleyyt <simpleyyt@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants