openclaw-droid 2.0.6 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of openclaw-droid might be problematic. Click here for more details.

package/README.md CHANGED
@@ -1,210 +1,213 @@
1
- # OpenClaw Droid 🤖
2
-
3
- > **Run OpenClaw AI Gateway on Android via Termux**
4
- > One-command setup. Optimized for mobile. Bionic Bypass included.
5
-
6
- ![License](https://img.shields.io/badge/license-MIT-blue.svg)
7
- ![Platform](https://img.shields.io/badge/platform-Android%20%7C%20Termux-green.svg)
8
- ![Version](https://img.shields.io/npm/v/openclaw-droid.svg)
9
-
10
- **OpenClaw Droid** makes running [OpenClaw](https://github.com/openclaw/openclaw) on Android effortless. It handles environment setup (proot-distro, Ubuntu, Node.js) and fixes Android-specific issues automatically.
11
-
12
- ## 🚀 Why OpenClaw Droid?
13
-
14
- Running standard Node.js AI tools on Android is painful because of:
15
- * **Bionic libc**: Android's C library differs from Linux (glibc), breaking `os.networkInterfaces()` and DNS lookups.
16
- * **Permissions**: Termux has restricted access to system resources.
17
- * **Environment**: Many tools expect a full Linux userland (Ubuntu/Debian).
18
-
19
- **OpenClaw Droid solves this by:**
20
- 1. Creating a lightweight **Ubuntu** container inside Termux.
21
- 2. Injecting a **Bionic Bypass** script to fix networking.
22
- 3. Providing a simple CLI (`openclaw`) to manage the gateway.
23
-
24
- ## 📦 Installation
25
-
26
- ### Prerequisites
27
- * **Android 10+**
28
- * **Termux** (Install from [F-Droid](https://f-droid.org/packages/com.termux/), NOT Play Store)
29
- * **Termux:API** and **Termux:GUI** apps (from F-Droid)
30
- * ~2GB free storage
31
-
32
- ### Required Apps Setup
33
-
34
- 1. **Install Termux** from [F-Droid](https://f-droid.org/packages/com.termux/)
35
- 2. **Install Termux:API** from [F-Droid](https://f-droid.org/packages/com.termux.api/)
36
- 3. **Install Termux:GUI** from [F-Droid](https://f-droid.org/packages/com.termux.gui/)
37
- 4. **Grant permissions** in Android Settings:
38
- - Go to Settings → Apps → Termux → Permissions
39
- - Grant all permissions (Camera, Microphone, Storage, Location, etc.)
40
- - Repeat for Termux:API and Termux:GUI
41
- 5. **Disable battery optimization** for Termux:
42
- - Go to Settings → Apps → Termux → Battery
43
- - Set to "Unrestricted" or "Don't optimize"
44
- 6. **Grant storage permissions** in Termux:
45
- ```bash
46
- termux-setup-storage
47
- ```
1
+ # OpenClaw Droid
48
2
 
49
- ### Install Required Packages
3
+ > **The Android AI Gateway Installer** by [NosytLabs](https://github.com/NosytLabs)
50
4
 
51
- Update package lists and install essential tools:
5
+ Turn your Android device into a 24/7 AI Gateway. Run OpenClaw, connect to Gemini/Claude/OpenAI, and automate from your phone with zero root.
52
6
 
53
- ```bash
54
- # Update package lists
55
- pkg update && pkg upgrade
7
+ ## Features
56
8
 
57
- # Install x11-repo (required for termux-gui)
58
- pkg install -y x11-repo
9
+ - **Zero Root Required**: Runs in Termux + Proot (Ubuntu container).
10
+ - **24/7 Operation**: Optimized for long-running background sessions.
11
+ - **Visual Overlay**: Live status on screen (Termux:GUI).
12
+ - **Hardware Acceleration**: llama.cpp builds for ARM64.
13
+ - **Bionic Bypass**: Fixes Android 10+ network restrictions.
59
14
 
60
- # Install required packages
61
- pkg install -y git python nodejs-lts proot-distro termux-api termux-gui
15
+ ## Prerequisites
62
16
 
63
- # Verify installations
64
- node --version
65
- python --version
66
- ```
17
+ - **Android**: 10 or newer.
18
+ - **Termux**: F-Droid version only.
19
+ - **API Key**: Gemini API from Google AI Studio (free tier), Anthropic, or OpenAI.
67
20
 
68
- If termux-gui is unavailable, continue without it (overlay features disabled).
21
+ ## Installation
69
22
 
70
- ### One-Command Setup
71
- Open Termux and run:
23
+ ### Option 1: One-Command Installer
72
24
 
73
25
  ```bash
74
26
  curl -fsSL https://raw.githubusercontent.com/NosytLabs/openclaw-droid/main/install.sh | bash
75
27
  ```
76
28
 
77
- Or via npm:
29
+ ### Option 2: NPM Installer
78
30
 
79
31
  ```bash
32
+ pkg update -y && pkg upgrade -y
33
+ pkg install nodejs-lts git -y
80
34
  npm install -g openclaw-droid
81
35
  openclaw setup
82
36
  ```
83
37
 
84
- **IMPORTANT:** Use `npm install -g openclaw@latest` installation method (not bash script) as it's more reliable on Android. The installation may take 15-30 minutes due to llama.cpp compilation from scratch.
38
+ ### Option 3: Manual Install (Full Control)
85
39
 
86
- ## 🎮 Usage
40
+ 1. **Prepare Termux**
41
+ ```bash
42
+ termux-setup-storage
43
+ pkg update -y && pkg upgrade -y
44
+ pkg install nodejs-lts git proot-distro termux-api -y
45
+ ```
87
46
 
88
- ### 1. Initialize
89
- First, configure your API keys:
47
+ 2. **Install Ubuntu**
48
+ ```bash
49
+ proot-distro install ubuntu
50
+ proot-distro login ubuntu
51
+ ```
90
52
 
91
- ```bash
92
- openclaw onboarding
93
- ```
94
- > **IMPORTANT:** Select **Loopback (127.0.0.1)** for Binding.
53
+ 3. **Setup Inside Ubuntu**
54
+ ```bash
55
+ apt update && apt upgrade -y
56
+ apt install curl git build-essential python3 -y
57
+ curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
58
+ apt install nodejs -y
59
+ npm install -g openclaw@latest
60
+ ```
95
61
 
96
- ### 2. Start Gateway
97
- Launch the OpenClaw gateway:
62
+ 4. **Configure Bionic Bypass (Crucial)**
63
+ Android blocks `os.networkInterfaces()` which causes System Error 13. Use this hijack script:
64
+ ```bash
65
+ cat <<'EOF' > /root/hijack.js
66
+ const os = require('os');
67
+ const originalNetworkInterfaces = os.networkInterfaces;
68
+ os.networkInterfaces = function() {
69
+ try {
70
+ const interfaces = originalNetworkInterfaces.call(os);
71
+ if (interfaces && Object.keys(interfaces).length > 0) return interfaces;
72
+ } catch (e) {}
73
+ return {
74
+ lo: [{
75
+ address: '127.0.0.1',
76
+ netmask: '255.0.0.0',
77
+ family: 'IPv4',
78
+ mac: '00:00:00:00:00:00',
79
+ internal: true,
80
+ cidr: '127.0.0.1/8'
81
+ }]
82
+ };
83
+ };
84
+ EOF
85
+
86
+ echo 'export NODE_OPTIONS="-r /root/hijack.js"' >> ~/.bashrc
87
+ source ~/.bashrc
88
+ ```
98
89
 
99
- ```bash
100
- openclaw start
101
- ```
90
+ 5. **Onboarding Wizard**
91
+ ```bash
92
+ openclaw onboarding
93
+ ```
94
+ When asked for Gateway Bind, select **Loopback (127.0.0.1)**.
102
95
 
103
- **Recommended:** Run the gateway in a tmux session for better process management:
96
+ 6. **Launch**
97
+ ```bash
98
+ openclaw start
99
+ ```
104
100
 
105
- ```bash
106
- # Install tmux first if not installed
107
- pkg install tmux
101
+ ## Usage
108
102
 
109
- # Start a new tmux session
110
- tmux new -s openclaw
103
+ - **Start the Gateway**
104
+ ```bash
105
+ openclaw start
106
+ ```
107
+ - **Run Setup Wizard**
108
+ ```bash
109
+ openclaw setup
110
+ ```
111
+ - **Run Onboarding**
112
+ ```bash
113
+ openclaw onboarding
114
+ ```
115
+ - **Run Gateway (Verbose Logs)**
116
+ ```bash
117
+ openclaw gateway --verbose
118
+ ```
119
+ - **Test Overlay**
120
+ ```bash
121
+ openclaw overlay "Hello Android!"
122
+ ```
111
123
 
112
- # Run the gateway
113
- openclaw start
124
+ ## Verified Commands
114
125
 
115
- # Detach from tmux (keep it running): Ctrl+B, then D
116
- # Reattach to tmux session: tmux attach -t openclaw
117
- ```
126
+ - `/status` Check health.
127
+ - `/think high` Deep reasoning mode.
128
+ - `/reset` — Clear session memory.
118
129
 
119
- The dashboard will be available at:
120
- - **http://127.0.0.1:18789** (on the phone)
121
- - **http://<phone-ip>:18789** (from other devices on WiFi, requires gateway.bind = lan)
130
+ ## Dashboard
122
131
 
123
- ### 3. Enable Screen Overlay (Optional)
132
+ - URL: `http://127.0.0.1:18789`
133
+ - Token: `openclaw config get gateway.auth.token` or read `~/.openclaw/openclaw.json`
124
134
 
125
- To allow OpenClaw to display overlay messages on your screen:
135
+ ## 24/7 Mode (Recommended)
126
136
 
127
137
  ```bash
128
- # In a separate tmux window or terminal:
129
- tmux new-window
130
- cd ~
131
- python ~/overlay_daemon.py
138
+ pkg install tmux -y
139
+ tmux new -s openclaw
140
+ openclaw start
132
141
  ```
133
142
 
134
- Or use the built-in command:
143
+ Detach with `Ctrl+b` then `d` and keep Termux running.
144
+
145
+ ## Overlay
146
+
147
+ The overlay reads text from `~/overlay.txt` or `/root/overlay.txt` and displays it on-screen. It only shows when Termux:GUI is installed and running in a foreground Termux session.
135
148
 
136
149
  ```bash
150
+ pkg install termux-gui -y
137
151
  openclaw overlay
152
+ echo "Hello" > ~/overlay.txt
138
153
  ```
139
154
 
140
- Now OpenClaw can write to the screen by creating `~/overlay.txt`:
155
+ ## Troubleshooting
141
156
 
142
- ```bash
143
- printf 'Hello from OpenClaw!' > ~/overlay.txt
144
- ```
157
+ ### Permission Denied (Storage)
158
+ - Run `termux-setup-storage`.
159
+ - Grant Files and Media permission in Android Settings > Apps > Termux.
145
160
 
146
- The overlay daemon watches for changes to `~/overlay.txt` and displays the content as a screen overlay. This is useful for displaying status updates, notifications, or important information to the user.
161
+ ### Process Killed Automatically
162
+ - Disable battery optimization for Termux.
163
+ - Use `termux-wake-lock` or enable Wake Lock in the notification.
164
+ - Keep the Termux notification active.
147
165
 
148
- ### 4. Other Commands
166
+ ### System Error 13 (Network)
167
+ - Ensure Bionic Bypass is active.
168
+ - For manual install, confirm `NODE_OPTIONS` points to `/root/hijack.js`.
149
169
 
150
- | Command | Description |
151
- | :--- | :--- |
152
- | `openclaw status` | Check installation health |
153
- | `openclaw update` | Update OpenClaw to latest version |
154
- | `openclaw shell` | Open Ubuntu shell |
155
- | `openclaw repair` | Re-install dependencies if broken |
156
- | `openclaw <cmd>` | Run any OpenClaw command (e.g., `openclaw doctor`) |
170
+ ### Gateway Crashes on Startup
171
+ - Run `openclaw onboarding` and select **Loopback (127.0.0.1)** for binding.
157
172
 
158
- ## ⚠️ Troubleshooting
173
+ ### Dashboard Not Loading
174
+ - Ensure gateway is running with `openclaw start`.
175
+ - Check `openclaw doctor` inside Ubuntu: `proot-distro login ubuntu` then `openclaw doctor`.
159
176
 
160
- **"Setup not complete" error**
161
- * Run `openclaw setup` again.
162
- * If it persists, run `openclaw repair`.
177
+ ### Web Gateway Token Missing
178
+ - Read the token from `~/.openclaw/openclaw.json` or use `openclaw config get gateway.auth.token`.
179
+ - Paste it in the web gateway UI: Overview → Gateway Access → Gateway Token.
163
180
 
164
- **Process killed in background**
165
- * Go to Android Settings → Apps → Termux Battery → **Unrestricted**.
181
+ ### Overlay Not Showing
182
+ - Install Termux:GUI from F-Droid.
183
+ - Run `pkg install termux-gui` and grant overlay permissions.
184
+ - Keep overlay daemon running in foreground: `openclaw overlay`.
166
185
 
167
- **Permission denied errors**
168
- * Run `termux-setup-storage` to grant storage permissions
169
- * Ensure Termux:API and Termux:GUI have proper permissions
186
+ ### OpenClaw Command Runs in Ubuntu but Starts Termux Binary
187
+ - Inside Ubuntu: `npm uninstall -g openclaw` then `npm install -g openclaw@latest`.
170
188
 
171
- **Cannot access /tmp/openclaw errors**
172
- * OpenClaw requires a custom TMPDIR on Termux. The installer should configure this automatically.
173
- * If you still see these errors, manually add to `~/.bashrc`:
174
- ```bash
175
- echo 'export TMPDIR="$PREFIX/tmp"' >> ~/.bashrc
176
- echo 'export TMP="$TMPDIR"' >> ~/.bashrc
177
- echo 'export TEMP="$TMPDIR"' >> ~/.bashrc
178
- echo 'if [ ! -d "$TMPDIR" ]; then mkdir -p "$TMPDIR"; fi' >> ~/.bashrc
179
- source ~/.bashrc
180
- mkdir -p /data/data/com.termux/files/usr/tmp/openclaw
181
- ```
189
+ ### Ubuntu Install or Update Fails
190
+ - Re-run setup: `openclaw setup`.
191
+ - Ensure free space: `df -h`.
182
192
 
183
- **"systemd not found" errors**
184
- * These are normal on Android/Termux and can be safely ignored.
185
- * OpenClaw will function without systemd.
193
+ ### Build Takes Forever
194
+ - llama.cpp compilation can take 15–30 minutes on mobile; keep the session open.
186
195
 
187
- **Installation fails on dependencies**
188
- * Some dependencies may fail to install initially. Install them manually:
189
- ```bash
190
- pkg install -y python git proot-distro
191
- npm install -g openclaw@latest
192
- ```
193
- * The llama.cpp compilation takes 15-30 minutes - let it complete.
196
+ ### EACCES or TMPDIR Errors
197
+ - Ensure Termux temp dir exists: `mkdir -p $PREFIX/tmp`.
194
198
 
195
- **"E: unable to locate package termux-git" errors**
196
- * Install Termux from F-Droid and update repositories: `pkg update && pkg upgrade`
197
- * Use `pkg install git` (the Termux package name is `git`, not `termux-git`)
199
+ ### Security Tips
200
+ - Never share API keys or gateway tokens in screenshots or videos.
201
+ - Rotate keys after demo recordings.
198
202
 
199
- **"E: unable to locate package termux-gui" errors**
200
- * Run `pkg install x11-repo` then retry `pkg install termux-gui`
201
- * If it still fails, continue without termux-gui (overlay features disabled)
203
+ ## Useful Resources
202
204
 
203
- **Gateway not accessible from other devices**
204
- * Ensure `gateway.bind` is set to `lan` in your openclaw.json
205
- * Check your phone's IP address: `ip addr show wlan0`
206
- * Access via: `http://<phone-ip>:18789`
205
+ - **[OpenClaw](https://github.com/openclaw/openclaw)**: Core AI Gateway.
206
+ - **[ClawHub](https://clawhub.ai/)**: Discover and install skills.
207
+ - **[OpenClaw Skills](https://github.com/openclaw/skills)**: Official skill library.
208
+ - **[CellHasher](https://github.com/cellhasher)**: Termux tools and scripts.
209
+ - **[CrabWalk](https://github.com/crabwalk)**: Mobile-first AI optimizations.
207
210
 
208
- ## 📜 License
211
+ ## License
209
212
 
210
- MIT License.
213
+ MIT © [NosytLabs](https://github.com/NosytLabs)
package/install.sh CHANGED
@@ -1,125 +1,102 @@
1
- #!/bin/bash
2
- #
3
- # OpenClaw Droid Installer
4
- # One-liner: curl -fsSL https://raw.githubusercontent.com/NosytLabs/openclaw-droid/main/install.sh | bash
5
- #
6
-
7
- set -e
8
-
9
- # Colors
10
- RED='\033[0;31m'
11
- GREEN='\033[0;32m'
12
- YELLOW='\033[1;33m'
13
- BLUE='\033[0;34m'
14
- NC='\033[0m'
15
-
16
- echo -e "${BLUE}"
17
- echo "╔═══════════════════════════════════════════╗"
18
- echo "║ OpenClaw Droid Installer v2.0.6 ║"
19
- echo "║ AI Gateway for Android (via Ubuntu Proot) ║"
20
- echo "╚═══════════════════════════════════════════╝"
21
- echo -e "${NC}"
22
-
23
- # Check if running in Termux
24
- if [ -z "$TERMUX_VERSION" ]; then
25
- echo -e "${YELLOW}Warning:${NC} Not running in Termux - this script is designed for Termux."
26
- fi
27
-
28
- # Update and install packages
29
- echo -e "\n${BLUE}[1/3]${NC} Setting up Termux environment..."
30
-
31
- pkg update -y && pkg upgrade -y
32
- pkg install proot-distro -y
33
-
34
- # Install Ubuntu
35
- echo -e "\n${BLUE}[2/3]${NC} Installing Ubuntu environment..."
36
- if proot-distro list | grep -q "ubuntu.*(installed)"; then
37
- echo -e " ${GREEN}✓${NC} Ubuntu is already installed. Skipping installation."
38
- else
39
- proot-distro install ubuntu || true
40
- fi
41
-
42
- # Add login alias
43
- if ! grep -q "proot-distro login ubuntu" ~/.bashrc; then
44
- echo "proot-distro login ubuntu" >> ~/.bashrc
45
- echo -e " ${GREEN}✓${NC} Added 'proot-distro login ubuntu' alias to .bashrc"
46
- fi
47
-
48
- TERMUX_HOME="$HOME"
49
- INTERNAL_SCRIPT="$TERMUX_HOME/openclaw_setup_internal.sh"
50
-
51
- # Create the internal setup script
52
- cat << 'EOF' > "$INTERNAL_SCRIPT"
53
- #!/bin/bash
54
- set -e
55
-
56
- # Colors inside proot
57
- GREEN='\033[0;32m'
58
- BLUE='\033[0;34m'
59
- NC='\033[0m'
60
-
61
- echo -e "\n${BLUE}[3/3]${NC} Configuring Ubuntu and installing OpenClaw..."
62
-
63
- apt update && apt upgrade -y
64
- apt install -y curl nano git
65
-
66
- # Install Node.js 22
67
- echo -e " Installing Node.js 22..."
68
- curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
69
- apt install -y nodejs
70
-
71
- # Install OpenClaw
72
- echo -e " Installing OpenClaw..."
73
- npm install -g openclaw
74
-
75
- # Create patch for network interfaces
76
- echo -e " Applying network patch..."
77
- cat << 'JS' > /root/patch.js
78
- const os = require('os');
79
- os.networkInterfaces = function() {
80
- return {
81
- "lo": [
82
- {
83
- "address": "127.0.0.1",
84
- "netmask": "255.0.0.0",
85
- "family": "IPv4",
86
- "mac": "00:00:00:00:00:00",
87
- "internal": true,
88
- "cidr": "127.0.0.1/8"
89
- }
90
- ]
91
- };
92
- };
93
- JS
94
-
95
- # Set NODE_OPTIONS permanently
96
- if ! grep -q "NODE_OPTIONS" /root/.bashrc; then
97
- echo "export NODE_OPTIONS='--require /root/patch.js'" >> /root/.bashrc
98
- fi
99
-
100
- # Run onboarding
101
- echo -e "\n${GREEN}Starting OpenClaw Onboarding...${NC}"
102
- export NODE_OPTIONS='--require /root/patch.js'
103
- openclaw onboard
104
-
105
- echo -e "\n${GREEN}Installation complete!${NC}"
106
- echo -e "To start OpenClaw in the future:"
107
- echo -e "1. Run 'proot-distro login ubuntu'"
108
- echo -e "2. Run 'openclaw gateway'"
109
-
110
- # Optional: Start gateway now
111
- # openclaw gateway --token 1234
112
- EOF
113
-
114
- chmod +x "$INTERNAL_SCRIPT"
115
-
116
- # Execute the internal script inside Ubuntu
117
- echo -e "\n${BLUE}Entering Ubuntu to finish setup...${NC}"
118
- proot-distro login ubuntu --bind "$TERMUX_HOME":/mnt/termux -- bash /mnt/termux/openclaw_setup_internal.sh
119
-
120
- # Cleanup
121
- rm -f "$INTERNAL_SCRIPT"
122
-
123
- echo -e "\n${GREEN}═══════════════════════════════════════════${NC}"
124
- echo -e "${GREEN}OpenClaw Droid Setup Complete!${NC}"
125
- echo -e "${GREEN}═══════════════════════════════════════════${NC}"
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ # OpenClaw Droid Installer v1.1.0
5
+ # NosytLabs
6
+
7
+ RED='\033[0;31m'
8
+ GREEN='\033[0;32m'
9
+ BLUE='\033[0;34m'
10
+ NC='\033[0m'
11
+
12
+ echo -e "${BLUE}"
13
+ echo "╔═══════════════════════════════════════════╗"
14
+ echo "║ OPENCLAW DROID v1.1.0 ║"
15
+ echo "║ Android AI Gateway ║"
16
+ echo "║ ║"
17
+ echo "╚═══════════════════════════════════════════╝"
18
+ echo -e "${NC}"
19
+
20
+ if [ -z "$TERMUX_VERSION" ]; then
21
+ echo -e "${RED}Error:${NC} This script must be run inside Termux."
22
+ exit 1
23
+ fi
24
+
25
+ echo -e "\n${BLUE}[1/3]${NC} Initializing Termux Environment..."
26
+ pkg update -y && pkg upgrade -y
27
+ pkg install proot-distro -y
28
+
29
+ echo -e "\n${BLUE}[2/3]${NC} Setting up Ubuntu Container..."
30
+ if proot-distro list | grep -q "ubuntu.*(installed)"; then
31
+ echo -e " ${GREEN}✓${NC} Ubuntu container found."
32
+ else
33
+ proot-distro install ubuntu || true
34
+ fi
35
+
36
+ # Add auto-login alias
37
+ if ! grep -q "proot-distro login ubuntu" ~/.bashrc; then
38
+ echo "proot-distro login ubuntu" >> ~/.bashrc
39
+ fi
40
+
41
+ TERMUX_HOME="$HOME"
42
+ INTERNAL_SCRIPT="$TERMUX_HOME/openclaw_setup_internal.sh"
43
+
44
+ cat << 'EOF' > "$INTERNAL_SCRIPT"
45
+ #!/bin/bash
46
+ set -e
47
+
48
+ GREEN='\033[0;32m'
49
+ BLUE='\033[0;34m'
50
+ NC='\033[0m'
51
+
52
+ echo -e "\n${BLUE}[3/3]${NC} Installing OpenClaw Core..."
53
+
54
+ apt update && apt upgrade -y
55
+ apt install -y curl nano git nodejs npm
56
+
57
+ # Install Node.js 22 if not present
58
+ if ! node -v | grep -q "v22"; then
59
+ curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
60
+ apt install -y nodejs
61
+ fi
62
+
63
+ # Install OpenClaw Global
64
+ npm install -g openclaw
65
+
66
+ # Network Patch for Android
67
+ cat << 'JS' > /root/hijack.js
68
+ const os = require('os');
69
+ os.networkInterfaces = function() {
70
+ return {
71
+ "lo": [
72
+ {
73
+ "address": "127.0.0.1",
74
+ "netmask": "255.0.0.0",
75
+ "family": "IPv4",
76
+ "mac": "00:00:00:00:00:00",
77
+ "internal": true,
78
+ "cidr": "127.0.0.1/8"
79
+ }
80
+ ]
81
+ };
82
+ };
83
+ JS
84
+
85
+ if ! grep -q "NODE_OPTIONS" /root/.bashrc; then
86
+ echo "export NODE_OPTIONS='--require /root/hijack.js'" >> /root/.bashrc
87
+ fi
88
+
89
+ echo -e "\n${GREEN}Starting Configuration...${NC}"
90
+ export NODE_OPTIONS='--require /root/hijack.js'
91
+ openclaw onboarding
92
+
93
+ echo -e "\n${GREEN}Setup Complete!${NC}"
94
+ echo -e "To start the gateway: 'openclaw gateway --verbose'"
95
+ EOF
96
+
97
+ chmod +x "$INTERNAL_SCRIPT"
98
+
99
+ echo -e "\n${BLUE}Entering Container...${NC}"
100
+ proot-distro login ubuntu --bind "$TERMUX_HOME":/mnt/termux -- bash /mnt/termux/openclaw_setup_internal.sh
101
+
102
+ rm -f "$INTERNAL_SCRIPT"
package/lib/index.js CHANGED
@@ -19,7 +19,7 @@ import { fileURLToPath } from 'url';
19
19
  import { logger, safeExecSync } from './utils.js';
20
20
 
21
21
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
22
- const VERSION = '2.0.1';
22
+ const VERSION = '1.1.0';
23
23
 
24
24
  let activeIntervals = [];
25
25
  let activeProcesses = [];
package/lib/installer.js CHANGED
@@ -389,7 +389,11 @@ EOF
389
389
  `;
390
390
 
391
391
  try {
392
- safeExecSync(`proot-distro login ubuntu -- bash -c '${setupScript}'`, { stdio: 'inherit', timeout: 3600000 });
392
+ safeExecSync(`proot-distro login ubuntu -- bash -c '${setupScript}'`, {
393
+ stdio: 'inherit',
394
+ timeout: 3600000,
395
+ disableSanitization: true
396
+ });
393
397
  return true;
394
398
  } catch (err) {
395
399
  logger.error('Failed to setup Ubuntu:', err);
package/lib/utils.js CHANGED
@@ -44,16 +44,22 @@ function sanitizeCommand(cmd) {
44
44
  }
45
45
 
46
46
  function safeExecSync(command, options = {}) {
47
- const sanitizedCmd = sanitizeCommand(command);
48
- logger.debug(`Executing: ${sanitizedCmd}`);
47
+ const { disableSanitization, ...execOptions } = options;
48
+ const cmdToRun = disableSanitization ? command : sanitizeCommand(command);
49
+
50
+ if (disableSanitization) {
51
+ logger.debug(`Executing (unsafe): ${cmdToRun}`);
52
+ } else {
53
+ logger.debug(`Executing: ${cmdToRun}`);
54
+ }
49
55
 
50
56
  const defaultOptions = {
51
57
  stdio: 'pipe',
52
58
  timeout: 30000,
53
- ...options
59
+ ...execOptions
54
60
  };
55
61
 
56
- return execSync(sanitizedCmd, defaultOptions);
62
+ return execSync(cmdToRun, defaultOptions);
57
63
  }
58
64
 
59
65
  function safeWriteFileSync(filePath, content, encoding = 'utf8') {
package/package.json CHANGED
@@ -1,12 +1,11 @@
1
1
  {
2
2
  "name": "openclaw-droid",
3
- "version": "2.0.6",
4
- "description": "OpenClaw Droid - Secure & Optimized OpenClaw AI Gateway for Android Termux",
3
+ "version": "2.1.0",
4
+ "description": "OpenClaw Droid - Android AI Gateway Installer",
5
5
  "main": "lib/index.js",
6
6
  "type": "module",
7
7
  "bin": {
8
- "openclaw": "bin/openclaw",
9
- "openclawdx": "bin/openclawdx"
8
+ "openclaw": "bin/openclaw"
10
9
  },
11
10
  "files": [
12
11
  "bin",
@@ -14,8 +13,7 @@
14
13
  "install.sh",
15
14
  "overlay_daemon.py",
16
15
  "README.md",
17
- "LICENSE",
18
- "SECURITY.md"
16
+ "LICENSE"
19
17
  ],
20
18
  "scripts": {
21
19
  "postinstall": "node lib/postinstall.js"
@@ -28,15 +26,13 @@
28
26
  "gateway",
29
27
  "gemini",
30
28
  "claude",
31
- "openclaw-termux",
32
29
  "openclaw-droid",
33
- "clawdroid",
30
+ "nosytlabs",
34
31
  "ai-gateway",
35
32
  "android-ai",
36
- "termux-ai",
37
- "openclaw-droid"
33
+ "termux-ai"
38
34
  ],
39
- "author": "NOSYTLABS",
35
+ "author": "NosytLabs",
40
36
  "license": "MIT",
41
37
  "repository": {
42
38
  "type": "git",
package/SECURITY.md DELETED
@@ -1,210 +0,0 @@
1
- # Security Audit Report
2
-
3
- ## Executive Summary
4
-
5
- This document provides a comprehensive security audit of OpenClaw Droid, focusing on command injection vulnerabilities, input validation, and compliance with CVE-2026-25253 patches.
6
-
7
- ## Security Score: 9.2/10 (Excellent)
8
-
9
- ### Pre-Audit Score: 5.5/10 (Moderate)
10
- ### Improvement: +3.7 points
11
-
12
- ---
13
-
14
- ## Critical Vulnerabilities Fixed
15
-
16
- ### 1. CVE-2026-25253 (CVSS 8.8 - HIGH) ⚠️ DEPENDENCY AWARENESS
17
- **Impact**: 1-Click Remote Code Execution via Auth Token Exfiltration
18
- - **Affected Component**: OpenClaw installation (npm package)
19
- - **Current Status**: Installer uses `npm install -g openclaw@latest` (per user requirement)
20
- - **Recommendation**: Verify OpenClaw package version 2026.1.30+ is available in `latest` tag
21
- - **Files Modified**:
22
- - [installer.js](lib/installer.js#L126-136)
23
- - [index.js](lib/index.js#L372)
24
-
25
- **Technical Details**:
26
- - Current code: `npm install -g openclaw@latest` (as requested by user)
27
- - Security posture: Maintains latest version tracking; user verifies compatibility
28
- - Verification: Run `npm view openclaw dist-tags` to confirm `latest` version
29
-
30
- ---
31
-
32
- ## Security Enhancements Implemented
33
-
34
- ### 2. Command Injection Prevention (CWE-78) ✅
35
- **Impact**: Prevents arbitrary command execution via unsanitized input
36
- - **Implementation**: [sanitizeCommand()](lib/utils.js#L6-13) in utils.js
37
- - **Coverage**: All execSync calls now sanitized through safeExecSync()
38
- - **Patterns Blocked**: `;`, `&`, `|`, `` ` ``, `$`, `(`, `)`
39
-
40
- **Code Example**:
41
- ```javascript
42
- function sanitizeCommand(cmd) {
43
- const dangerousPatterns = [/[;&|`$()]/g, /\$\(/g, /`/g];
44
- for (const pattern of dangerousPatterns) {
45
- if (pattern.test(cmd.trim())) {
46
- throw new Error(`Command contains potentially dangerous characters: ${cmd.trim()}`);
47
- }
48
- }
49
- return cmd.trim();
50
- }
51
- ```
52
-
53
- ---
54
-
55
- ### 3. Secure File Permissions ✅
56
- **Impact**: Prevents unauthorized file access/modification
57
- - **Implementation**: [setSecurePermissions()](lib/utils.js#L83-98) in utils.js
58
- - **Default Permissions**:
59
- - Directories: `750` (rwxr-x---)
60
- - Files: `600` (rw-------)
61
- - Scripts: `750` (rwxr-x---)
62
-
63
- ---
64
-
65
- ### 4. Atomic File Operations ✅
66
- **Impact**: Prevents race conditions during file writes
67
- - **Implementation**: [safeWriteFileSync()](lib/utils.js#L58-68) in utils.js
68
- - **Features**:
69
- - Atomic writes using temporary files
70
- - Automatic cleanup on failure
71
- - Permission enforcement on write
72
-
73
- ---
74
-
75
- ### 5. Process Cleanup System ✅
76
- **Impact**: Prevents resource leaks and zombie processes
77
- - **Implementation**: [gracefulExit()](lib/index.js#L18-27) in index.js
78
- - **Features**:
79
- - Registered intervals cleanup
80
- - Process termination
81
- - Signal handlers (SIGINT, SIGTERM)
82
-
83
- ---
84
-
85
- ### 6. Timeout Protection ✅
86
- **Impact**: Prevents indefinite hanging operations
87
- - **Implementation**: Default 30s timeout in [safeExecSync()](lib/utils.js#L42-57)
88
- - **Extended Timeout**: 600s for OpenClaw installation (due to compilation)
89
- - **Coverage**: All long-running operations
90
-
91
- ---
92
-
93
- ### 7. Environment Variable Isolation ✅
94
- **Impact**: Prevents environment pollution
95
- - **Implementation**: [createSafeEnv()](lib/env.js#L4-23) in env.js
96
- - **Features**:
97
- - Scoped environment variables
98
- - TMPDIR/TEMP isolation
99
- - NODE_OPTIONS management
100
-
101
- ---
102
-
103
- ### 8. Comprehensive Logging ✅
104
- **Impact**: Enables security auditing and debugging
105
- - **Implementation**: [logger](lib/utils.js#L15-32) in utils.js
106
- - **Levels**: ERROR, WARN, INFO, DEBUG
107
- - **Activation**: `DEBUG=1` environment variable
108
-
109
- ---
110
-
111
- ## OWASP Top 10 (2021) Compliance
112
-
113
- | OWASP Category | Status | Mitigation |
114
- |----------------|--------|------------|
115
- | A03: Injection | ✅ Compliant | Command sanitization via sanitizeCommand() |
116
- | A05: Security Misconfiguration | ✅ Compliant | Secure file permissions, environment isolation |
117
- | A07: Identification & Authentication | ✅ Compliant | Gateway token rotation warnings |
118
- | A08: Software & Data Integrity | ✅ Compliant | Atomic file operations, safeExecSync |
119
- | A09: Logging & Monitoring | ✅ Compliant | Comprehensive logging system |
120
-
121
- ---
122
-
123
- ## Comparison with openclawd-termux
124
-
125
- | Security Feature | OpenClaw Droid | openclawd-termux |
126
- |------------------|---------------|------------------|
127
- | Command Sanitization | ✅ Yes | ❓ Unknown |
128
- | Secure Permissions | ✅ Yes | ❓ Unknown |
129
- | Atomic File Ops | ✅ Yes | ❓ Unknown |
130
- | Process Cleanup | ✅ Yes | ❓ Unknown |
131
- | Timeout Protection | ✅ Yes | ❓ Unknown |
132
- | Environment Isolation | ✅ Yes | ❓ Unknown |
133
- | Comprehensive Logging | ✅ Yes | ❓ Unknown |
134
- | CVE-2026-25253 Patch | ✅ Yes | ❓ Unknown |
135
-
136
- **Result**: OpenClaw Droid has **superior security posture** due to explicit security implementations.
137
-
138
- ---
139
-
140
- ## Remaining Recommendations
141
-
142
- ### Medium Priority
143
- 1. **Input Validation**: Add additional validation for user-provided configuration
144
- 2. **Dependency Auditing**: Run `npm audit` regularly
145
- 3. **Secret Management**: Consider using environment variables or secure storage for API keys
146
-
147
- ### Low Priority
148
- 1. **Code Signing**: Consider signing npm packages for authenticity
149
- 2. **Security Headers**: Add security headers to gateway (if applicable)
150
- 3. **Rate Limiting**: Implement rate limiting for API endpoints
151
-
152
- ---
153
-
154
- ## Security Testing
155
-
156
- ### Automated Tests
157
- ```bash
158
- # Run security audit
159
- npm audit
160
-
161
- # Check for vulnerabilities
162
- npm outdated
163
-
164
- # Verify dependencies
165
- npm ls
166
- ```
167
-
168
- ### Manual Verification
169
- 1. ✅ Command injection attempts blocked by sanitizeCommand()
170
- 2. ✅ File permissions enforced correctly
171
- 3. ✅ Process cleanup works on graceful exit
172
- 4. ✅ Timeout protection prevents hanging operations
173
- 5. ✅ Environment variables properly isolated
174
- 6. ✅ OpenClaw 2026.1.30+ installed (CVE-2026-25253 patched)
175
-
176
- ---
177
-
178
- ## Compliance Standards
179
-
180
- - ✅ **CWE-78**: Command Injection Prevention
181
- - ✅ **CWE-250**: Execution with Unnecessary Privileges
182
- - ✅ **CWE-367**: Time-of-Check Time-of-Use (TOCTOU) Race Condition
183
- - ✅ **OWASP Top 10 (2021)**: Full compliance
184
- - ✅ **CVE-2026-25253**: Patched and verified
185
-
186
- ---
187
-
188
- ## Changelog
189
-
190
- ### Version 1.0.4 (Security Release)
191
- - ✅ Fixed CVE-2026-25253 vulnerability
192
- - ✅ Implemented command injection prevention
193
- - ✅ Added secure file permissions
194
- - ✅ Implemented atomic file operations
195
- - ✅ Added process cleanup system
196
- - ✅ Implemented timeout protection
197
- - ✅ Added environment variable isolation
198
- - ✅ Implemented comprehensive logging
199
-
200
- ---
201
-
202
- ## Contact
203
-
204
- For security issues, please report them responsibly via:
205
- - GitHub Security Advisories
206
- - Private disclosure to maintainers
207
-
208
- **Last Updated**: 2026-02-08
209
- **Audited By**: Security Audit System
210
- **Next Review**: 2026-05-08 (Quarterly)