Skip to main content

一个基于 Flask + SocketIO 的网页管理器。

Project description

ClawOS

ClawOS

A browser-based Linux management panel: file management, system monitoring, web terminal, and service management.

License Python

  • 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

ClawOS Screenshot 1 ClawOS Screenshot 2 ClawOS Screenshot 3
ClawOS Screenshot 4 ClawOS Screenshot 5 ClawOS Screenshot 6
ClawOS Screenshot 7 ClawOS Screenshot 8 ClawOS Screenshot 9
ClawOS Screenshot 10

Documentation

Community

QQ Group QR Code

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.txt if 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 status or cat ~/.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, change BIN_FILE in install.sh to ~/.local/bin/clawos (ensure ~/.local/bin is in PATH) 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

  1. Default credentials: Change the password immediately after installation
  2. Network exposure: Do not expose ClawOS directly to the public internet
  3. Use HTTPS: Put it behind a reverse proxy with HTTPS (Nginx/Caddy)
  4. Terminal access: The web terminal can execute arbitrary commands; grant access carefully
  5. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

clawos-265.7.1149.tar.gz (22.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

clawos-265.7.1149-py3-none-any.whl (22.2 MB view details)

Uploaded Python 3

File details

Details for the file clawos-265.7.1149.tar.gz.

File metadata

  • Download URL: clawos-265.7.1149.tar.gz
  • Upload date:
  • Size: 22.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for clawos-265.7.1149.tar.gz
Algorithm Hash digest
SHA256 8364ccfe8b9d039a40194f846650624b68ad90ba87717e5b5864d57460ae123a
MD5 4b48b84e1fb1b35c2c219fcb0b10945e
BLAKE2b-256 16e228f3e4b16067c7c8f4237a6b69f6ca274b1e40042f4b7e85cc135ebc0560

See more details on using hashes here.

File details

Details for the file clawos-265.7.1149-py3-none-any.whl.

File metadata

  • Download URL: clawos-265.7.1149-py3-none-any.whl
  • Upload date:
  • Size: 22.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for clawos-265.7.1149-py3-none-any.whl
Algorithm Hash digest
SHA256 2a3b20e2c46d4e5e50d0e34ba16f6fd9a8594b74e934409a064eddb59adbd7af
MD5 210762b9af3b6e8a928c774b05cd261f
BLAKE2b-256 0bcd1b21c3ffed22d4a079766935188bb0fb9605ada6180dfd3f9960b316a2ef

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page