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-263.5.1202.tar.gz (3.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-263.5.1202-py3-none-any.whl (3.1 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: clawos-263.5.1202.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

Hashes for clawos-263.5.1202.tar.gz
Algorithm Hash digest
SHA256 34464deefb1c5fc533b544b4908e14ff9c5e261eea1e21c2790b243150f40d22
MD5 120d2dd26c6f2dd138514725a5783998
BLAKE2b-256 fef41446ac27f1ff0e4c569e3ce842c3b569292058d9e02512177a656ab1c71c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: clawos-263.5.1202-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

Hashes for clawos-263.5.1202-py3-none-any.whl
Algorithm Hash digest
SHA256 8d93328b08d71acfe55b4fc0f909cb7f321e8264e258f6d8d2e190fe9b6e231c
MD5 45ce70fe00332dc1767e34db39a91201
BLAKE2b-256 6cc1c28ad919524aa643251db2a8536923e86e3d825da8ab26a855d30dcc5007

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