GitHub - Simpleyyt/ai-manus: AI Manus is a general-purpose AI Agent system that supports running various tools and operations in a sandbox environment. (original) (raw)
English | δΈζ | Official Site | Documents
AI Manus is a general-purpose AI Agent system that supports running various tools and operations in a sandbox environment. Now with Claw β a deeply integrated OpenClaw AI assistant that brings one-click deployment, per-user isolated containers, and seamless chat history to the Manus ecosystem.
Enjoy your own agent with AI Manus!
π Join QQ Group(1005477581)
β€οΈ Like AI Manus? Give it a star π or Sponsor to support the development!
π Try a Demo
π Blog: Rebuild Manus with WebUI and Sandbox
Demos
Basic Features
ui.mp4
Browser Use
- Task: Latest LLM papers en_llm.mov
Code Use
- Task: Write a complex Python example en_python.mov
Key Features
- Deployment: Minimal deployment requires only an LLM service, with no dependency on other external services.
- Tools: Supports Terminal, Browser, File, Web Search, and messaging tools with real-time viewing and takeover capabilities, supports external MCP tool integration.
- Claw: Integrated OpenClaw AI assistant with one-click deployment, per-user isolated containers, auto-expiry countdown, and full chat history.
- Sandbox: Each task is allocated a separate sandbox that runs in a local Docker environment.
- Task Sessions: Session history is managed through MongoDB/Redis, supporting background tasks.
- Conversations: Supports stopping and interrupting, file upload and download.
- Multilingual: Supports both Chinese and English.
- Authentication: User login and authentication.
Development Roadmap
- Tools: Support for Deploy & Expose.
- Sandbox: Support for mobile and Windows computer access.
- Deployment: Support for K8s and Docker Swarm multi-cluster deployment.
Overall Design
When a user initiates a conversation:
- Web sends a request to create an Agent to the Server, which creates a Sandbox through
/var/run/docker.sockand returns a session ID. - The Sandbox is an Ubuntu Docker environment that starts Chrome browser and API services for tools like File/Shell.
- Web sends user messages to the session ID, and when the Server receives user messages, it forwards them to the PlanAct Agent for processing.
- During processing, the PlanAct Agent calls relevant tools to complete tasks.
- All events generated during Agent processing are sent back to Web via SSE.
When users browse tools:
- Browser:
- The Sandbox's headless browser starts a VNC service through xvfb and x11vnc, and converts VNC to websocket through websockify.
- Web's NoVNC component connects to the Sandbox through the Server's Websocket Forward, enabling browser viewing.
- Other tools: Other tools work on similar principles.
Environment Requirements
This project primarily relies on Docker for development and deployment, requiring a relatively new version of Docker:
- Docker 20.10+
- Docker Compose
Model capability requirements:
- Supports LangChain chat model providers (default
openai) - Support for FunctionCall
- Support for Json Format output
Deepseek and GPT models are recommended.
Deployment Guide
Docker Compose is recommended for deployment:
services: frontend: image: simpleyyt/manus-frontend ports: - "5173:80" depends_on: - backend restart: unless-stopped networks: - manus-network environment: - BACKEND_URL=http://backend:8000
backend: image: simpleyyt/manus-backend depends_on: - sandbox - claw restart: unless-stopped volumes: - /var/run/docker.sock:/var/run/docker.sock:ro #- ./mcp.json:/etc/mcp.json # Mount MCP servers directory networks: - manus-network environment: # OpenAI API base URL - API_BASE=https://api.openai.com/v1 # OpenAI API key, replace with your own - API_KEY=sk-xxxx # LLM model name - MODEL_NAME=gpt-4o # LLM temperature parameter, controls randomness #- TEMPERATURE=0.7 # Maximum tokens for LLM response #- MAX_TOKENS=2000 # More configuration options: https://docs.ai-manus.com/#/configuration
sandbox: image: simpleyyt/manus-sandbox command: /bin/sh -c "exit 0" # prevent sandbox from starting, ensure image is pulled restart: "no" networks: - manus-network
claw: image: simpleyyt/manus-claw entrypoint: /bin/sh -c "exit 0" # prevent claw from starting, ensure image is pulled restart: "no" networks: - manus-network
mongodb: image: mongo:7.0 volumes: - mongodb_data:/data/db restart: unless-stopped #ports: # - "27017:27017" networks: - manus-network
redis: image: redis:7.0 restart: unless-stopped networks: - manus-network
volumes: mongodb_data: name: manus-mongodb-data
networks: manus-network: name: manus-network driver: bridge
Save as docker-compose.yml file, and run:
Note: If you see
sandbox-1 exited with code 0, this is normal, as it ensures the sandbox image is successfully pulled locally.
Open your browser and visit http://localhost:5173 to access Manus. For more configuration options, see: https://docs.ai-manus.com/#/en/configuration
Development Guide
Project Structure
This project consists of the following sub-projects:
frontend: Manus frontendbackend: Manus backendsandbox: Manus sandboxclaw: Manus Claw β OpenClaw plugin & container image bridging OpenClaw Gateway with Manus backendmockserver: Mock LLM server (for development/testing)
Environment Setup
- Download the project:
git clone https://github.com/simpleyyt/ai-manus.git cd ai-manus
- Copy the configuration file:
- Modify the configuration file. At minimum set
API_KEY. See .env.example or Configuration for the full list of options:
API_KEY=sk-xxxx API_BASE=https://api.openai.com/v1 MODEL_NAME=gpt-4o
Development and Debugging
- Run in debug mode:
Equivalent to docker compose -f docker-compose-development.yaml up
./dev.sh up
All services will run in reload mode, and code changes will be automatically reloaded. The exposed ports are as follows:
- 5173: Web frontend port
- 8000: Server API service port
- 8080: Sandbox API service port
- 5900: Sandbox VNC port
- 9222: Sandbox Chrome browser CDP port
Note: In Debug mode, only one sandbox will be started globally
- When dependencies change (
backend/pyproject.tomlorfrontend/package.json), clean up and rebuild:
Clean up all related resources
./dev.sh down -v
Rebuild images
./dev.sh build
Run in debug mode
./dev.sh up
Image Publishing
export IMAGE_REGISTRY=your-registry-url export IMAGE_TAG=latest
Build images
./run build
Push to the corresponding image repository
./run push
