This commit is contained in:
Thanh Nguyen 2026-01-30 15:57:21 +00:00 committed by GitHub
commit 9c5bf57e37
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
15 changed files with 69 additions and 49 deletions

View File

@ -1,8 +1,8 @@
--- ---
description: Update Clawdbot from upstream when branch has diverged (ahead/behind) description: Update OpenClaw from upstream when branch has diverged (ahead/behind)
--- ---
# Clawdbot Upstream Sync Workflow # OpenClaw Upstream Sync Workflow
Use this workflow when your fork has diverged from upstream (e.g., "18 commits ahead, 29 commits behind"). Use this workflow when your fork has diverged from upstream (e.g., "18 commits ahead, 29 commits behind").
@ -110,7 +110,7 @@ pnpm build
pnpm ui:build pnpm ui:build
# Run diagnostics # Run diagnostics
pnpm clawdbot doctor pnpm openclaw doctor
``` ```
--- ---
@ -129,16 +129,16 @@ pnpm mac:package
```bash ```bash
# Kill running app # Kill running app
pkill -x "Clawdbot" || true pkill -x "OpenClaw" || true
# Move old version # Move old version
mv /Applications/Clawdbot.app /tmp/Clawdbot-backup.app mv /Applications/OpenClaw.app /tmp/OpenClaw-backup.app
# Install new build # Install new build
cp -R dist/Clawdbot.app /Applications/ cp -R dist/OpenClaw.app /Applications/
# Launch # Launch
open /Applications/Clawdbot.app open /Applications/OpenClaw.app
``` ```
--- ---
@ -149,13 +149,13 @@ After rebuilding the macOS app, always verify it works correctly:
```bash ```bash
# Check gateway health # Check gateway health
pnpm clawdbot health pnpm openclaw health
# Verify no zombie processes # Verify no zombie processes
ps aux | grep -E "(clawdbot|gateway)" | grep -v grep ps aux | grep -E "(openclaw|gateway)" | grep -v grep
# Test agent functionality by sending a verification message # Test agent functionality by sending a verification message
pnpm clawdbot agent --message "Verification: macOS app rebuild successful - agent is responding." --session-id YOUR_TELEGRAM_SESSION_ID pnpm openclaw agent --message "Verification: macOS app rebuild successful - agent is responding." --session-id YOUR_TELEGRAM_SESSION_ID
# Confirm the message was received on Telegram # Confirm the message was received on Telegram
# (Check your Telegram chat with the bot) # (Check your Telegram chat with the bot)
@ -225,7 +225,7 @@ If upstream introduced new model configurations:
# Check for OpenRouter API key requirements # Check for OpenRouter API key requirements
grep -r "openrouter\|OPENROUTER" src/ --include="*.ts" --include="*.js" grep -r "openrouter\|OPENROUTER" src/ --include="*.ts" --include="*.js"
# Update clawdbot.json with fallback chains # Update openclaw.json with fallback chains
# Add model fallback configurations as needed # Add model fallback configurations as needed
``` ```
@ -235,7 +235,7 @@ grep -r "openrouter\|OPENROUTER" src/ --include="*.ts" --include="*.js"
```bash ```bash
# Verify everything works # Verify everything works
pnpm clawdbot health pnpm openclaw health
pnpm test pnpm test
# Push (force required after rebase) # Push (force required after rebase)
@ -342,13 +342,13 @@ pnpm build
pnpm ui:build pnpm ui:build
echo "==> Running doctor..." echo "==> Running doctor..."
pnpm clawdbot doctor pnpm openclaw doctor
echo "==> Rebuilding macOS app..." echo "==> Rebuilding macOS app..."
./scripts/restart-mac.sh ./scripts/restart-mac.sh
echo "==> Verifying gateway health..." echo "==> Verifying gateway health..."
pnpm clawdbot health pnpm openclaw health
echo "==> Checking for Swift 6.2 compatibility issues..." echo "==> Checking for Swift 6.2 compatibility issues..."
if grep -r "FileManager\.default\|Thread\.isMainThread" src/ apps/ --include="*.swift" --quiet; then if grep -r "FileManager\.default\|Thread\.isMainThread" src/ apps/ --include="*.swift" --quiet; then
@ -360,7 +360,7 @@ fi
echo "==> Testing agent functionality..." echo "==> Testing agent functionality..."
# Note: Update YOUR_TELEGRAM_SESSION_ID with actual session ID # Note: Update YOUR_TELEGRAM_SESSION_ID with actual session ID
pnpm clawdbot agent --message "Verification: Upstream sync and macOS rebuild completed successfully." --session-id YOUR_TELEGRAM_SESSION_ID || echo "Warning: Agent test failed - check Telegram for verification message" pnpm openclaw agent --message "Verification: Upstream sync and macOS rebuild completed successfully." --session-id YOUR_TELEGRAM_SESSION_ID || echo "Warning: Agent test failed - check Telegram for verification message"
echo "==> Done! Check Telegram for verification message, then run 'git push --force-with-lease' when ready." echo "==> Done! Check Telegram for verification message, then run 'git push --force-with-lease' when ready."
``` ```

View File

@ -1,6 +1,6 @@
--- ---
name: Bug report name: Bug report
about: Report a problem or unexpected behavior in Clawdbot. about: Report a problem or unexpected behavior in OpenClaw.
title: "[Bug]: " title: "[Bug]: "
labels: bug labels: bug
--- ---
@ -20,7 +20,7 @@ What did you expect to happen?
What actually happened? What actually happened?
## Environment ## Environment
- Clawdbot version: - OpenClaw version:
- OS: - OS:
- Install method (pnpm/npx/docker/etc): - Install method (pnpm/npx/docker/etc):

View File

@ -2,7 +2,7 @@ blank_issues_enabled: true
contact_links: contact_links:
- name: Onboarding - name: Onboarding
url: https://discord.gg/clawd url: https://discord.gg/clawd
about: New to Clawdbot? Join Discord for setup guidance from Krill in #help. about: New to OpenClaw? Join Discord for setup guidance from Krill in #help.
- name: Support - name: Support
url: https://discord.gg/clawd url: https://discord.gg/clawd
about: Get help from Krill and the community on Discord in #help. about: Get help from Krill and the community on Discord in #help.

View File

@ -1,6 +1,6 @@
--- ---
name: Feature request name: Feature request
about: Suggest an idea or improvement for Clawdbot. about: Suggest an idea or improvement for OpenClaw.
title: "[Feature]: " title: "[Feature]: "
labels: enhancement labels: enhancement
--- ---
@ -9,7 +9,7 @@ labels: enhancement
Describe the problem you are trying to solve or the opportunity you see. Describe the problem you are trying to solve or the opportunity you see.
## Proposed solution ## Proposed solution
What would you like Clawdbot to do? What would you like OpenClaw to do?
## Alternatives considered ## Alternatives considered
Any other approaches you have considered? Any other approaches you have considered?

View File

@ -16,6 +16,10 @@ jobs:
- name: Checkout submodules (retry) - name: Checkout submodules (retry)
run: | run: |
set -euo pipefail set -euo pipefail
if [ ! -f .gitmodules ]; then
echo "No .gitmodules found; skipping submodule update."
exit 0
fi
git submodule sync --recursive git submodule sync --recursive
for attempt in 1 2 3 4 5; do for attempt in 1 2 3 4 5; do
if git -c protocol.version=2 submodule update --init --force --depth=1 --recursive; then if git -c protocol.version=2 submodule update --init --force --depth=1 --recursive; then
@ -101,6 +105,10 @@ jobs:
- name: Checkout submodules (retry) - name: Checkout submodules (retry)
run: | run: |
set -euo pipefail set -euo pipefail
if [ ! -f .gitmodules ]; then
echo "No .gitmodules found; skipping submodule update."
exit 0
fi
git submodule sync --recursive git submodule sync --recursive
for attempt in 1 2 3 4 5; do for attempt in 1 2 3 4 5; do
if git -c protocol.version=2 submodule update --init --force --depth=1 --recursive; then if git -c protocol.version=2 submodule update --init --force --depth=1 --recursive; then
@ -217,6 +225,10 @@ jobs:
- name: Checkout submodules (retry) - name: Checkout submodules (retry)
run: | run: |
set -euo pipefail set -euo pipefail
if [ ! -f .gitmodules ]; then
echo "No .gitmodules found; skipping submodule update."
exit 0
fi
git submodule sync --recursive git submodule sync --recursive
for attempt in 1 2 3 4 5; do for attempt in 1 2 3 4 5; do
if git -c protocol.version=2 submodule update --init --force --depth=1 --recursive; then if git -c protocol.version=2 submodule update --init --force --depth=1 --recursive; then
@ -293,6 +305,10 @@ jobs:
- name: Checkout submodules (retry) - name: Checkout submodules (retry)
run: | run: |
set -euo pipefail set -euo pipefail
if [ ! -f .gitmodules ]; then
echo "No .gitmodules found; skipping submodule update."
exit 0
fi
git submodule sync --recursive git submodule sync --recursive
for attempt in 1 2 3 4 5; do for attempt in 1 2 3 4 5; do
if git -c protocol.version=2 submodule update --init --force --depth=1 --recursive; then if git -c protocol.version=2 submodule update --init --force --depth=1 --recursive; then
@ -389,6 +405,10 @@ jobs:
- name: Checkout submodules (retry) - name: Checkout submodules (retry)
run: | run: |
set -euo pipefail set -euo pipefail
if [ ! -f .gitmodules ]; then
echo "No .gitmodules found; skipping submodule update."
exit 0
fi
git submodule sync --recursive git submodule sync --recursive
for attempt in 1 2 3 4 5; do for attempt in 1 2 3 4 5; do
if git -c protocol.version=2 submodule update --init --force --depth=1 --recursive; then if git -c protocol.version=2 submodule update --init --force --depth=1 --recursive; then

10
.gitignore vendored
View File

@ -19,21 +19,21 @@ ui/test-results/
# Bun build artifacts # Bun build artifacts
*.bun-build *.bun-build
apps/macos/.build/ apps/macos/.build/
apps/shared/MoltbotKit/.build/ apps/shared/OpenClawKit/.build/
**/ModuleCache/ **/ModuleCache/
bin/ bin/
bin/clawdbot-mac bin/openclaw-mac
bin/docs-list bin/docs-list
apps/macos/.build-local/ apps/macos/.build-local/
apps/macos/.swiftpm/ apps/macos/.swiftpm/
apps/shared/MoltbotKit/.swiftpm/ apps/shared/OpenClawKit/.swiftpm/
Core/ Core/
apps/ios/*.xcodeproj/ apps/ios/*.xcodeproj/
apps/ios/*.xcworkspace/ apps/ios/*.xcworkspace/
apps/ios/.swiftpm/ apps/ios/.swiftpm/
vendor/ vendor/
apps/ios/Clawdbot.xcodeproj/ apps/ios/OpenClaw.xcodeproj/
apps/ios/Clawdbot.xcodeproj/** apps/ios/OpenClaw.xcodeproj/**
apps/macos/.build/** apps/macos/.build/**
**/*.bun-build **/*.bun-build
apps/ios/*.xcfilelist apps/ios/*.xcfilelist

View File

@ -1,4 +1,4 @@
# Pre-commit hooks for clawdbot # Pre-commit hooks for openclaw
# Install: prek install # Install: prek install
# Run manually: prek run --all-files # Run manually: prek run --all-files
# #

View File

@ -7,7 +7,7 @@
- Tests: colocated `*.test.ts`. - Tests: colocated `*.test.ts`.
- Docs: `docs/` (images, queue, Pi config). Built output lives in `dist/`. - Docs: `docs/` (images, queue, Pi config). Built output lives in `dist/`.
- Plugins/extensions: live under `extensions/*` (workspace packages). Keep plugin-only deps in the extension `package.json`; do not add them to the root `package.json` unless core uses them. - Plugins/extensions: live under `extensions/*` (workspace packages). Keep plugin-only deps in the extension `package.json`; do not add them to the root `package.json` unless core uses them.
- Plugins: install runs `npm install --omit=dev` in plugin dir; runtime deps must live in `dependencies`. Avoid `workspace:*` in `dependencies` (npm install breaks); put `openclaw` in `devDependencies` or `peerDependencies` instead (runtime resolves `clawdbot/plugin-sdk` via jiti alias). - Plugins: install runs `npm install --omit=dev` in plugin dir; runtime deps must live in `dependencies`. Avoid `workspace:*` in `dependencies` (npm install breaks); put `openclaw` in `devDependencies` or `peerDependencies` instead (runtime resolves `openclaw/plugin-sdk` via jiti alias).
- Installers served from `https://openclaw.ai/*`: live in the sibling repo `../openclaw.ai` (`public/install.sh`, `public/install-cli.sh`, `public/install.ps1`). - Installers served from `https://openclaw.ai/*`: live in the sibling repo `../openclaw.ai` (`public/install.sh`, `public/install-cli.sh`, `public/install.ps1`).
- Messaging channels: always consider **all** built-in + extension channels when refactoring shared logic (routing, allowlists, pairing, command gating, onboarding, docs). - Messaging channels: always consider **all** built-in + extension channels when refactoring shared logic (routing, allowlists, pairing, command gating, onboarding, docs).
- Core channel docs: `docs/channels/` - Core channel docs: `docs/channels/`
@ -97,8 +97,8 @@
- **Landing mode:** create an integration branch from `main`, bring in PR commits (**prefer rebase** for linear history; **merge allowed** when complexity/conflicts make it safer), apply fixes, add changelog (+ thanks + PR #), run full gate **locally before committing** (`pnpm lint && pnpm build && pnpm test`), commit, merge back to `main`, then `git switch main` (never stay on a topic branch after landing). Important: contributor needs to be in git graph after this! - **Landing mode:** create an integration branch from `main`, bring in PR commits (**prefer rebase** for linear history; **merge allowed** when complexity/conflicts make it safer), apply fixes, add changelog (+ thanks + PR #), run full gate **locally before committing** (`pnpm lint && pnpm build && pnpm test`), commit, merge back to `main`, then `git switch main` (never stay on a topic branch after landing). Important: contributor needs to be in git graph after this!
## Security & Configuration Tips ## Security & Configuration Tips
- Web provider stores creds at `~/.clawdbot/credentials/`; rerun `openclaw login` if logged out. - Web provider stores creds at `~/.openclaw/credentials/`; rerun `openclaw login` if logged out.
- Pi sessions live under `~/.clawdbot/sessions/` by default; the base directory is not configurable. - Pi sessions live under `~/.openclaw/sessions/` by default; the base directory is not configurable.
- Environment variables: see `~/.profile`. - Environment variables: see `~/.profile`.
- Never commit or publish real phone numbers, videos, or live configuration values. Use obviously fake placeholders in docs, tests, and examples. - Never commit or publish real phone numbers, videos, or live configuration values. Use obviously fake placeholders in docs, tests, and examples.
- Release flow: always read `docs/reference/RELEASING.md` and `docs/platforms/mac/release.md` before any release work; do not ask routine questions once those docs answer them. - Release flow: always read `docs/reference/RELEASING.md` and `docs/platforms/mac/release.md` before any release work; do not ask routine questions once those docs answer them.
@ -145,7 +145,7 @@
- Code style: add brief comments for tricky logic; keep files under ~500 LOC when feasible (split/refactor as needed). - Code style: add brief comments for tricky logic; keep files under ~500 LOC when feasible (split/refactor as needed).
- Tool schema guardrails (google-antigravity): avoid `Type.Union` in tool input schemas; no `anyOf`/`oneOf`/`allOf`. Use `stringEnum`/`optionalStringEnum` (Type.Unsafe enum) for string lists, and `Type.Optional(...)` instead of `... | null`. Keep top-level tool schema as `type: "object"` with `properties`. - Tool schema guardrails (google-antigravity): avoid `Type.Union` in tool input schemas; no `anyOf`/`oneOf`/`allOf`. Use `stringEnum`/`optionalStringEnum` (Type.Unsafe enum) for string lists, and `Type.Optional(...)` instead of `... | null`. Keep top-level tool schema as `type: "object"` with `properties`.
- Tool schema guardrails: avoid raw `format` property names in tool schemas; some validators treat `format` as a reserved keyword and reject the schema. - Tool schema guardrails: avoid raw `format` property names in tool schemas; some validators treat `format` as a reserved keyword and reject the schema.
- When asked to open a “session” file, open the Pi session logs under `~/.clawdbot/agents/<agentId>/sessions/*.jsonl` (use the `agent=<id>` value in the Runtime line of the system prompt; newest unless a specific ID is given), not the default `sessions.json`. If logs are needed from another machine, SSH via Tailscale and read the same path there. - When asked to open a “session” file, open the Pi session logs under `~/.openclaw/agents/<agentId>/sessions/*.jsonl` (use the `agent=<id>` value in the Runtime line of the system prompt; newest unless a specific ID is given), not the default `sessions.json`. If logs are needed from another machine, SSH via Tailscale and read the same path there.
- Do not rebuild the macOS app over SSH; rebuilds must be run directly on the Mac. - Do not rebuild the macOS app over SSH; rebuilds must be run directly on the Mac.
- Never send streaming/partial replies to external messaging surfaces (WhatsApp, Telegram); only final replies should be delivered there. Streaming/tool events may still go to internal UIs/control channel. - Never send streaming/partial replies to external messaging surfaces (WhatsApp, Telegram); only final replies should be delivered there. Streaming/tool events may still go to internal UIs/control channel.
- Voice wake forwarding tips: - Voice wake forwarding tips:

View File

@ -28,7 +28,7 @@ Use this skill when working on the BlueBubbles channel plugin.
- BlueBubbles posts JSON to the gateway HTTP server. - BlueBubbles posts JSON to the gateway HTTP server.
- Normalize sender/chat IDs defensively (payloads vary by version). - Normalize sender/chat IDs defensively (payloads vary by version).
- Skip messages marked as from self. - Skip messages marked as from self.
- Route into core reply pipeline via the plugin runtime (`api.runtime`) and `clawdbot/plugin-sdk` helpers. - Route into core reply pipeline via the plugin runtime (`api.runtime`) and `openclaw/plugin-sdk` helpers.
- For attachments/stickers, use `<media:...>` placeholders when text is empty and attach media paths via `MediaUrl(s)` in the inbound context. - For attachments/stickers, use `<media:...>` placeholders when text is empty and attach media paths via `MediaUrl(s)` in the inbound context.
## Config (core) ## Config (core)

View File

@ -55,7 +55,7 @@ This is why localhost URLs don't work - the node receives the Tailscale hostname
## Configuration ## Configuration
In `~/.clawdbot/openclaw.json`: In `~/.openclaw/openclaw.json`:
```json ```json
{ {
@ -102,7 +102,7 @@ HTML
Check how your gateway is bound: Check how your gateway is bound:
```bash ```bash
cat ~/.clawdbot/openclaw.json | jq '.gateway.bind' cat ~/.openclaw/openclaw.json | jq '.gateway.bind'
``` ```
Then construct the URL: Then construct the URL:
@ -148,7 +148,7 @@ canvas action:hide node:<node-id>
**Cause:** URL mismatch between server bind and node expectation. **Cause:** URL mismatch between server bind and node expectation.
**Debug steps:** **Debug steps:**
1. Check server bind: `cat ~/.clawdbot/openclaw.json | jq '.gateway.bind'` 1. Check server bind: `cat ~/.openclaw/openclaw.json | jq '.gateway.bind'`
2. Check what port canvas is on: `lsof -i :18793` 2. Check what port canvas is on: `lsof -i :18793`
3. Test URL directly: `curl http://<hostname>:18793/__moltbot__/canvas/<file>.html` 3. Test URL directly: `curl http://<hostname>:18793/__moltbot__/canvas/<file>.html`

View File

@ -26,7 +26,7 @@ uv run {baseDir}/scripts/generate_image.py --prompt "combine these into one scen
API key API key
- `GEMINI_API_KEY` env var - `GEMINI_API_KEY` env var
- Or set `skills."nano-banana-pro".apiKey` / `skills."nano-banana-pro".env.GEMINI_API_KEY` in `~/.clawdbot/openclaw.json` - Or set `skills."nano-banana-pro".apiKey` / `skills."nano-banana-pro".env.GEMINI_API_KEY` in `~/.openclaw/openclaw.json`
Notes Notes
- Resolutions: `1K` (default), `2K`, `4K`. - Resolutions: `1K` (default), `2K`, `4K`.

View File

@ -30,7 +30,7 @@ Defaults:
## API key ## API key
Set `OPENAI_API_KEY`, or configure it in `~/.clawdbot/openclaw.json`: Set `OPENAI_API_KEY`, or configure it in `~/.openclaw/openclaw.json`:
```json5 ```json5
{ {

View File

@ -14,7 +14,7 @@ Use this skill when the user asks about prior chats, parent conversations, or hi
## Location ## Location
Session logs live at: `~/.clawdbot/agents/<agentId>/sessions/` (use the `agent=<id>` value from the system prompt Runtime line). Session logs live at: `~/.openclaw/agents/<agentId>/sessions/` (use the `agent=<id>` value from the system prompt Runtime line).
- **`sessions.json`** - Index mapping session keys to session IDs - **`sessions.json`** - Index mapping session keys to session IDs
- **`<session-id>.jsonl`** - Full conversation transcript per session - **`<session-id>.jsonl`** - Full conversation transcript per session
@ -32,7 +32,7 @@ Each `.jsonl` file contains messages with:
### List all sessions by date and size ### List all sessions by date and size
```bash ```bash
for f in ~/.clawdbot/agents/<agentId>/sessions/*.jsonl; do for f in ~/.openclaw/agents/<agentId>/sessions/*.jsonl; do
date=$(head -1 "$f" | jq -r '.timestamp' | cut -dT -f1) date=$(head -1 "$f" | jq -r '.timestamp' | cut -dT -f1)
size=$(ls -lh "$f" | awk '{print $5}') size=$(ls -lh "$f" | awk '{print $5}')
echo "$date $size $(basename $f)" echo "$date $size $(basename $f)"
@ -41,7 +41,7 @@ done | sort -r
### Find sessions from a specific day ### Find sessions from a specific day
```bash ```bash
for f in ~/.clawdbot/agents/<agentId>/sessions/*.jsonl; do for f in ~/.openclaw/agents/<agentId>/sessions/*.jsonl; do
head -1 "$f" | jq -r '.timestamp' | grep -q "2026-01-06" && echo "$f" head -1 "$f" | jq -r '.timestamp' | grep -q "2026-01-06" && echo "$f"
done done
``` ```
@ -63,7 +63,7 @@ jq -s '[.[] | .message.usage.cost.total // 0] | add' <session>.jsonl
### Daily cost summary ### Daily cost summary
```bash ```bash
for f in ~/.clawdbot/agents/<agentId>/sessions/*.jsonl; do for f in ~/.openclaw/agents/<agentId>/sessions/*.jsonl; do
date=$(head -1 "$f" | jq -r '.timestamp' | cut -dT -f1) date=$(head -1 "$f" | jq -r '.timestamp' | cut -dT -f1)
cost=$(jq -s '[.[] | .message.usage.cost.total // 0] | add' "$f") cost=$(jq -s '[.[] | .message.usage.cost.total // 0] | add' "$f")
echo "$date $cost" echo "$date $cost"
@ -88,7 +88,7 @@ jq -r '.message.content[]? | select(.type == "toolCall") | .name' <session>.json
### Search across ALL sessions for a phrase ### Search across ALL sessions for a phrase
```bash ```bash
rg -l "phrase" ~/.clawdbot/agents/<agentId>/sessions/*.jsonl rg -l "phrase" ~/.openclaw/agents/<agentId>/sessions/*.jsonl
``` ```
## Tips ## Tips
@ -101,5 +101,5 @@ rg -l "phrase" ~/.clawdbot/agents/<agentId>/sessions/*.jsonl
## Fast text-only hint (low noise) ## Fast text-only hint (low noise)
```bash ```bash
jq -r 'select(.type=="message") | .message.content[]? | select(.type=="text") | .text' ~/.clawdbot/agents/<agentId>/sessions/<id>.jsonl | rg 'keyword' jq -r 'select(.type=="message") | .message.content[]? | select(.type=="text") | .text' ~/.openclaw/agents/<agentId>/sessions/<id>.jsonl | rg 'keyword'
``` ```

View File

@ -1,7 +1,7 @@
--- ---
name: sherpa-onnx-tts name: sherpa-onnx-tts
description: Local text-to-speech via sherpa-onnx (offline, no cloud) description: Local text-to-speech via sherpa-onnx (offline, no cloud)
metadata: {"openclaw":{"emoji":"🗣️","os":["darwin","linux","win32"],"requires":{"env":["SHERPA_ONNX_RUNTIME_DIR","SHERPA_ONNX_MODEL_DIR"]},"install":[{"id":"download-runtime-macos","kind":"download","os":["darwin"],"url":"https://github.com/k2-fsa/sherpa-onnx/releases/download/v1.12.23/sherpa-onnx-v1.12.23-osx-universal2-shared.tar.bz2","archive":"tar.bz2","extract":true,"stripComponents":1,"targetDir":"~/.clawdbot/tools/sherpa-onnx-tts/runtime","label":"Download sherpa-onnx runtime (macOS)"},{"id":"download-runtime-linux-x64","kind":"download","os":["linux"],"url":"https://github.com/k2-fsa/sherpa-onnx/releases/download/v1.12.23/sherpa-onnx-v1.12.23-linux-x64-shared.tar.bz2","archive":"tar.bz2","extract":true,"stripComponents":1,"targetDir":"~/.clawdbot/tools/sherpa-onnx-tts/runtime","label":"Download sherpa-onnx runtime (Linux x64)"},{"id":"download-runtime-win-x64","kind":"download","os":["win32"],"url":"https://github.com/k2-fsa/sherpa-onnx/releases/download/v1.12.23/sherpa-onnx-v1.12.23-win-x64-shared.tar.bz2","archive":"tar.bz2","extract":true,"stripComponents":1,"targetDir":"~/.clawdbot/tools/sherpa-onnx-tts/runtime","label":"Download sherpa-onnx runtime (Windows x64)"},{"id":"download-model-lessac","kind":"download","url":"https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/vits-piper-en_US-lessac-high.tar.bz2","archive":"tar.bz2","extract":true,"targetDir":"~/.clawdbot/tools/sherpa-onnx-tts/models","label":"Download Piper en_US lessac (high)"}]}} metadata: {"openclaw":{"emoji":"🗣️","os":["darwin","linux","win32"],"requires":{"env":["SHERPA_ONNX_RUNTIME_DIR","SHERPA_ONNX_MODEL_DIR"]},"install":[{"id":"download-runtime-macos","kind":"download","os":["darwin"],"url":"https://github.com/k2-fsa/sherpa-onnx/releases/download/v1.12.23/sherpa-onnx-v1.12.23-osx-universal2-shared.tar.bz2","archive":"tar.bz2","extract":true,"stripComponents":1,"targetDir":"~/.openclaw/tools/sherpa-onnx-tts/runtime","label":"Download sherpa-onnx runtime (macOS)"},{"id":"download-runtime-linux-x64","kind":"download","os":["linux"],"url":"https://github.com/k2-fsa/sherpa-onnx/releases/download/v1.12.23/sherpa-onnx-v1.12.23-linux-x64-shared.tar.bz2","archive":"tar.bz2","extract":true,"stripComponents":1,"targetDir":"~/.openclaw/tools/sherpa-onnx-tts/runtime","label":"Download sherpa-onnx runtime (Linux x64)"},{"id":"download-runtime-win-x64","kind":"download","os":["win32"],"url":"https://github.com/k2-fsa/sherpa-onnx/releases/download/v1.12.23/sherpa-onnx-v1.12.23-win-x64-shared.tar.bz2","archive":"tar.bz2","extract":true,"stripComponents":1,"targetDir":"~/.openclaw/tools/sherpa-onnx-tts/runtime","label":"Download sherpa-onnx runtime (Windows x64)"},{"id":"download-model-lessac","kind":"download","url":"https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/vits-piper-en_US-lessac-high.tar.bz2","archive":"tar.bz2","extract":true,"targetDir":"~/.openclaw/tools/sherpa-onnx-tts/models","label":"Download Piper en_US lessac (high)"}]}}
--- ---
# sherpa-onnx-tts # sherpa-onnx-tts
@ -10,10 +10,10 @@ Local TTS using the sherpa-onnx offline CLI.
## Install ## Install
1) Download the runtime for your OS (extracts into `~/.clawdbot/tools/sherpa-onnx-tts/runtime`) 1) Download the runtime for your OS (extracts into `~/.openclaw/tools/sherpa-onnx-tts/runtime`)
2) Download a voice model (extracts into `~/.clawdbot/tools/sherpa-onnx-tts/models`) 2) Download a voice model (extracts into `~/.openclaw/tools/sherpa-onnx-tts/models`)
Update `~/.clawdbot/openclaw.json`: Update `~/.openclaw/openclaw.json`:
```json5 ```json5
{ {
@ -21,8 +21,8 @@ Update `~/.clawdbot/openclaw.json`:
entries: { entries: {
"sherpa-onnx-tts": { "sherpa-onnx-tts": {
env: { env: {
SHERPA_ONNX_RUNTIME_DIR: "~/.clawdbot/tools/sherpa-onnx-tts/runtime", SHERPA_ONNX_RUNTIME_DIR: "~/.openclaw/tools/sherpa-onnx-tts/runtime",
SHERPA_ONNX_MODEL_DIR: "~/.clawdbot/tools/sherpa-onnx-tts/models/vits-piper-en_US-lessac-high" SHERPA_ONNX_MODEL_DIR: "~/.openclaw/tools/sherpa-onnx-tts/models/vits-piper-en_US-lessac-high"
} }
} }
} }

View File

@ -20,7 +20,7 @@ socket_name=""
socket_path="" socket_path=""
query="" query=""
scan_all=false scan_all=false
socket_dir="${CLAWDBOT_TMUX_SOCKET_DIR:-${TMPDIR:-/tmp}/moltbot-tmux-sockets}" socket_dir="${CLAWDBOT_TMUX_SOCKET_DIR:-${TMPDIR:-/tmp}/openclaw-tmux-sockets}"
while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
case "$1" in case "$1" in