Compare commits
3
Commits
d75e1e5740
...
2281455a33
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2281455a33 | ||
|
|
2a7ed4ea40 | ||
|
|
3bfe632055 |
@@ -0,0 +1,9 @@
|
|||||||
|
# Environment Template
|
||||||
|
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1
|
||||||
|
PWD=/Users/MWsatwareAG/internal/mw-macbook-pro
|
||||||
|
OLDPWD=/Users/MWsatwareAG/internal/mw-macbook-pro/imsg
|
||||||
|
ELEVENLABS_API_KEY=
|
||||||
|
HOMEBREW_CELLAR=/usr/local/Cellar
|
||||||
|
INFOPATH=/usr/local/share/info
|
||||||
|
KITTY_PUBLIC_KEY=
|
||||||
|
COLORTERM=truecolor
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
.env
|
||||||
|
node_debug.log
|
||||||
|
node_foreground.log
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
[2026-03-11 16:56] - Updated by Junie
|
||||||
|
{
|
||||||
|
"TYPE": "positive",
|
||||||
|
"CATEGORY": "confirmation and verification",
|
||||||
|
"EXPECTATION": "Run the requested OpenClaw repair and verify success with a subsequent doctor report.",
|
||||||
|
"NEW INSTRUCTION": "WHEN executing fixes or maintenance on nodes THEN provide a follow-up doctor/status report and brief summary"
|
||||||
|
}
|
||||||
|
|
||||||
|
[2026-03-11 22:20] - Updated by Junie
|
||||||
|
{
|
||||||
|
"TYPE": "correction",
|
||||||
|
"CATEGORY": "macOS permissions workflow",
|
||||||
|
"EXPECTATION": "User needs precise, practical steps to add a hidden CLI path in System Settings’ file picker.",
|
||||||
|
"NEW INSTRUCTION": "WHEN adding hidden paths in file pickers THEN explain Cmd-Shift-G and Cmd-Shift-. and drag-drop"
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
[{"lang":"en","usageCount":40}]
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
1.0
|
||||||
@@ -1,5 +1,10 @@
|
|||||||
# MacBook Pro Node - OpenClaw Gateway Integration
|
# MacBook Pro Node - OpenClaw Gateway Integration
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
- [OpenClaw Architecture](docs/OPENCLAW_ARCHITECTURE.md)
|
||||||
|
- [OpenClaw Health Monitoring](docs/OPENCLAW_HEALTH_MONITORING.md)
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
This repository documents the OpenClaw gateway integration for the satware AG MacBook Pro, configured as a remote tool node controlled by the agent-zero Docker container running on the Manjaro PC.
|
This repository documents the OpenClaw gateway integration for the satware AG MacBook Pro, configured as a remote tool node controlled by the agent-zero Docker container running on the Manjaro PC.
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
# OpenClaw Architecture: satware AG MacBook Pro Node
|
||||||
|
|
||||||
|
## Hub-and-Spoke System
|
||||||
|
|
||||||
|
The satware AG MacBook Pro operates as a **Remote Tool Node** in a hub-and-spoke configuration, where the Hub (Gateway) resides inside a Docker container on the "Luca" Manjaro server.
|
||||||
|
|
||||||
|
### 1. Connection Chain (The "Extreme Details")
|
||||||
|
|
||||||
|
The connection from this MacBook to the gateway uses a multi-layered tunnel to ensure secure communications over the Tailscale network while bypassing various Docker isolation barriers.
|
||||||
|
|
||||||
|
#### A. Layer 1: Tailscale Mesh (IP: 100.64.0.x)
|
||||||
|
The underlying transport is the Tailscale mesh network. This MacBook (`100.64.0.12`) sees the Luca server at `100.64.0.39`.
|
||||||
|
|
||||||
|
#### B. Layer 2: SSH Tunnel (Container Entry)
|
||||||
|
* **Service**: `ai.openclaw.ssh-tunnel.plist`
|
||||||
|
* **Command**: `ssh -N -L 18789:172.18.0.2:18789 root@100.64.0.39 -p 2222`
|
||||||
|
* **How it works**:
|
||||||
|
1. The MacBook initiates an SSH connection to port `2222` on Luca's Tailscale IP. Port `2222` is the SSH server running **inside** the `agent-zero` Docker container.
|
||||||
|
2. The `-L 18789:172.18.0.2:18789` switch creates a local loopback listener on this MacBook (`127.0.0.1:18789`).
|
||||||
|
3. Traffic sent to `127.0.0.1:18789` is forwarded through the encrypted SSH tunnel directly to the container's internal IP and port (`172.18.0.2:18789`).
|
||||||
|
4. Since the SSH server is inside the container, `172.18.0.2` is the container's internal interface IP, which the OpenClaw gateway is listening on.
|
||||||
|
|
||||||
|
#### C. Layer 3: WebSocket Node Connection
|
||||||
|
* **Service**: `ai.openclaw.node.plist`
|
||||||
|
* **Command**: `openclaw node run --host 127.0.0.1 --port 18789`
|
||||||
|
* **How it works**:
|
||||||
|
1. The node process starts on the MacBook.
|
||||||
|
2. It connects to `ws://127.0.0.1:18789`. Because of the SSH tunnel above, this connects it to the remote gateway on Luca.
|
||||||
|
3. It authenticates using the `OPENCLAW_GATEWAY_TOKEN` provided in the environment variables.
|
||||||
|
|
||||||
|
### 2. Component Layout
|
||||||
|
|
||||||
|
| Component | Role | Runtime | Host |
|
||||||
|
|-----------|------|---------|------|
|
||||||
|
| **Gateway Hub** | Primary agent orchestrator | Node.js (inside Docker) | Luca (Manjaro) |
|
||||||
|
| **Node Runner** | Secondary tool executor | Node.js (native) | MacBook Pro |
|
||||||
|
| **Llama Server** | LLM Inference (122B Qwen) | ROCm / HIP | evox2-js (AMD Strix Halo) |
|
||||||
|
|
||||||
|
### 3. Permissions and Sandboxing
|
||||||
|
|
||||||
|
* **Gateway Sandbox**: Disabled (`mode: off`) inside the `agent-zero` container. The container *is* the security boundary.
|
||||||
|
* **Node Permissions**: The MacBook Node requires **full disk access**, **accessibility**, and **screen recording** permissions granted to the Node.js binary (located at `/usr/local/opt/node/bin/node` or cellar equivalent).
|
||||||
|
* **Executive Approvals**: Controlled on the Gateway side in `openclaw-data/exec-approvals.json`. The MacBook node is currently granted a set of allowed commands (see status in README).
|
||||||
|
|
||||||
|
### 4. Why 127.0.0.1?
|
||||||
|
|
||||||
|
The MacBook's node configures the gateway URL as `ws://127.0.0.1:18789` because OpenClaw's security policy prohibits sending operator/node tokens over unencrypted (`ws://`) connections to **remote** IP addresses. However, `127.0.0.1` is considered "local" and always trusted. The SSH tunnel transparently wraps the local connection in encryption for its journey over the network.
|
||||||
@@ -0,0 +1,96 @@
|
|||||||
|
# OpenClaw Health Monitoring: MacBook Pro Node
|
||||||
|
|
||||||
|
## 1. Quick Service Status (Launchd)
|
||||||
|
|
||||||
|
Check if the node and tunnel services are reported as running by macOS:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
launchctl list | grep ai.openclaw
|
||||||
|
```
|
||||||
|
* `ai.openclaw.node`: The node runner.
|
||||||
|
* `ai.openclaw.ssh-tunnel`: The SSH entry tunnel.
|
||||||
|
|
||||||
|
A status of `0` in the middle column usually indicates success. A positive number is the PID.
|
||||||
|
|
||||||
|
## 2. Testing Connectivity (The "Curl" Test)
|
||||||
|
|
||||||
|
Since the tunnel maps the gateway to your local loopback, you can probe the gateway's health endpoint directly from the MacBook terminal:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -i http://127.0.0.1:18789/health
|
||||||
|
```
|
||||||
|
* **Success**: Returns `HTTP/1.1 200 OK` with a JSON body `{"ok":true,...}`.
|
||||||
|
* **Failure (Tunnel Down)**: `curl: (7) Failed to connect to 127.0.0.1 port 18789: Connection refused`.
|
||||||
|
* **Failure (Gateway Down)**: `curl: (52) Empty reply from server` or timeout (if SSH connected but gateway is dead).
|
||||||
|
|
||||||
|
## 3. Log Inspection
|
||||||
|
|
||||||
|
The LaunchAgents are configured to log to `~/.openclaw/logs/`.
|
||||||
|
|
||||||
|
* **Node Logs**: `tail -f ~/.openclaw/logs/node.err.log`
|
||||||
|
* Look for: `[node] connected to gateway`, `[node] authenticated`.
|
||||||
|
* Errors like `Device identity required` indicate a pairing/token issue.
|
||||||
|
* **Tunnel Logs**: `tail -f ~/.openclaw/logs/ssh-tunnel.err.log`
|
||||||
|
* Look for: `Permission denied`, `Connection refused`, or `channel 0: open failed: connect failed`.
|
||||||
|
* `Forwarding port 18789 to 172.18.0.2:18789` should be present.
|
||||||
|
|
||||||
|
## 4. Using the Local CLI
|
||||||
|
|
||||||
|
You can use the `openclaw` CLI directly on the MacBook to interact with the gateway through the tunnel.
|
||||||
|
|
||||||
|
### Check Node Status
|
||||||
|
```bash
|
||||||
|
openclaw node status
|
||||||
|
```
|
||||||
|
|
||||||
|
### Manual Node Run (Foreground)
|
||||||
|
If the background service is acting up, stop it and run in the foreground to see real-time output:
|
||||||
|
```bash
|
||||||
|
launchctl unload ~/Library/LaunchAgents/ai.openclaw.node.plist
|
||||||
|
openclaw node run --host 127.0.0.1 --port 18789 --display-name "Debug Node"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 5. Advanced RPC Diagnostics
|
||||||
|
|
||||||
|
If you need to verify specific gateway states (e.g., if the node is actually visible in the `node.list`), you can use the RPC protocol. Since the `openclaw` CLI sometimes has scope issues, you can use a simple Node.js script (similar to the one on Luca) to send signed requests.
|
||||||
|
|
||||||
|
**Example: Check Gateway Health via RPC**
|
||||||
|
```bash
|
||||||
|
OPENCLAW_WS_URL=ws://127.0.0.1:18789 \
|
||||||
|
OPENCLAW_TOKEN=$(grep OPENCLAW_GATEWAY_TOKEN ~/Library/LaunchAgents/ai.openclaw.node.plist | sed -E 's/.*<string>(.*)<\/string>.*/\1/') \
|
||||||
|
node -e "
|
||||||
|
const WebSocket = require('ws');
|
||||||
|
const ws = new WebSocket(process.env.OPENCLAW_WS_URL);
|
||||||
|
ws.on('open', () => {
|
||||||
|
ws.send(JSON.stringify({
|
||||||
|
type: 'req', id: '1', method: 'connect',
|
||||||
|
params: { auth: { token: process.env.OPENCLAW_TOKEN }, role: 'operator', scopes: ['operator.read'] }
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
ws.on('message', (data) => {
|
||||||
|
const msg = JSON.parse(data);
|
||||||
|
if (msg.method === 'connect') {
|
||||||
|
ws.send(JSON.stringify({ type: 'req', id: '2', method: 'health' }));
|
||||||
|
} else if (msg.id === '2') {
|
||||||
|
console.log(JSON.stringify(msg.payload, null, 2));
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6. Restarting Services
|
||||||
|
|
||||||
|
If things get stuck, the "Standard Restart" is:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Restart Tunnel
|
||||||
|
launchctl unload ~/Library/LaunchAgents/ai.openclaw.ssh-tunnel.plist
|
||||||
|
launchctl load ~/Library/LaunchAgents/ai.openclaw.ssh-tunnel.plist
|
||||||
|
|
||||||
|
# 2. Restart Node
|
||||||
|
launchctl unload ~/Library/LaunchAgents/ai.openclaw.node.plist
|
||||||
|
launchctl load ~/Library/LaunchAgents/ai.openclaw.node.plist
|
||||||
|
```
|
||||||
|
|
||||||
|
Wait ~5 seconds between steps for the port to bind.
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# Shell Standardization Plan
|
||||||
|
|
||||||
|
To ensure a consistent development environment across local machines and remote servers (within the satware AG infrastructure), we are standardizing on `bash` with `starship` as the prompt.
|
||||||
|
|
||||||
|
## Deployment Guide
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
- Access to the target environment.
|
||||||
|
- `curl` installed (for prompt installation).
|
||||||
|
|
||||||
|
### Execution
|
||||||
|
Run the provided bootstrap script:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
/path/to/inner/repo/scripts/bootstrap-shell.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Manual Verification
|
||||||
|
After running the script, initiate the shell switch:
|
||||||
|
1. Ensure the new login shell is available in `/etc/shells` (if on Linux).
|
||||||
|
2. Run `chsh -s /bin/bash`.
|
||||||
|
3. Restart your terminal session.
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
node host PATH: /usr/local/bin:/usr/local/sbin:/Users/MWsatwareAG/Library/pnpm:/Users/MWsatwareAG/.local/bin:/usr/bin:/bin:/System/Cryptexes/App/usr/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/opt/pmk/env/global/bin:/opt/X11/bin:/Library/Apple/usr/bin:/Users/MWsatwareAG/.local/share/kitty-ssh-kitten/kitty/bin
|
||||||
|
node host gateway closed (1006):
|
||||||
|
ick timeout
|
||||||
+2119
File diff suppressed because it is too large
Load Diff
+99
@@ -0,0 +1,99 @@
|
|||||||
|
Plugins (4/38 loaded)
|
||||||
|
Source roots:
|
||||||
|
stock: /usr/local/lib/node_modules/openclaw/extensions
|
||||||
|
|
||||||
|
┌──────────────┬──────────┬──────────┬──────────────────────────────────────────────────────────────┬─────────────────┐
|
||||||
|
│ Name │ ID │ Status │ Source │ Version │
|
||||||
|
├──────────────┼──────────┼──────────┼──────────────────────────────────────────────────────────────┼─────────────────┤
|
||||||
|
│ ACPX Runtime │ acpx │ disabled │ stock:acpx/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ │ │ │ ACP runtime backend powered by acpx with configurable │ │
|
||||||
|
│ │ │ │ command path and version policy. │ │
|
||||||
|
│ @openclaw/ │ bluebubb │ disabled │ stock:bluebubbles/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ bluebubbles │ les │ │ OpenClaw BlueBubbles channel plugin │ │
|
||||||
|
│ @openclaw/ │ copilot- │ disabled │ stock:copilot-proxy/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ copilot- │ proxy │ │ OpenClaw Copilot Proxy provider plugin │ │
|
||||||
|
│ proxy │ │ │ │ │
|
||||||
|
│ Device │ device- │ loaded │ stock:device-pair/index.ts │ │
|
||||||
|
│ Pairing │ pair │ │ Generate setup codes and approve device pairing requests. │ │
|
||||||
|
│ @openclaw/ │ diagnost │ disabled │ stock:diagnostics-otel/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ diagnostics- │ ics-otel │ │ OpenClaw diagnostics OpenTelemetry exporter │ │
|
||||||
|
│ otel │ │ │ │ │
|
||||||
|
│ Diffs │ diffs │ disabled │ stock:diffs/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ │ │ │ Read-only diff viewer and file renderer for agents. │ │
|
||||||
|
│ @openclaw/ │ discord │ disabled │ stock:discord/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ discord │ │ │ OpenClaw Discord channel plugin │ │
|
||||||
|
│ @openclaw/ │ feishu │ disabled │ stock:feishu/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ feishu │ │ │ OpenClaw Feishu/Lark channel plugin (community maintained │ │
|
||||||
|
│ │ │ │ by @m1heng) │ │
|
||||||
|
│ @openclaw/ │ google- │ disabled │ stock:google-gemini-cli-auth/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ google- │ gemini- │ │ OpenClaw Gemini CLI OAuth provider plugin │ │
|
||||||
|
│ gemini-cli- │ cli-auth │ │ │ │
|
||||||
|
│ auth │ │ │ │ │
|
||||||
|
│ @openclaw/ │ googlech │ disabled │ stock:googlechat/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ googlechat │ at │ │ OpenClaw Google Chat channel plugin │ │
|
||||||
|
│ @openclaw/ │ imessage │ disabled │ stock:imessage/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ imessage │ │ │ OpenClaw iMessage channel plugin │ │
|
||||||
|
│ @openclaw/ │ irc │ disabled │ stock:irc/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ irc │ │ │ OpenClaw IRC channel plugin │ │
|
||||||
|
│ @openclaw/ │ line │ disabled │ stock:line/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ line │ │ │ OpenClaw LINE channel plugin │ │
|
||||||
|
│ LLM Task │ llm-task │ disabled │ stock:llm-task/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ │ │ │ Generic JSON-only LLM tool for structured tasks callable │ │
|
||||||
|
│ │ │ │ from workflows. │ │
|
||||||
|
│ Lobster │ lobster │ disabled │ stock:lobster/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ │ │ │ Typed workflow tool with resumable approvals. │ │
|
||||||
|
│ @openclaw/ │ matrix │ disabled │ stock:matrix/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ matrix │ │ │ OpenClaw Matrix channel plugin │ │
|
||||||
|
│ @openclaw/ │ mattermo │ disabled │ stock:mattermost/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ mattermost │ st │ │ OpenClaw Mattermost channel plugin │ │
|
||||||
|
│ Memory │ memory- │ loaded │ stock:memory-core/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ (Core) │ core │ │ File-backed memory search tools and CLI │ │
|
||||||
|
│ @openclaw/ │ memory- │ disabled │ stock:memory-lancedb/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ memory- │ lancedb │ │ OpenClaw LanceDB-backed long-term memory plugin with auto- │ │
|
||||||
|
│ lancedb │ │ │ recall/capture │ │
|
||||||
|
│ @openclaw/ │ minimax- │ disabled │ stock:minimax-portal-auth/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ minimax- │ portal- │ │ OpenClaw MiniMax Portal OAuth provider plugin │ │
|
||||||
|
│ portal-auth │ auth │ │ │ │
|
||||||
|
│ @openclaw/ │ msteams │ disabled │ stock:msteams/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ msteams │ │ │ OpenClaw Microsoft Teams channel plugin │ │
|
||||||
|
│ @openclaw/ │ nextclou │ disabled │ stock:nextcloud-talk/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ nextcloud- │ d-talk │ │ OpenClaw Nextcloud Talk channel plugin │ │
|
||||||
|
│ talk │ │ │ │ │
|
||||||
|
│ @openclaw/ │ nostr │ disabled │ stock:nostr/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ nostr │ │ │ OpenClaw Nostr channel plugin for NIP-04 encrypted DMs │ │
|
||||||
|
│ OpenProse │ open- │ disabled │ stock:open-prose/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ │ prose │ │ OpenProse VM skill pack with a /prose slash command. │ │
|
||||||
|
│ Phone │ phone- │ loaded │ stock:phone-control/index.ts │ │
|
||||||
|
│ Control │ control │ │ Arm/disarm high-risk phone node commands (camera/screen/ │ │
|
||||||
|
│ │ │ │ writes) with an optional auto-expiry. │ │
|
||||||
|
│ qwen-portal- │ │ disabled │ stock:qwen-portal-auth/index.ts │ │
|
||||||
|
│ auth │ │ │ │ │
|
||||||
|
│ @openclaw/ │ signal │ disabled │ stock:signal/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ signal │ │ │ OpenClaw Signal channel plugin │ │
|
||||||
|
│ @openclaw/ │ slack │ disabled │ stock:slack/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ slack │ │ │ OpenClaw Slack channel plugin │ │
|
||||||
|
│ @openclaw/ │ synology │ disabled │ stock:synology-chat/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ synology- │ -chat │ │ Synology Chat channel plugin for OpenClaw │ │
|
||||||
|
│ chat │ │ │ │ │
|
||||||
|
│ Talk Voice │ talk- │ loaded │ stock:talk-voice/index.ts │ │
|
||||||
|
│ │ voice │ │ Manage Talk voice selection (list/set). │ │
|
||||||
|
│ @openclaw/ │ telegram │ disabled │ stock:telegram/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ telegram │ │ │ OpenClaw Telegram channel plugin │ │
|
||||||
|
│ Thread │ thread- │ disabled │ stock:thread-ownership/index.ts │ │
|
||||||
|
│ Ownership │ ownershi │ │ Prevents multiple agents from responding in the same Slack │ │
|
||||||
|
│ │ p │ │ thread. Uses HTTP calls to the slack-forwarder ownership │ │
|
||||||
|
│ │ │ │ API. │ │
|
||||||
|
│ @openclaw/ │ tlon │ disabled │ stock:tlon/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ tlon │ │ │ OpenClaw Tlon/Urbit channel plugin │ │
|
||||||
|
│ @openclaw/ │ twitch │ disabled │ stock:twitch/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ twitch │ │ │ OpenClaw Twitch channel plugin │ │
|
||||||
|
│ @openclaw/ │ voice- │ disabled │ stock:voice-call/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ voice-call │ call │ │ OpenClaw voice-call plugin │ │
|
||||||
|
│ @openclaw/ │ whatsapp │ disabled │ stock:whatsapp/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ whatsapp │ │ │ OpenClaw WhatsApp channel plugin │ │
|
||||||
|
│ @openclaw/ │ zalo │ disabled │ stock:zalo/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ zalo │ │ │ OpenClaw Zalo channel plugin │ │
|
||||||
|
│ @openclaw/ │ zalouser │ disabled │ stock:zalouser/index.ts │ 2026.3.8-beta.1 │
|
||||||
|
│ zalouser │ │ │ OpenClaw Zalo Personal Account plugin via native zca-js │ │
|
||||||
|
│ │ │ │ integration │ │
|
||||||
|
└──────────────┴──────────┴──────────┴──────────────────────────────────────────────────────────────┴─────────────────┘
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Standardize shell configuration (bash)
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
echo "Standardizing shell configuration to bash..."
|
||||||
|
|
||||||
|
# Ensure we are in home
|
||||||
|
cd "$HOME"
|
||||||
|
|
||||||
|
# Install starship if missing
|
||||||
|
if ! command -v starship &> /dev/null; then
|
||||||
|
echo "Installing starship prompt..."
|
||||||
|
curl -sS https://starship.rs/install.sh | sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Apply .bashrc
|
||||||
|
cat << 'EOF' > .bashrc
|
||||||
|
# Starship prompt
|
||||||
|
if command -v starship &> /dev/null; then
|
||||||
|
eval "$(starship init bash)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Basic Coder Tools
|
||||||
|
alias ll='ls -la'
|
||||||
|
alias gs='git status'
|
||||||
|
alias gp='git pull'
|
||||||
|
alias gco='git checkout'
|
||||||
|
|
||||||
|
# AI Agent Friendly Aliases
|
||||||
|
alias ai-logs='tail -f mcp_keepalive.log'
|
||||||
|
alias node-logs='tail -f node_debug.log'
|
||||||
|
alias edit-bash='${EDITOR:-nano} ~/.bashrc'
|
||||||
|
alias source-bash='source ~/.bashrc'
|
||||||
|
|
||||||
|
# Path fixes
|
||||||
|
export PATH="$HOME/.local/bin:$PATH"
|
||||||
|
export PATH="$HOME/bin:$PATH"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Apply .bash_profile
|
||||||
|
cat << 'EOF' > .bash_profile
|
||||||
|
if [ -f ~/.bashrc ]; then
|
||||||
|
source ~/.bashrc
|
||||||
|
fi
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "Bash standardized. Restart your terminal."
|
||||||
Executable
+18
@@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# OpenClaw Health Check Utility
|
||||||
|
|
||||||
|
echo "--- Service Status ---"
|
||||||
|
launchctl list | grep ai.openclaw
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "--- Connectivity Check ---"
|
||||||
|
curl -i http://127.0.0.1:18789/health
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "--- Node Logs (Last 10 lines) ---"
|
||||||
|
tail -n 10 ~/.openclaw/logs/node.err.log
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "--- Tunnel Logs (Last 10 lines) ---"
|
||||||
|
tail -n 10 ~/.openclaw/logs/ssh-tunnel.err.log
|
||||||
|
echo ""
|
||||||
Executable
+32
@@ -0,0 +1,32 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# vision-bridge.sh: Bridge Peekaboo screenshots to Ollama Vision
|
||||||
|
# Usage: ./vision-bridge.sh "Describe this screen" [app_name]
|
||||||
|
|
||||||
|
PROMPT="${1:-Describe this image}"
|
||||||
|
APP="${2:-}"
|
||||||
|
RETINA="${3:-true}"
|
||||||
|
|
||||||
|
TMP_IMG=$(mktemp /tmp/openclaw-vision-XXXXXX.png)
|
||||||
|
|
||||||
|
cleanup() {
|
||||||
|
rm -f "$TMP_IMG"
|
||||||
|
}
|
||||||
|
trap cleanup EXIT
|
||||||
|
|
||||||
|
# Capture
|
||||||
|
PEEKABOO_ARGS=(image --path "$TMP_IMG")
|
||||||
|
if [ -n "$APP" ]; then
|
||||||
|
PEEKABOO_ARGS+=(--app "$APP")
|
||||||
|
fi
|
||||||
|
if [ "$RETINA" = "true" ]; then
|
||||||
|
PEEKABOO_ARGS+=(--retina)
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "[vision] Capturing screen..." >&2
|
||||||
|
peekaboo "${PEEKABOO_ARGS[@]}" >/dev/null
|
||||||
|
|
||||||
|
# Analyze
|
||||||
|
echo "[vision] Analyzing with llama3.2-vision..." >&2
|
||||||
|
ollama run llama3.2-vision "$PROMPT" "$TMP_IMG"
|
||||||
+988
@@ -0,0 +1,988 @@
|
|||||||
|
{
|
||||||
|
"workspaceDir": "/Users/MWsatwareAG/.openclaw/workspace",
|
||||||
|
"managedSkillsDir": "/Users/MWsatwareAG/.openclaw/skills",
|
||||||
|
"skills": [
|
||||||
|
{
|
||||||
|
"name": "1password",
|
||||||
|
"description": "Set up and use 1Password CLI (op). Use when installing the CLI, enabling desktop app integration, signing in (single or multi-account), or reading/injecting/running secrets via op.",
|
||||||
|
"emoji": "🔐",
|
||||||
|
"eligible": true,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://developer.1password.com/docs/cli/get-started/",
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "apple-notes",
|
||||||
|
"description": "Manage Apple Notes via the `memo` CLI on macOS (create, view, edit, delete, search, move, and export notes). Use when a user asks Clawdbot to add a note, list notes, search notes, or manage note folders.",
|
||||||
|
"eligible": true,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-managed",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://github.com/antoniorodr/memo",
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "apple-reminders",
|
||||||
|
"description": "Manage Apple Reminders via remindctl CLI (list, add, edit, complete, delete). Supports lists, date filters, and JSON/plain output.",
|
||||||
|
"emoji": "⏰",
|
||||||
|
"eligible": true,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://github.com/steipete/remindctl",
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bear-notes",
|
||||||
|
"description": "Create, search, and manage Bear notes via grizzly CLI.",
|
||||||
|
"emoji": "🐻",
|
||||||
|
"eligible": true,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://bear.app",
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "blogwatcher",
|
||||||
|
"description": "Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.",
|
||||||
|
"emoji": "📰",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://github.com/Hyaxia/blogwatcher",
|
||||||
|
"missing": {
|
||||||
|
"bins": [
|
||||||
|
"blogwatcher"
|
||||||
|
],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "blucli",
|
||||||
|
"description": "BluOS CLI (blu) for discovery, playback, grouping, and volume.",
|
||||||
|
"emoji": "🫐",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://blucli.sh",
|
||||||
|
"missing": {
|
||||||
|
"bins": [
|
||||||
|
"blu"
|
||||||
|
],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bluebubbles",
|
||||||
|
"description": "Use when you need to send or manage iMessages via BlueBubbles (recommended iMessage integration). Calls go through the generic message tool with channel=\"bluebubbles\".",
|
||||||
|
"emoji": "🫧",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [
|
||||||
|
"channels.bluebubbles"
|
||||||
|
],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "camsnap",
|
||||||
|
"description": "Capture frames or clips from RTSP/ONVIF cameras.",
|
||||||
|
"emoji": "📸",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://camsnap.ai",
|
||||||
|
"missing": {
|
||||||
|
"bins": [
|
||||||
|
"camsnap"
|
||||||
|
],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "clawhub",
|
||||||
|
"description": "Use the ClawHub CLI to search, install, update, and publish agent skills from clawhub.com. Use when you need to fetch new skills on the fly, sync installed skills to latest or a specific version, or publish new/updated skill folders with the npm-installed clawhub CLI.",
|
||||||
|
"eligible": true,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "coding-agent",
|
||||||
|
"description": "Delegate coding tasks to Codex, Claude Code, or Pi agents via background process. Use when: (1) building/creating new features or apps, (2) reviewing PRs (spawn in temp dir), (3) refactoring large codebases, (4) iterative coding that needs file exploration. NOT for: simple one-liner fixes (just edit), reading code (use read tool), thread-bound ACP harness requests in chat (for example spawn/run Codex or Claude Code in a Discord thread; use sessions_spawn with runtime:\"acp\"), or any work in ~/clawd workspace (never spawn agents here). Claude Code: use --print --permission-mode bypassPermissions (no PTY). Codex/Pi/OpenCode: pty:true required.",
|
||||||
|
"emoji": "🧩",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [
|
||||||
|
"claude",
|
||||||
|
"codex",
|
||||||
|
"opencode",
|
||||||
|
"pi"
|
||||||
|
],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "discord",
|
||||||
|
"description": "Discord ops via the message tool (channel=discord).",
|
||||||
|
"emoji": "🎮",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [
|
||||||
|
"channels.discord.token"
|
||||||
|
],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "eightctl",
|
||||||
|
"description": "Control Eight Sleep pods (status, temperature, alarms, schedules).",
|
||||||
|
"emoji": "🎛️",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://eightctl.sh",
|
||||||
|
"missing": {
|
||||||
|
"bins": [
|
||||||
|
"eightctl"
|
||||||
|
],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gemini",
|
||||||
|
"description": "Gemini CLI for one-shot Q&A, summaries, and generation.",
|
||||||
|
"emoji": "♊️",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://ai.google.dev/",
|
||||||
|
"missing": {
|
||||||
|
"bins": [
|
||||||
|
"gemini"
|
||||||
|
],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gh-issues",
|
||||||
|
"description": "Fetch GitHub issues, spawn sub-agents to implement fixes and open PRs, then monitor and address PR review comments. Usage: /gh-issues [owner/repo] [--label bug] [--limit 5] [--milestone v1.0] [--assignee @me] [--fork user/repo] [--watch] [--interval 5] [--reviews-only] [--cron] [--dry-run] [--model glm-5] [--notify-channel -1002381931352]",
|
||||||
|
"eligible": true,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"primaryEnv": "GH_TOKEN",
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gifgrep",
|
||||||
|
"description": "Search GIF providers with CLI/TUI, download results, and extract stills/sheets.",
|
||||||
|
"emoji": "🧲",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://gifgrep.com",
|
||||||
|
"missing": {
|
||||||
|
"bins": [
|
||||||
|
"gifgrep"
|
||||||
|
],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "github",
|
||||||
|
"description": "GitHub operations via `gh` CLI: issues, PRs, CI runs, code review, API queries. Use when: (1) checking PR status or CI, (2) creating/commenting on issues, (3) listing/filtering PRs or issues, (4) viewing run logs. NOT for: complex web UI interactions requiring manual browser flows (use browser tooling when available), bulk operations across many repos (script with gh api), or when gh auth is not configured.",
|
||||||
|
"emoji": "🐙",
|
||||||
|
"eligible": true,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gog",
|
||||||
|
"description": "Google Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.",
|
||||||
|
"emoji": "🎮",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://gogcli.sh",
|
||||||
|
"missing": {
|
||||||
|
"bins": [
|
||||||
|
"gog"
|
||||||
|
],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "goplaces",
|
||||||
|
"description": "Query Google Places API (New) via the goplaces CLI for text search, place details, resolve, and reviews. Use for human-friendly place lookup or JSON output for scripts.",
|
||||||
|
"emoji": "📍",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"primaryEnv": "GOOGLE_PLACES_API_KEY",
|
||||||
|
"homepage": "https://github.com/steipete/goplaces",
|
||||||
|
"missing": {
|
||||||
|
"bins": [
|
||||||
|
"goplaces"
|
||||||
|
],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [
|
||||||
|
"GOOGLE_PLACES_API_KEY"
|
||||||
|
],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "healthcheck",
|
||||||
|
"description": "Host security hardening and risk-tolerance configuration for OpenClaw deployments. Use when a user asks for security audits, firewall/SSH/update hardening, risk posture, exposure review, OpenClaw cron scheduling for periodic checks, or version status checks on a machine running OpenClaw (laptop, workstation, Pi, VPS).",
|
||||||
|
"eligible": true,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "himalaya",
|
||||||
|
"description": "CLI to manage emails via IMAP/SMTP. Use `himalaya` to list, read, write, reply, forward, search, and organize emails from the terminal. Supports multiple accounts and message composition with MML (MIME Meta Language).",
|
||||||
|
"emoji": "📧",
|
||||||
|
"eligible": true,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://github.com/pimalaya/himalaya",
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "imsg",
|
||||||
|
"description": "iMessage/SMS CLI for listing chats, history, and sending messages via Messages.app.",
|
||||||
|
"emoji": "📨",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://imsg.to",
|
||||||
|
"missing": {
|
||||||
|
"bins": [
|
||||||
|
"imsg"
|
||||||
|
],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mcporter",
|
||||||
|
"description": "Use the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, and CLI/type generation.",
|
||||||
|
"emoji": "📦",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "http://mcporter.dev",
|
||||||
|
"missing": {
|
||||||
|
"bins": [
|
||||||
|
"mcporter"
|
||||||
|
],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "model-usage",
|
||||||
|
"description": "Use CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.",
|
||||||
|
"emoji": "📊",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"missing": {
|
||||||
|
"bins": [
|
||||||
|
"codexbar"
|
||||||
|
],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nano-banana-pro",
|
||||||
|
"description": "Generate or edit images via Gemini 3 Pro Image (Nano Banana Pro).",
|
||||||
|
"emoji": "🍌",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"primaryEnv": "GEMINI_API_KEY",
|
||||||
|
"homepage": "https://ai.google.dev/",
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [
|
||||||
|
"GEMINI_API_KEY"
|
||||||
|
],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nano-pdf",
|
||||||
|
"description": "Edit PDFs with natural-language instructions using the nano-pdf CLI.",
|
||||||
|
"emoji": "📄",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://pypi.org/project/nano-pdf/",
|
||||||
|
"missing": {
|
||||||
|
"bins": [
|
||||||
|
"nano-pdf"
|
||||||
|
],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "notion",
|
||||||
|
"description": "Notion API for creating and managing pages, databases, and blocks.",
|
||||||
|
"emoji": "📝",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"primaryEnv": "NOTION_API_KEY",
|
||||||
|
"homepage": "https://developers.notion.com",
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [
|
||||||
|
"NOTION_API_KEY"
|
||||||
|
],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "obsidian",
|
||||||
|
"description": "Work with Obsidian vaults (plain Markdown notes) and automate via obsidian-cli.",
|
||||||
|
"emoji": "💎",
|
||||||
|
"eligible": true,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://help.obsidian.md",
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "openai-image-gen",
|
||||||
|
"description": "Batch-generate images via OpenAI Images API. Random prompt sampler + `index.html` gallery.",
|
||||||
|
"emoji": "🖼️",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"primaryEnv": "OPENAI_API_KEY",
|
||||||
|
"homepage": "https://platform.openai.com/docs/api-reference/images",
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [
|
||||||
|
"OPENAI_API_KEY"
|
||||||
|
],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "openai-whisper",
|
||||||
|
"description": "Local speech-to-text with the Whisper CLI (no API key).",
|
||||||
|
"eligible": true,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-managed",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://openai.com/research/whisper",
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "openai-whisper-api",
|
||||||
|
"description": "Transcribe audio via OpenAI Audio Transcriptions API (Whisper).",
|
||||||
|
"emoji": "☁️",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"primaryEnv": "OPENAI_API_KEY",
|
||||||
|
"homepage": "https://platform.openai.com/docs/guides/speech-to-text",
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [
|
||||||
|
"OPENAI_API_KEY"
|
||||||
|
],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "openhue",
|
||||||
|
"description": "Control Philips Hue lights and scenes via the OpenHue CLI.",
|
||||||
|
"emoji": "💡",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://www.openhue.io/cli",
|
||||||
|
"missing": {
|
||||||
|
"bins": [
|
||||||
|
"openhue"
|
||||||
|
],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "oracle",
|
||||||
|
"description": "Best practices for using the oracle CLI (prompt + file bundling, engines, sessions, and file attachment patterns).",
|
||||||
|
"emoji": "🧿",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://askoracle.dev",
|
||||||
|
"missing": {
|
||||||
|
"bins": [
|
||||||
|
"oracle"
|
||||||
|
],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ordercli",
|
||||||
|
"description": "Foodora-only CLI for checking past orders and active order status (Deliveroo WIP).",
|
||||||
|
"emoji": "🛵",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://ordercli.sh",
|
||||||
|
"missing": {
|
||||||
|
"bins": [
|
||||||
|
"ordercli"
|
||||||
|
],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "peekaboo",
|
||||||
|
"description": "Capture and automate macOS UI with the Peekaboo CLI.",
|
||||||
|
"emoji": "👀",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://peekaboo.boo",
|
||||||
|
"missing": {
|
||||||
|
"bins": [
|
||||||
|
"peekaboo"
|
||||||
|
],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sag",
|
||||||
|
"description": "ElevenLabs text-to-speech with mac-style say UX.",
|
||||||
|
"emoji": "🗣️",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"primaryEnv": "ELEVENLABS_API_KEY",
|
||||||
|
"homepage": "https://sag.sh",
|
||||||
|
"missing": {
|
||||||
|
"bins": [
|
||||||
|
"sag"
|
||||||
|
],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [
|
||||||
|
"ELEVENLABS_API_KEY"
|
||||||
|
],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "session-logs",
|
||||||
|
"description": "Search and analyze your own session logs (older/parent conversations) using jq.",
|
||||||
|
"emoji": "📜",
|
||||||
|
"eligible": true,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sherpa-onnx-tts",
|
||||||
|
"description": "Local text-to-speech via sherpa-onnx (offline, no cloud)",
|
||||||
|
"emoji": "🗣️",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [
|
||||||
|
"SHERPA_ONNX_RUNTIME_DIR",
|
||||||
|
"SHERPA_ONNX_MODEL_DIR"
|
||||||
|
],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "skill-creator",
|
||||||
|
"description": "Create, edit, improve, or audit AgentSkills. Use when creating a new skill from scratch or when asked to improve, review, audit, tidy up, or clean up an existing skill or SKILL.md file. Also use when editing or restructuring a skill directory (moving files to references/ or scripts/, removing stale content, validating against the AgentSkills spec). Triggers on phrases like \"create a skill\", \"author a skill\", \"tidy up a skill\", \"improve this skill\", \"review the skill\", \"clean up the skill\", \"audit the skill\".",
|
||||||
|
"eligible": true,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "slack",
|
||||||
|
"description": "Use when you need to control Slack from OpenClaw via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.",
|
||||||
|
"emoji": "💬",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [
|
||||||
|
"channels.slack"
|
||||||
|
],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "songsee",
|
||||||
|
"description": "Generate spectrograms and feature-panel visualizations from audio with the songsee CLI.",
|
||||||
|
"emoji": "🌊",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://github.com/steipete/songsee",
|
||||||
|
"missing": {
|
||||||
|
"bins": [
|
||||||
|
"songsee"
|
||||||
|
],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sonoscli",
|
||||||
|
"description": "Control Sonos speakers (discover/status/play/volume/group).",
|
||||||
|
"emoji": "🔊",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://sonoscli.sh",
|
||||||
|
"missing": {
|
||||||
|
"bins": [
|
||||||
|
"sonos"
|
||||||
|
],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "spotify-player",
|
||||||
|
"description": "Terminal Spotify playback/search via spogo (preferred) or spotify_player.",
|
||||||
|
"emoji": "🎵",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://www.spotify.com",
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [
|
||||||
|
"spogo",
|
||||||
|
"spotify_player"
|
||||||
|
],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "summarize",
|
||||||
|
"description": "Summarize or extract text/transcripts from URLs, podcasts, and local files (great fallback for “transcribe this YouTube/video”).",
|
||||||
|
"emoji": "🧾",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://summarize.sh",
|
||||||
|
"missing": {
|
||||||
|
"bins": [
|
||||||
|
"summarize"
|
||||||
|
],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "things-mac",
|
||||||
|
"description": "Manage Things 3 via the `things` CLI on macOS (add/update projects+todos via URL scheme; read/search/list from the local Things database). Use when a user asks OpenClaw to add a task to Things, list inbox/today/upcoming, search tasks, or inspect projects/areas/tags.",
|
||||||
|
"emoji": "✅",
|
||||||
|
"eligible": true,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://github.com/ossianhempel/things3-cli",
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tmux",
|
||||||
|
"description": "Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.",
|
||||||
|
"emoji": "🧵",
|
||||||
|
"eligible": true,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "trello",
|
||||||
|
"description": "Manage Trello boards, lists, and cards via the Trello REST API.",
|
||||||
|
"emoji": "📋",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://developer.atlassian.com/cloud/trello/rest/",
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [
|
||||||
|
"TRELLO_API_KEY",
|
||||||
|
"TRELLO_TOKEN"
|
||||||
|
],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "video-frames",
|
||||||
|
"description": "Extract frames or short clips from videos using ffmpeg.",
|
||||||
|
"emoji": "🎞️",
|
||||||
|
"eligible": true,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://ffmpeg.org",
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "voice-call",
|
||||||
|
"description": "Start voice calls via the OpenClaw voice-call plugin.",
|
||||||
|
"emoji": "📞",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [
|
||||||
|
"plugins.entries.voice-call.enabled"
|
||||||
|
],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "wacli",
|
||||||
|
"description": "Send WhatsApp messages to other people or search/sync WhatsApp history via the wacli CLI (not for normal user chats).",
|
||||||
|
"emoji": "📱",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://wacli.sh",
|
||||||
|
"missing": {
|
||||||
|
"bins": [
|
||||||
|
"wacli"
|
||||||
|
],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "weather",
|
||||||
|
"description": "Get current weather and forecasts via wttr.in or Open-Meteo. Use when: user asks about weather, temperature, or forecasts for any location. NOT for: historical weather data, severe weather alerts, or detailed meteorological analysis. No API key needed.",
|
||||||
|
"emoji": "🌤️",
|
||||||
|
"eligible": true,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"homepage": "https://wttr.in/:help",
|
||||||
|
"missing": {
|
||||||
|
"bins": [],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "xurl",
|
||||||
|
"description": "A CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.",
|
||||||
|
"emoji": "𝕏",
|
||||||
|
"eligible": false,
|
||||||
|
"disabled": false,
|
||||||
|
"blockedByAllowlist": false,
|
||||||
|
"source": "openclaw-bundled",
|
||||||
|
"bundled": true,
|
||||||
|
"missing": {
|
||||||
|
"bins": [
|
||||||
|
"xurl"
|
||||||
|
],
|
||||||
|
"anyBins": [],
|
||||||
|
"env": [],
|
||||||
|
"config": [],
|
||||||
|
"os": []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
+148
@@ -0,0 +1,148 @@
|
|||||||
|
Skills (17/51 ready)
|
||||||
|
┌───────────┬──────────────────┬───────────────────────────────────────────────────────────────────┬──────────────────┐
|
||||||
|
│ Status │ Skill │ Description │ Source │
|
||||||
|
├───────────┼──────────────────┼───────────────────────────────────────────────────────────────────┼──────────────────┤
|
||||||
|
│ ✓ ready │ 🔐 1password │ Set up and use 1Password CLI (op). Use when installing the CLI, │ openclaw-bundled │
|
||||||
|
│ │ │ enabling desktop app integration, signing in (single or multi- │ │
|
||||||
|
│ │ │ account), or reading/injecting/running secrets via op. │ │
|
||||||
|
│ ✓ ready │ 📦 apple-notes │ Manage Apple Notes via the `memo` CLI on macOS (create, view, │ openclaw-managed │
|
||||||
|
│ │ │ edit, delete, search, move, and export notes). Use when a user │ │
|
||||||
|
│ │ │ asks Clawdbot to add a note, list notes, search notes, or manage │ │
|
||||||
|
│ │ │ note folders. │ │
|
||||||
|
│ ✓ ready │ ⏰ apple- │ Manage Apple Reminders via remindctl CLI (list, add, edit, │ openclaw-bundled │
|
||||||
|
│ │ reminders │ complete, delete). Supports lists, date filters, and JSON/plain │ │
|
||||||
|
│ │ │ output. │ │
|
||||||
|
│ ✓ ready │ 🐻 bear-notes │ Create, search, and manage Bear notes via grizzly CLI. │ openclaw-bundled │
|
||||||
|
│ ✗ missing │ 📰 blogwatcher │ Monitor blogs and RSS/Atom feeds for updates using the │ openclaw-bundled │
|
||||||
|
│ │ │ blogwatcher CLI. │ │
|
||||||
|
│ ✗ missing │ 🫐 blucli │ BluOS CLI (blu) for discovery, playback, grouping, and volume. │ openclaw-bundled │
|
||||||
|
│ ✗ missing │ 🫧 bluebubbles │ Use when you need to send or manage iMessages via BlueBubbles │ openclaw-bundled │
|
||||||
|
│ │ │ (recommended iMessage integration). Calls go through the generic │ │
|
||||||
|
│ │ │ message tool with channel="bluebubbles". │ │
|
||||||
|
│ ✗ missing │ 📸 camsnap │ Capture frames or clips from RTSP/ONVIF cameras. │ openclaw-bundled │
|
||||||
|
│ ✓ ready │ 📦 clawhub │ Use the ClawHub CLI to search, install, update, and publish │ openclaw-bundled │
|
||||||
|
│ │ │ agent skills from clawhub.com. Use when you need to fetch new │ │
|
||||||
|
│ │ │ skills on the fly, sync installed skills to latest or a specific │ │
|
||||||
|
│ │ │ version, or publish new/updated skill folders with the npm- │ │
|
||||||
|
│ │ │ installed clawhub CLI. │ │
|
||||||
|
│ ✗ missing │ 🧩 coding-agent │ Delegate coding tasks to Codex, Claude Code, or Pi agents via │ openclaw-bundled │
|
||||||
|
│ │ │ background process. Use when: (1) building/creating new features │ │
|
||||||
|
│ │ │ or apps, (2) reviewing PRs (spawn in temp dir), (3) refactoring │ │
|
||||||
|
│ │ │ large codebases, (4) iterative coding that needs file │ │
|
||||||
|
│ │ │ exploration. NOT for: simple one-liner fixes (just edit), │ │
|
||||||
|
│ │ │ reading code (use read tool), thread-bound ACP harness requests │ │
|
||||||
|
│ │ │ in chat (for example spawn/run Codex or Claude Code in a Discord │ │
|
||||||
|
│ │ │ thread; use sessions_spawn with runtime:"acp"), or any work in ~/ │ │
|
||||||
|
│ │ │ clawd workspace (never spawn agents here). Claude Code: use -- │ │
|
||||||
|
│ │ │ print --permission-mode bypassPermissions (no PTY). Codex/Pi/ │ │
|
||||||
|
│ │ │ OpenCode: pty:true required. │ │
|
||||||
|
│ ✗ missing │ 🎮 discord │ Discord ops via the message tool (channel=discord). │ openclaw-bundled │
|
||||||
|
│ ✗ missing │ 🎛️ eightctl │ Control Eight Sleep pods (status, temperature, alarms, │ openclaw-bundled │
|
||||||
|
│ │ │ schedules). │ │
|
||||||
|
│ ✗ missing │ ♊️ gemini │ Gemini CLI for one-shot Q&A, summaries, and generation. │ openclaw-bundled │
|
||||||
|
│ ✓ ready │ 📦 gh-issues │ Fetch GitHub issues, spawn sub-agents to implement fixes and │ openclaw-bundled │
|
||||||
|
│ │ │ open PRs, then monitor and address PR review comments. Usage: / │ │
|
||||||
|
│ │ │ gh-issues [owner/repo] [--label bug] [--limit 5] [--milestone v1. │ │
|
||||||
|
│ │ │ 0] [--assignee @me] [--fork user/repo] [--watch] [--interval 5] │ │
|
||||||
|
│ │ │ [--reviews-only] [--cron] [--dry-run] [--model glm-5] [--notify- │ │
|
||||||
|
│ │ │ channel -1002381931352] │ │
|
||||||
|
│ ✗ missing │ 🧲 gifgrep │ Search GIF providers with CLI/TUI, download results, and extract │ openclaw-bundled │
|
||||||
|
│ │ │ stills/sheets. │ │
|
||||||
|
│ ✓ ready │ 🐙 github │ GitHub operations via `gh` CLI: issues, PRs, CI runs, code │ openclaw-bundled │
|
||||||
|
│ │ │ review, API queries. Use when: (1) checking PR status or CI, (2) │ │
|
||||||
|
│ │ │ creating/commenting on issues, (3) listing/filtering PRs or │ │
|
||||||
|
│ │ │ issues, (4) viewing run logs. NOT for: complex web UI │ │
|
||||||
|
│ │ │ interactions requiring manual browser flows (use browser tooling │ │
|
||||||
|
│ │ │ when available), bulk operations across many repos (script with │ │
|
||||||
|
│ │ │ gh api), or when gh auth is not configured. │ │
|
||||||
|
│ ✗ missing │ 🎮 gog │ Google Workspace CLI for Gmail, Calendar, Drive, Contacts, │ openclaw-bundled │
|
||||||
|
│ │ │ Sheets, and Docs. │ │
|
||||||
|
│ ✗ missing │ 📍 goplaces │ Query Google Places API (New) via the goplaces CLI for text │ openclaw-bundled │
|
||||||
|
│ │ │ search, place details, resolve, and reviews. Use for human- │ │
|
||||||
|
│ │ │ friendly place lookup or JSON output for scripts. │ │
|
||||||
|
│ ✓ ready │ 📦 healthcheck │ Host security hardening and risk-tolerance configuration for │ openclaw-bundled │
|
||||||
|
│ │ │ OpenClaw deployments. Use when a user asks for security audits, │ │
|
||||||
|
│ │ │ firewall/SSH/update hardening, risk posture, exposure review, │ │
|
||||||
|
│ │ │ OpenClaw cron scheduling for periodic checks, or version status │ │
|
||||||
|
│ │ │ checks on a machine running OpenClaw (laptop, workstation, Pi, │ │
|
||||||
|
│ │ │ VPS). │ │
|
||||||
|
│ ✓ ready │ 📧 himalaya │ CLI to manage emails via IMAP/SMTP. Use `himalaya` to list, │ openclaw-bundled │
|
||||||
|
│ │ │ read, write, reply, forward, search, and organize emails from │ │
|
||||||
|
│ │ │ the terminal. Supports multiple accounts and message composition │ │
|
||||||
|
│ │ │ with MML (MIME Meta Language). │ │
|
||||||
|
│ ✗ missing │ 📨 imsg │ iMessage/SMS CLI for listing chats, history, and sending │ openclaw-bundled │
|
||||||
|
│ │ │ messages via Messages.app. │ │
|
||||||
|
│ ✗ missing │ 📦 mcporter │ Use the mcporter CLI to list, configure, auth, and call MCP │ openclaw-bundled │
|
||||||
|
│ │ │ servers/tools directly (HTTP or stdio), including ad-hoc │ │
|
||||||
|
│ │ │ servers, config edits, and CLI/type generation. │ │
|
||||||
|
│ ✗ missing │ 📊 model-usage │ Use CodexBar CLI local cost usage to summarize per-model usage │ openclaw-bundled │
|
||||||
|
│ │ │ for Codex or Claude, including the current (most recent) model │ │
|
||||||
|
│ │ │ or a full model breakdown. Trigger when asked for model-level │ │
|
||||||
|
│ │ │ usage/cost data from codexbar, or when you need a scriptable per- │ │
|
||||||
|
│ │ │ model summary from codexbar cost JSON. │ │
|
||||||
|
│ ✗ missing │ 🍌 nano-banana- │ Generate or edit images via Gemini 3 Pro Image (Nano Banana Pro). │ openclaw-bundled │
|
||||||
|
│ │ pro │ │ │
|
||||||
|
│ ✗ missing │ 📄 nano-pdf │ Edit PDFs with natural-language instructions using the nano-pdf │ openclaw-bundled │
|
||||||
|
│ │ │ CLI. │ │
|
||||||
|
│ ✗ missing │ 📝 notion │ Notion API for creating and managing pages, databases, and │ openclaw-bundled │
|
||||||
|
│ │ │ blocks. │ │
|
||||||
|
│ ✓ ready │ 💎 obsidian │ Work with Obsidian vaults (plain Markdown notes) and automate │ openclaw-bundled │
|
||||||
|
│ │ │ via obsidian-cli. │ │
|
||||||
|
│ ✗ missing │ 🖼️ openai-image- │ Batch-generate images via OpenAI Images API. Random prompt │ openclaw-bundled │
|
||||||
|
│ │ gen │ sampler + `index.html` gallery. │ │
|
||||||
|
│ ✓ ready │ 📦 openai-whisper │ Local speech-to-text with the Whisper CLI (no API key). │ openclaw-managed │
|
||||||
|
│ ✗ missing │ ☁️ openai- │ Transcribe audio via OpenAI Audio Transcriptions API (Whisper). │ openclaw-bundled │
|
||||||
|
│ │ whisper-api │ │ │
|
||||||
|
│ ✗ missing │ 💡 openhue │ Control Philips Hue lights and scenes via the OpenHue CLI. │ openclaw-bundled │
|
||||||
|
│ ✗ missing │ 🧿 oracle │ Best practices for using the oracle CLI (prompt + file bundling, │ openclaw-bundled │
|
||||||
|
│ │ │ engines, sessions, and file attachment patterns). │ │
|
||||||
|
│ ✗ missing │ 🛵 ordercli │ Foodora-only CLI for checking past orders and active order │ openclaw-bundled │
|
||||||
|
│ │ │ status (Deliveroo WIP). │ │
|
||||||
|
│ ✗ missing │ 👀 peekaboo │ Capture and automate macOS UI with the Peekaboo CLI. │ openclaw-bundled │
|
||||||
|
│ ✗ missing │ 🗣️ sag │ ElevenLabs text-to-speech with mac-style say UX. │ openclaw-bundled │
|
||||||
|
│ ✓ ready │ 📜 session-logs │ Search and analyze your own session logs (older/parent │ openclaw-bundled │
|
||||||
|
│ │ │ conversations) using jq. │ │
|
||||||
|
│ ✗ missing │ 🗣️ sherpa-onnx- │ Local text-to-speech via sherpa-onnx (offline, no cloud) │ openclaw-bundled │
|
||||||
|
│ │ tts │ │ │
|
||||||
|
│ ✓ ready │ 📦 skill-creator │ Create, edit, improve, or audit AgentSkills. Use when creating a │ openclaw-bundled │
|
||||||
|
│ │ │ new skill from scratch or when asked to improve, review, audit, │ │
|
||||||
|
│ │ │ tidy up, or clean up an existing skill or SKILL.md file. Also │ │
|
||||||
|
│ │ │ use when editing or restructuring a skill directory (moving │ │
|
||||||
|
│ │ │ files to references/ or scripts/, removing stale content, │ │
|
||||||
|
│ │ │ validating against the AgentSkills spec). Triggers on phrases │ │
|
||||||
|
│ │ │ like "create a skill", "author a skill", "tidy up a skill", │ │
|
||||||
|
│ │ │ "improve this skill", "review the skill", "clean up the skill", │ │
|
||||||
|
│ │ │ "audit the skill". │ │
|
||||||
|
│ ✗ missing │ 💬 slack │ Use when you need to control Slack from OpenClaw via the slack │ openclaw-bundled │
|
||||||
|
│ │ │ tool, including reacting to messages or pinning/unpinning items │ │
|
||||||
|
│ │ │ in Slack channels or DMs. │ │
|
||||||
|
│ ✗ missing │ 🌊 songsee │ Generate spectrograms and feature-panel visualizations from │ openclaw-bundled │
|
||||||
|
│ │ │ audio with the songsee CLI. │ │
|
||||||
|
│ ✗ missing │ 🔊 sonoscli │ Control Sonos speakers (discover/status/play/volume/group). │ openclaw-bundled │
|
||||||
|
│ ✗ missing │ 🎵 spotify-player │ Terminal Spotify playback/search via spogo (preferred) or │ openclaw-bundled │
|
||||||
|
│ │ │ spotify_player. │ │
|
||||||
|
│ ✗ missing │ 🧾 summarize │ Summarize or extract text/transcripts from URLs, podcasts, and │ openclaw-bundled │
|
||||||
|
│ │ │ local files (great fallback for “transcribe this YouTube/video”). │ │
|
||||||
|
│ ✓ ready │ ✅ things-mac │ Manage Things 3 via the `things` CLI on macOS (add/update │ openclaw-bundled │
|
||||||
|
│ │ │ projects+todos via URL scheme; read/search/list from the local │ │
|
||||||
|
│ │ │ Things database). Use when a user asks OpenClaw to add a task to │ │
|
||||||
|
│ │ │ Things, list inbox/today/upcoming, search tasks, or inspect │ │
|
||||||
|
│ │ │ projects/areas/tags. │ │
|
||||||
|
│ ✓ ready │ 🧵 tmux │ Remote-control tmux sessions for interactive CLIs by sending │ openclaw-bundled │
|
||||||
|
│ │ │ keystrokes and scraping pane output. │ │
|
||||||
|
│ ✗ missing │ 📋 trello │ Manage Trello boards, lists, and cards via the Trello REST API. │ openclaw-bundled │
|
||||||
|
│ ✓ ready │ 🎞️ video-frames │ Extract frames or short clips from videos using ffmpeg. │ openclaw-bundled │
|
||||||
|
│ ✗ missing │ 📞 voice-call │ Start voice calls via the OpenClaw voice-call plugin. │ openclaw-bundled │
|
||||||
|
│ ✗ missing │ 📱 wacli │ Send WhatsApp messages to other people or search/sync WhatsApp │ openclaw-bundled │
|
||||||
|
│ │ │ history via the wacli CLI (not for normal user chats). │ │
|
||||||
|
│ ✓ ready │ 🌤️ weather │ Get current weather and forecasts via wttr.in or Open-Meteo. Use │ openclaw-bundled │
|
||||||
|
│ │ │ when: user asks about weather, temperature, or forecasts for any │ │
|
||||||
|
│ │ │ location. NOT for: historical weather data, severe weather │ │
|
||||||
|
│ │ │ alerts, or detailed meteorological analysis. No API key needed. │ │
|
||||||
|
│ ✗ missing │ 𝕏 xurl │ A CLI tool for making authenticated requests to the X (Twitter) │ openclaw-bundled │
|
||||||
|
│ │ │ API. Use this skill when you need to post tweets, reply, quote, │ │
|
||||||
|
│ │ │ search, read posts, manage followers, send DMs, upload media, or │ │
|
||||||
|
│ │ │ interact with any X API v2 endpoint. │ │
|
||||||
|
└───────────┴──────────────────┴───────────────────────────────────────────────────────────────────┴──────────────────┘
|
||||||
|
|
||||||
|
Tip: use `npx clawhub` to search, install, and sync skills.
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
---
|
||||||
|
name: ollama-vision
|
||||||
|
description: Automated Vision pipeline using Peekaboo for capture and Ollama (llama3.2-vision) for analysis.
|
||||||
|
homepage: https://ollama.com
|
||||||
|
metadata: { "openclaw": { "emoji": "👁️", "requires": { "bins": ["peekaboo", "ollama"] } } }
|
||||||
|
---
|
||||||
|
|
||||||
|
# Ollama Vision
|
||||||
|
|
||||||
|
Bridge macOS screen capture directly to local vision models.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# General screen description
|
||||||
|
./scripts/vision-bridge.sh "What's on my screen?"
|
||||||
|
|
||||||
|
# Focus on a specific app
|
||||||
|
./scripts/vision-bridge.sh "Describe this window" "Slack"
|
||||||
|
|
||||||
|
# Higher detail (retina)
|
||||||
|
./scripts/vision-bridge.sh "Read the text in this terminal" "iTerm2" true
|
||||||
|
```
|
||||||
|
|
||||||
|
## Tools
|
||||||
|
|
||||||
|
### vision.see
|
||||||
|
Capture the screen or a specific app and describe what is visible using Ollama Llama 3.2 Vision.
|
||||||
|
|
||||||
|
**Run configuration:**
|
||||||
|
- `command`: `/Users/MWsatwareAG/internal/mw-macbook-pro/scripts/vision-bridge.sh`
|
||||||
|
- `args`: ["{{prompt}}", "{{app}}", "{{retina}}"]
|
||||||
|
|
||||||
|
**Arguments:**
|
||||||
|
- `prompt`: (string) What to look for or ask about the image.
|
||||||
|
- `app`: (optional string) Name or bundle ID of the app to focus on.
|
||||||
|
- `retina`: (optional boolean, default true) Capture at high resolution.
|
||||||
Reference in New Issue
Block a user