一个基于 Flask + SocketIO 的网页管理器。
Project description
ClawOS
A browser-based Linux management panel: file management, system monitoring, web terminal, and service management.
- One-command start:
clawos start, then manage everything in the browser - File management: upload/download, drag-and-drop upload, batch operations, trash, search
- System & services: processes, systemd, Docker, network, disks, GPU (optional)
- Built-in tools: Git, editor, log viewer, task queue
Quick Start
Requirements
- Linux with systemd user services (
systemctl --user) - Python 3.9+
Install
pip install clawos
Start
clawos start
Open in your browser:
Check the login password:
clawos status
clawos password
Stop the service:
clawos stop
Screenshots
Documentation
- API: docs/api.md
- Protocol: docs/PROTOCOL.md
Community
- Discord: https://discord.gg/4PW8pEazm
- QQ Group: 485345801 (scan to join)
Contributing
Issues and pull requests are welcome.
Security Features
- Password-based authentication
- Session management
- Path traversal protection
- File operation permissions
- Symlink safety checks
Architecture
┌─────────────────────────────────────────────────────────────────┐
│ ClawOS Architecture │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Browser Client │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ File Browser │ │ Terminal │ │ Sys Monitor │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │ │
│ HTTP / WebSocket (REST API) │
│ │ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Flask Server │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ Blueprints │ │ Socket.IO │ │ Auth │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Service Controllers │ │
│ │ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ │ │
│ │ │ Files │ │ System │ │ Git │ │ Docker │ │ │
│ │ └────────┘ └────────┘ └────────┘ └────────┘ │ │
│ │ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ │ │
│ │ │ FRP │ │ Clash │ │OpenClaw│ │ Terminal│ │ │
│ │ └────────┘ └────────┘ └────────┘ └────────┘ │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌───────────────┼───────────────┐ │
│ ▼ ▼ ▼ │
│ ┌──────────────┐ ┌───────────┐ ┌──────────────┐ │
│ │ Local FS │ │ systemd │ │ External Svcs │ │
│ └──────────────┘ └───────────┘ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
Features
📂 File Management
- Hierarchical navigation
- Upload/download (drag-and-drop supported)
- Create folders, rename, move, delete, clone
- Multi-select operations
- Batch operations (copy/move/delete)
- Trash and restore
- File search and filtering
- Symlink detection and handling
- Broken symlink visualization
📝 Multi-format Editors
- JSON editor: syntax highlighting, validation, tree/text/table modes
- YAML/TOML editor: Monaco Editor
- Markdown preview: live rendering
- Code editor: multi-language support
- Config editors: INI/CONF/XML support
🖥️ Web Terminal
- Full xterm.js terminal emulator
- Socket.IO real-time transport
- Command history navigation
- Session persistence
📊 System Monitoring
- CPU usage and memory statistics
- Process list (sortable)
- Disk usage
- Network interface stats
- GPU info (NVIDIA)
- Docker container management
- systemd service management
🤖 Service Management
FRP
┌─────────────────────────────────────┐
│ 🌐 FRP Tunnel │
├─────────────────────────────────────┤
│ Service status: ● Running │
│ │
│ Server: your-frp-server:17777 │
│ │
│ Proxies: │
│ - test-tcp (22 → 6022) │
│ - http (80 → 6080) │
│ - 18789 (18789 → 18789) │
│ - 5001 (5001 → 15001) │
│ - 6002 (6002 → 6002) │
│ │
│ [Start] [Stop] [Restart] │
│ [Edit Config] │
└─────────────────────────────────────┘
Clash
┌─────────────────────────────────────┐
│ 🌐 Clash Proxy │
├─────────────────────────────────────┤
│ Service status: ● Running │
│ │
│ Port: 7890 (mixed port) │
│ │
│ 📡 Subscription │
│ [Enter URL] [Update] │
│ │
│ 🎯 Proxy Groups │
│ - Example Group → HK 01 │
│ - Auto Select → HK 02 │
│ │
│ 📡 Nodes: 12 │
│ 📊 Rules: 514 │
└─────────────────────────────────────┘
OpenClaw Integration
- Gateway status monitoring
- Agent management
- Channel configuration
- Skills installation tracking
- Health diagnostics
🐙 Git Integration
- Repository browser
- Branch management
- Commit history viewer
- Diff visualization
- Status bar integration
Installation (from source via install.sh)
Requirements
- Linux with systemd user services (
systemctl --user) python3,pip3,git,openssl
1) Clone to the script-default path
The installation script assumes the source directory is ~/clawos by default.
git clone https://github.com/mrytsr/clawos.git ~/clawos
cd ~/clawos
2) Run the install script
bash install.sh
The script will:
- Install Python dependencies when needed (e.g. run
pip3 install -r ~/clawos/requirements.txtif Flask is missing) - Create the data directory:
~/.local/clawos - Generate a random password:
~/.local/clawos/clawos_password.json - Install the CLI to:
/usr/local/bin/clawos - Write the systemd user unit:
~/.config/systemd/user/clawos.service - Enable and start the service via
systemctl --user
3) Access and manage
- Web UI:
http://127.0.0.1:6002/ - Password:
clawos statusorcat ~/.local/clawos/clawos_password.json - Logs:
journalctl --user -u clawos -f
clawos start|stop|restart|status|log|enable|disable|password
Notes
- If you don't have write permission to
/usr/local/bin, changeBIN_FILEininstall.shto~/.local/bin/clawos(ensure~/.local/binis inPATH) and rerun the script. - On headless servers, user services may stop after logout; enable linger if you need it:
loginctl enable-linger $USER
CLI Usage (pip install)
clawos start # Start the service (installs systemd unit on first run)
clawos -h # Show help
clawos status # Show status
clawos stop # Stop the service
clawos restart # Restart the service
clawos log # View logs
clawos uninstall # Uninstall (stop + remove systemd unit, then pip uninstall)
API Reference
File Operations
| Endpoint | Method | Description |
|---|---|---|
/api/file/list |
GET | List directory contents |
/api/file/info |
GET | Get file/directory info |
/api/file/read |
GET | Read file content |
/api/file/save |
POST | Write file content |
/api/file/create |
POST | Create file/folder |
/api/file/move |
POST | Move/rename file |
/api/file/delete |
POST | Delete file |
/api/file/copy |
POST | Copy file |
/api/trash/list |
GET | List trash contents |
/api/trash/restore |
POST | Restore from trash |
System Operations
| Endpoint | Method | Description |
|---|---|---|
/api/process/list |
GET | List running processes |
/api/disk/list |
GET | List disk usage |
/api/network/list |
GET | List network interfaces |
/api/gpu/info |
GET | GPU information |
/api/system/exec |
POST | Execute system command |
Service Management
| Endpoint | Method | Description |
|---|---|---|
/api/systemd/list |
GET | List systemd services |
/api/systemd/control |
POST | Control service (start/stop/restart) |
/api/docker/containers |
GET | List Docker containers |
/api/docker/container/start |
POST | Start container |
/api/docker/container/stop |
POST | Stop container |
FRP Management
| Endpoint | Method | Description |
|---|---|---|
/api/frp/config |
GET | Get FRP configuration |
/api/frp/config |
POST | Save FRP configuration |
Clash Management
| Endpoint | Method | Description |
|---|---|---|
/api/clash/state |
GET | Get Clash status |
/api/clash/proxies |
GET | Get proxy list |
/api/clash/subscribe |
POST | Update subscription |
/api/clash/switch |
POST | Switch proxy node |
Git Operations
| Endpoint | Method | Description |
|---|---|---|
/api/git/repos |
GET | List git repositories |
/api/git/status |
GET | Get repository status |
/api/git/log |
GET | Get commit history |
/api/git/diff |
GET | Get diff output |
Project Structure
clawos/
├── app.py # Flask application entry point
├── config.py # Configuration settings
├── requirements.txt # Python dependencies
├── package.json # Node.js dependencies
│
├── ctrl/ # Flask blueprints (controllers)
│ ├── api_ctrl.py # Generic API utilities
│ ├── auth_ctrl.py # Authentication
│ ├── batch_ctrl.py # Batch operations
│ ├── browser_ctrl.py # File browser API
│ ├── clash_ctrl.py # Clash proxy management
│ ├── edit_ctrl.py # File editing
│ ├── file_ctrl.py # File operations
│ ├── frp_ctrl.py # FRP management
│ ├── git_ctrl.py # Git integration
│ ├── openclaw_ctrl.py # OpenClaw integration
│ ├── system_ctrl.py # System monitoring
│ ├── task_ctrl.py # Task management
│ └── term.py # Terminal socket handler
│
├── lib/ # Utility modules
│ ├── ai_client.py # AI assistant client
│ ├── disk_utils.py # Disk utilities
│ ├── docker_utils.py # Docker utilities
│ ├── email_utils.py # Email utilities
│ ├── file_utils.py # File utilities
│ ├── git_utils.py # Git utilities
│ ├── json_utils.py # JSON utilities
│ ├── network_utils.py # Network utilities
│ ├── packages_utils.py # Package management
│ ├── path_utils.py # Path utilities
│ ├── process_utils.py # Process utilities
│ └── systemd_utils.py # systemd utilities
│
├── static/ # Static assets
│ ├── js/
│ │ ├── bot.js # AI assistant
│ │ ├── file_browser.js # File browser
│ │ ├── file_clipboard.js # Clipboard operations
│ │ ├── globals.js # Global utilities
│ │ ├── git.js # Git integration
│ │ ├── preview.js # File preview
│ │ ├── system_monitor.js # System monitoring
│ │ ├── task_actions.js # Task actions
│ │ ├── task_poller.js # Task polling
│ │ └── terminal.js # Terminal
│ └── css/ # Stylesheets
│
├── templates/ # HTML templates
│ ├── index.html # Main application
│ ├── login.html # Login page
│ ├── trash.html # Trash management
│ ├── json_editor.html # JSON editor
│ ├── yaml_editor.html # YAML/TOML editor
│ ├── markdown.html # Markdown preview
│ ├── code_editor.html # Code editor
│ ├── git_commit.html # Git commit viewer
│ └── ...
│
├── data/ # Runtime data
│ ├── conversations.json # Chat history
│ └── trash/ # Trash directory
│
└── README.md # This file
Security
⚠️ Important security notes
- Default credentials: Change the password immediately after installation
- Network exposure: Do not expose ClawOS directly to the public internet
- Use HTTPS: Put it behind a reverse proxy with HTTPS (Nginx/Caddy)
- Terminal access: The web terminal can execute arbitrary commands; grant access carefully
- File operations: All file operations are logged
Recommended deployment
┌─────────────────┐
│ Nginx/Caddy │
│ (HTTPS + Auth) │
└────────┬────────┘
│
┌────────▼────────┐
│ ClawOS (LAN) │
│ http://:6002 │
└─────────────────┘
License
MIT License - see LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file clawos-265.5.2124.tar.gz.
File metadata
- Download URL: clawos-265.5.2124.tar.gz
- Upload date:
- Size: 3.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c06f494fd45a5d8a4b748b3023aca960f1cbbbfdcaab350cdb3ecfe13f1e8e17
|
|
| MD5 |
ed0f649042d3408e87ad7e01d14c41ef
|
|
| BLAKE2b-256 |
6d001a4c94a009d69cf1b6ad09f2e66a191db83ddf9940cc76f5225c2265f842
|
File details
Details for the file clawos-265.5.2124-py3-none-any.whl.
File metadata
- Download URL: clawos-265.5.2124-py3-none-any.whl
- Upload date:
- Size: 3.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0fd2f5c90bc3038caa2fb4beb91b1e108e6676a8ceb03e07cdee0b813749b533
|
|
| MD5 |
24c7a6e1a03d11635f4cfe68d7edab45
|
|
| BLAKE2b-256 |
85b90e6ccfd6a394e2be9969a5e9fa2f8fee0055505db089e5ee95d32ffbf7db
|