Manus X
No description available
Ask AI about Manus X
Powered by Claude Β· Grounded in docs
I know everything about Manus X. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
ManusX - Open Source General-Purpose AI Agent
English | δΈζ | π Documentation
ManusX is a fully privately deployable enterprise-grade AI Agent system that runs various tools and operations in isolated sandbox environments.
Build your own AI agent with complete control over your data - no external dependencies required!
π― Why ManusX?
- π’ Enterprise-Ready: Fully private deployment with no data leakage
- π§ Extensible: Built-in Skill system and MCP protocol support
- π Secure: Docker sandbox isolation for each task
- π Simple: Minimal setup - only requires an LLM API
- π Universal: Compatible with OpenAI, Anthropic, DeepSeek, and more
β¨ Key Features
| Feature | Description |
|---|---|
| π Easy Deployment | Minimal dependencies - only requires LLM service, no external services needed |
| π§ Rich Tools | Terminal, Browser, File, Web Search with real-time preview and takeover capabilities |
| π¦ Isolated Sandbox | Each task runs in an independent Docker container with Ubuntu + Chrome |
| πΎ Session Management | MongoDB/Redis powered session history and background task support |
| π¬ Interactive Dialog | Supports stop, interrupt, file upload/download, and real-time streaming |
| π Multi-language | Full Chinese and English UI support |
| π Flexible Auth | Multiple authentication modes: password, local, or none |
| π MCP Integration | Model Context Protocol for seamless tool extension |
| π Skill System | Domain expertise injection with three-layer loading architecture |
| β° Scheduled Tasks | Built-in task scheduling and background execution |
π₯ Demo
Browser Automation
Skill System
π Quick Start
Prerequisites
- Docker 20.10+ and Docker Compose
- LLM API (OpenAI, Anthropic, DeepSeek, or OpenAI-compatible)
- 8GB+ RAM recommended
One-Command Deployment
# Clone the repository
git clone https://github.com/nuoyimanaituling/manus-x.git
cd manus-x
# Configure environment variables
cp .env.example .env
# Edit .env and set your API_KEY, API_BASE, MODEL_NAME
# Start all services
./run.sh up -d
# Visit http://localhost:5173
That's it! Your ManusX instance is now running! π
Key Configuration
Edit .env file with your settings:
| Variable | Required | Description | Example |
|---|---|---|---|
API_KEY | β Yes | LLM API Key | sk-xxx |
API_BASE | β Yes | LLM API Base URL | https://api.openai.com/v1 |
MODEL_NAME | β Yes | Model Name | gpt-4o, deepseek-chat |
AUTH_PROVIDER | βͺ No | Auth mode | password (default), local, none |
JWT_SECRET_KEY | β οΈ Conditional | JWT Secret | Required if AUTH_PROVIDER=password |
SEARCH_PROVIDER | βͺ No | Search engine | bing, google, baidu |
MONGODB_URI | βͺ No | MongoDB connection | mongodb://mongodb:27017 |
REDIS_HOST | βͺ No | Redis server | redis |
Note: For complete environment variable list, see
.env.example
ποΈ Architecture
System Overview
flowchart TB
subgraph Frontend["π₯οΈ Frontend"]
UI["π¬ Web UI"]
NoVNC["πΌοΈ NoVNC"]
end
subgraph Backend["βοΈ Backend"]
API["π REST API"]
subgraph Agent["π€ PlanAct Agent"]
Planner["π Planner"]
Executor["β‘ Executor"]
end
Tools["π§ Tools"]
end
subgraph Sandbox["π¦ Sandbox"]
Shell["π» Shell"]
File["π File"]
Chrome["π Chrome"]
VNC["π₯οΈ VNC"]
end
subgraph Storage["πΎ Storage"]
MongoDB[("π MongoDB")]
Redis[("β‘ Redis")]
end
UI -->|HTTP| API
API -->|SSE| UI
NoVNC -.->|WebSocket| VNC
API --> Agent
Planner <--> Executor
Executor --> Tools
Tools --> Sandbox
API --> Storage
Request Flow
- User sends a message to Frontend
- Frontend sends HTTP request to Backend
- Backend creates a Docker Sandbox for the task
- Plan-Act Agent analyzes the task and generates an execution plan
- Execution Agent calls tools (Browser/Shell/File) in the Sandbox
- Real-time events stream back to Frontend via SSE
- User sees live updates and can interact with tools
Backend Architecture (DDD)
ManusX follows Domain-Driven Design principles:
- Interface Layer (
interfaces/): FastAPI routes and API schemas - Application Layer (
application/): Service orchestration - Domain Layer (
domain/):- Models: Plan, Step, Message, Skill
- Agents: Planner Agent, Execution Agent
- Tools: Browser, Shell, File, Search, Message
- Infrastructure Layer (
infrastructure/):- LLM: OpenAI, Anthropic implementations
- Sandbox: Docker container management
- Database: MongoDB and Redis adapters
π οΈ Tech Stack
Frontend
- Framework: Vue 3 (Composition API) + TypeScript + Vite
- UI: Tailwind CSS + shadcn-vue
- Code Editor: Monaco Editor
- Remote Desktop: NoVNC (WebSocket-based VNC client)
- Internationalization: vue-i18n
Backend
- Framework: FastAPI + Python 3.11+
- Architecture: Domain-Driven Design (DDD)
- Database:
- MongoDB (sessions, messages, files)
- Redis (cache, pub/sub, task queue)
- LLM Clients: OpenAI SDK, Anthropic SDK
- Async: Motor (MongoDB), aioredis
Sandbox
- Base Image: Ubuntu 22.04
- Browser: Google Chrome with CDP (Chrome DevTools Protocol)
- Process Manager: Supervisor
- Services:
- FastAPI server (8080) - Shell/File APIs
- VNC Server (5900) - Remote desktop
- Chrome (9222) - CDP debugging
- WebSockify (5901) - VNC-to-WebSocket proxy
Infrastructure
- Container: Docker + Docker Compose
- CI/CD: GitHub Actions
- Registry: Docker Hub (
dockerdockerdockerxzw)
π¨βπ» Development
Start Development Environment
# Start all services with hot reload
./dev.sh up
# View logs
./dev.sh logs -f [backend|frontend|sandbox]
# Stop services
./dev.sh down
# Rebuild after dependency changes
./dev.sh down -v && ./dev.sh build && ./dev.sh up
Exposed Ports in Development Mode:
5173- Frontend (Vite dev server)8000- Backend API8080- Sandbox API5900- Sandbox VNC9222- Chrome DevTools Protocol
Backend Testing
cd backend
# Run all tests
pytest
# Run specific test file
pytest tests/test_api_file.py
# Run specific test
pytest tests/test_api_file.py::test_name
# Run with coverage
pytest --cov=app tests/
Frontend Development
cd frontend
# Start dev server
npm run dev
# Build for production
npm run build
# Type checking
npm run type-check
# Linting
npm run lint
Project Structure
manusx/
βββ frontend/ # Vue 3 Frontend
β βββ src/
β β βββ pages/ # Page components
β β βββ components/ # Reusable components
β β βββ api/ # API client
β β βββ locales/ # i18n translations
β βββ package.json
β
βββ backend/ # FastAPI Backend
β βββ app/
β β βββ domain/ # Domain Layer
β β β βββ models/ # Domain models
β β β βββ services/ # Domain services
β β β βββ agents/ # Planner & Execution agents
β β β βββ tools/ # Tool implementations
β β βββ application/ # Application Layer
β β βββ infrastructure/ # Infrastructure Layer
β β βββ interfaces/ # Interface Layer (API routes)
β βββ skills/ # Skill definitions
β βββ requirements.txt
β
βββ sandbox/ # Docker Sandbox
β βββ Dockerfile
β βββ supervisord.conf
β
βββ docs/ # Documentation
βββ docker-compose.yml # Production deployment
βββ docker-compose-development.yml # Development
βββ .env.example # Environment template
βββ dev.sh # Development script
βββ run.sh # Production script
π’ Deployment
Production Deployment
# Using run.sh script
./run.sh up -d
# Or using docker-compose directly
docker compose up -d
Building Custom Images
# Set your registry and tag
export IMAGE_REGISTRY=your-registry-url
export IMAGE_TAG=v1.0.0
# Build images
./build.sh
# Push to registry
./run.sh push
Kubernetes Deployment
For Kubernetes deployment, see our K8s deployment guide.
Environment-Specific Configuration
Development (.env.development):
NODE_ENV=development
API_BASE=http://localhost:8000
LOG_LEVEL=DEBUG
Production (.env.production):
NODE_ENV=production
API_BASE=https://your-domain.com/api
LOG_LEVEL=INFO
β FAQ
Q: Can I use local LLM models?
Yes! ManusX supports any OpenAI-compatible API endpoint. You can use:
- Ollama: Run
ollama serveand setAPI_BASE=http://localhost:11434/v1 - LocalAI: Compatible out of the box
- vLLM: Set appropriate API_BASE
- Text Generation Inference: Hugging Face's TGI
Just configure API_BASE to point to your local LLM endpoint.
Q: How do I enable web search?
Configure search provider in .env:
SEARCH_PROVIDER=bing
BING_SEARCH_KEY=your-bing-api-key
Supported providers:
bing- RequiresBING_SEARCH_KEYgoogle- RequiresGOOGLE_SEARCH_API_KEYandGOOGLE_SEARCH_ENGINE_IDbaidu- No API key required (uses web scraping)
Q: How do I add custom skills?
Create a new skill directory under backend/skills/:
backend/skills/my-skill/
βββ SKILL.md # Skill definition (YAML frontmatter + Markdown)
βββ scripts/ # Executable scripts
βββ references/ # Reference documentation
βββ assets/ # Static assets (templates, configs)
Example SKILL.md:
---
name: my-skill
description: Brief description of what this skill does
---
# My Skill Title
Detailed instructions for the LLM on how to use this skill...
See Skill System Documentation for more details.
Q: How do I configure MCP servers?
Create an mcp_config.json file:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/workspace"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "your-token"
}
}
}
}
Mount it in docker-compose.yml:
volumes:
- ./mcp_config.json:/app/mcp_config.json
Set environment variable:
MCP_CONFIG_PATH=/app/mcp_config.json
Q: What LLM models are recommended?
Recommended models:
- OpenAI:
gpt-4o,gpt-4-turbo - Anthropic:
claude-3-5-sonnet,claude-3-opus - DeepSeek:
deepseek-chat,deepseek-coder
Requirements:
- OpenAI-compatible API
- Function calling support
- JSON format output support
Q: How do I configure authentication?
ManusX supports three authentication modes:
1. Password Authentication (default):
AUTH_PROVIDER=password
JWT_SECRET_KEY=your-random-secret-key
PASSWORD_SALT=your-password-salt
Users can register and log in with email/password.
2. Local Authentication (single admin user):
AUTH_PROVIDER=local
LOCAL_AUTH_EMAIL=admin@example.com
LOCAL_AUTH_PASSWORD=your-secure-password
3. No Authentication:
AUTH_PROVIDER=none
β οΈ Warning: Only use in trusted environments!
π€ Contributing
We welcome contributions from the community!
How to Contribute
- π΄ Fork the repository
- πΏ Create your feature branch (
git checkout -b feature/amazing-feature) - β
Commit your changes (
git commit -m 'Add some amazing feature') - π€ Push to the branch (
git push origin feature/amazing-feature) - π Open a Pull Request
Development Guidelines
- Follow PEP 8 for Python code
- Use TypeScript for all new frontend code
- Write tests for new features
- Update documentation for user-facing changes
- Keep commits atomic and well-described
Found a bug?
Open an issue with:
- Bug description
- Steps to reproduce
- Expected vs actual behavior
- Environment details (OS, Docker version, etc.)
π¬ Community & Support
- π Documentation: Full Docs
- π¬ Discussions: GitHub Discussions
- π Bug Reports: GitHub Issues
Need Help?
- Check the Documentation
- Search existing issues
- Ask in GitHub Discussions
π License
This project is licensed under the MIT License - see the LICENSE file for details.
β Star History
Made with β€οΈ by the ManusX Team
If you find this project useful, please give it a βοΈ!
