Skip to content

AI Manus is a general-purpose AI Agent system that supports running various tools and operations in a sandbox environment.

Notifications You must be signed in to change notification settings

Simpleyyt/ai-manus

Repository files navigation

AI Manus

English | 中文 | Documents

GitHub stars   License: MIT

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)

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.
  • 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.

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.
  • Authentication: User login and authentication.

Overall Design

Image

When a user initiates a conversation:

  1. 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.
  2. The Sandbox is an Ubuntu Docker environment that starts Chrome browser and API services for tools like File/Shell.
  3. Web sends user messages to the session ID, and when the Server receives user messages, it forwards them to the PlanAct Agent for processing.
  4. During processing, the PlanAct Agent calls relevant tools to complete tasks.
  5. All events generated during Agent processing are sent back to Web via SSE.

When users browse tools:

  • Browser:
    1. The Sandbox's headless browser starts a VNC service through xvfb and x11vnc, and converts VNC to websocket through websockify.
    2. 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:

  • Compatible with OpenAI interface
  • 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
    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.

Development Guide

Project Structure

This project consists of three independent sub-projects:

  • frontend: manus frontend
  • backend: Manus backend
  • sandbox: Manus sandbox

Environment Setup

  1. Download the project:
git clone https://github.com/simpleyyt/ai-manus.git
cd ai-manus
  1. Copy the configuration file:
cp .env.example .env
  1. 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

Development and Debugging

  1. 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

  1. 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

Image Publishing

export IMAGE_REGISTRY=your-registry-url
export IMAGE_TAG=latest

# Build images
./run build

# Push to the corresponding image repository
./run push

About

AI Manus is a general-purpose AI Agent system that supports running various tools and operations in a sandbox environment.

Resources

Stars

Watchers

Forks

Packages

No packages published