AI Manus is a general-purpose AI Agent system that supports running various tools and operations in a sandbox environment.
Enjoy your own agent with AI Manus!
👏 Join QQ Group(1005477581)
ui.mp4
- Task: Latest LLM papers
en_llm.mov
- Task: Write a complex Python example
en_python.mov
- 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.
- 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.
- Tools: Support for Deploy & Expose.
- Sandbox: Support for mobile and Windows computer access.
- Deployment: Support for K8s and Docker Swarm multi-cluster deployment.
- Authentication: User login and authentication.
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.sock
and 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.
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:
- Compatible with OpenAI interface
- Support for FunctionCall
- Support for Json Format output
Deepseek and GPT models are recommended.
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
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
# MongoDB connection URI
#- MONGODB_URI=mongodb://mongodb:27017
# MongoDB database name
#- MONGODB_DATABASE=manus
# MongoDB username (optional)
#- MONGODB_USERNAME=
# MongoDB password (optional)
#- MONGODB_PASSWORD=
# Redis server hostname
#- REDIS_HOST=redis
# Redis server port
#- REDIS_PORT=6379
# Redis database number
#- REDIS_DB=0
# Redis password (optional)
#- REDIS_PASSWORD=
# Sandbox server address (optional)
#- SANDBOX_ADDRESS=
# Docker image used for the sandbox
- SANDBOX_IMAGE=simpleyyt/manus-sandbox
# Prefix for sandbox container names
- SANDBOX_NAME_PREFIX=sandbox
# Time-to-live for sandbox containers in minutes
- SANDBOX_TTL_MINUTES=30
# Docker network for sandbox containers
- SANDBOX_NETWORK=manus-network
# Chrome browser arguments for sandbox (optional)
#- SANDBOX_CHROME_ARGS=
# HTTPS proxy for sandbox (optional)
#- SANDBOX_HTTPS_PROXY=
# HTTP proxy for sandbox (optional)
#- SANDBOX_HTTP_PROXY=
# No proxy hosts for sandbox (optional)
#- SANDBOX_NO_PROXY=
# Search engine configuration (options: baidu, google)
- SEARCH_PROVIDER=baidu
# Google Search API key for web search capability (only needed when SEARCH_PROVIDER=google)
#- GOOGLE_SEARCH_API_KEY=
# Google Custom Search Engine ID (only needed when SEARCH_PROVIDER=google)
#- GOOGLE_SEARCH_ENGINE_ID=
# MCP configuration file path
#- MCP_CONFIG_PATH=/etc/mcp.json
# Application log level
- LOG_LEVEL=INFO
sandbox:
image: simpleyyt/manus-sandbox
command: /bin/sh -c "exit 0" # prevent sandbox 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:
docker compose up -d
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.
This project consists of three independent sub-projects:
frontend
: manus frontendbackend
: Manus backendsandbox
: Manus sandbox
- Download the project:
git clone https://github.com/simpleyyt/ai-manus.git
cd ai-manus
- Copy the configuration file:
cp .env.example .env
- Modify the configuration file:
# Model provider configuration
API_KEY=
API_BASE=http://mockserver:8090/v1
# Model configuration
MODEL_NAME=deepseek-chat
TEMPERATURE=0.7
MAX_TOKENS=2000
# MongoDB configuration
#MONGODB_URI=mongodb://mongodb:27017
#MONGODB_DATABASE=manus
#MONGODB_USERNAME=
#MONGODB_PASSWORD=
# Redis configuration
#REDIS_HOST=redis
#REDIS_PORT=6379
#REDIS_DB=0
#REDIS_PASSWORD=
# Sandbox configuration
#SANDBOX_ADDRESS=
SANDBOX_IMAGE=simpleyyt/manus-sandbox
SANDBOX_NAME_PREFIX=sandbox
SANDBOX_TTL_MINUTES=30
SANDBOX_NETWORK=manus-network
#SANDBOX_CHROME_ARGS=
#SANDBOX_HTTPS_PROXY=
#SANDBOX_HTTP_PROXY=
#SANDBOX_NO_PROXY=
# Search engine configuration
# Options: baidu, google
SEARCH_PROVIDER=baidu
# Optional: Google search configuration (only needed when SEARCH_PROVIDER=google)
#GOOGLE_SEARCH_API_KEY=
#GOOGLE_SEARCH_ENGINE_ID=
# MCP configuration
#MCP_CONFIG_PATH=/etc/mcp.json
# Log configuration
LOG_LEVEL=INFO
- 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 (requirements.txt or 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
export IMAGE_REGISTRY=your-registry-url
export IMAGE_TAG=latest
# Build images
./run build
# Push to the corresponding image repository
./run push