Skip to content

mrytsr/clawos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

368 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

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.

About

Linux Panel support openclaw, nanobot, picoclaw, nullclaw

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors