{"id":50388929,"url":"https://github.com/Ryadel/ClawTalk","last_synced_at":"2026-06-16T08:00:50.516Z","repository":{"id":335961063,"uuid":"1147618098","full_name":"Ryadel/ClawTalk","owner":"Ryadel","description":"Chrome side panel extension (MV3) that connects to an OpenClaw Gateway and lets you talk or type to an assistant in a selected session. It supports hands-free/push-to-talk voice flow and optional TTS playback (SpeechSynthesis or ElevenLabs).","archived":false,"fork":false,"pushed_at":"2026-02-04T03:20:36.000Z","size":729,"stargazers_count":3,"open_issues_count":4,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-29T22:48:16.068Z","etag":null,"topics":["ai-assistant","automation","browser-extension","browser-relay","chat","chrome-extension","companion-extension","integration","messaging","openclaw","productivity","react","speech-to-text","text-to-speech","typescript","webapp","webchat","websocket"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ryadel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-02T02:10:59.000Z","updated_at":"2026-02-24T11:55:19.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Ryadel/ClawTalk","commit_stats":null,"previous_names":["ryadel/clawtalk"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/Ryadel/ClawTalk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ryadel%2FClawTalk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ryadel%2FClawTalk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ryadel%2FClawTalk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ryadel%2FClawTalk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ryadel","download_url":"https://codeload.github.com/Ryadel/ClawTalk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ryadel%2FClawTalk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34396429,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-16T02:00:06.860Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-assistant","automation","browser-extension","browser-relay","chat","chrome-extension","companion-extension","integration","messaging","openclaw","productivity","react","speech-to-text","text-to-speech","typescript","webapp","webchat","websocket"],"created_at":"2026-05-30T17:00:24.151Z","updated_at":"2026-06-16T08:00:50.507Z","avatar_url":"https://github.com/Ryadel.png","language":"JavaScript","funding_links":[],"categories":["Clients \u0026 GUIs"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"icons/icon-256.png\" alt=\"ClawTalk logo\"\u003e\n\u003c/p\u003e\n\n# ClawTalk (Chrome Extension)\n\nA small Chrome side panel that turns **OpenClaw Gateway** into a lightweight “talk to my assistant” experience.\n\nThe idea is simple: keep a panel open, press **Talk**, speak naturally, and get the assistant’s reply back—optionally spoken aloud. It’s meant to feel closer to a walkie‑talkie / hands‑free voice loop than a traditional chat tab.\n\n## Why this exists\n\nI wanted something that:\n\n- lives **inside the browser** (no extra desktop app)\n- works with an existing OpenClaw deployment (local or remote)\n- doesn’t require keeping a heavy UI open\n- is resilient (no reconnect storms, bounded memory, minimal protocol params)\n\nIn practice it’s a “voice remote control” for an OpenClaw session: you can reuse the context you already have in your webchat / Control UI by pointing the extension at the same session key.\n\n## What it does\n\n- Connects to an OpenClaw Gateway over WebSocket.\n- Sends your utterances via `chat.send` to a chosen `sessionKey`.\n- Streams assistant replies into the **CHAT** panel.\n- (Optional) Speaks assistant replies using TTS.\n\n## Features\n\n- **Side panel UI** (MV3) with Connect / Talk controls, status (“Idle”, “Listening”, “Thinking”, “Speaking”).\n- **Text chat input** under CHAT (type + Enter/Send).\n- **Speech loop**:\n  - VAD-based hands‑free mode\n  - push‑to‑talk mode (hold Talk to speak)\n- **TTS providers**:\n  - Default: browser `SpeechSynthesis`\n  - Optional: **ElevenLabs** (selectable in Settings)\n- **Safety/robustness**:\n  - minimal, schema‑compliant gateway connect params\n  - circuit breaker for policy violations (prevents infinite reconnect loops)\n  - bounded in‑memory buffers to avoid Chrome performance degradation\n- **Debug controls** (fine-grained) to keep logs useful without spamming.\n\n## Installation\nAt the moment, ClawTalk is not yet available on the **Chrome Web Store**, so it can only be installed in _Developer Mode_ as follows:\n\n1. Download the latest release (ZIP) from the [official GitHub repository](https://github.com/Ryadel/ClawTalk).\n2. Open Chrome → `chrome://extensions`\n3. Enable **Developer mode**\n4. Click **Load unpacked**\n5. Select the repository folder (`ClawTalk/`)\n\nThen open the side panel:\n- click the extension icon → open **Side panel** (or from the Extensions menu)\n\nFor additional settings (custom headers, Cloudflare ZeroTrust, ElevenLabs API, and more) check out [this page](https://www.ryadel.com/en/clawtalk-talk-to-your-assistant-chrome-extension-openclaw/).\n\n## Configuration\n\nOpen **Settings** from the side panel.\n\n### Gateway\n\n- **Gateway URL**\n  - default: `ws://127.0.0.1:18789`\n- **Gateway Token (or Device Token)**\n  - stored in `chrome.storage.local`\n  - not printed in logs\n- **Gateway Headers (optional)**\n  - useful for upstream auth (e.g. Cloudflare Access)\n\n### Session\n\n- **Session key**\n  - default: `main`\n  - use the same key you use in OpenClaw webchat/Control UI if you want shared context\n\n### Speech\n\n- **Language (STT default)**\n  - used as the default language hint\n\n### Text-to-speech\n\n- **Provider**\n  - `Default (SpeechSynthesis)` → no external requests\n  - `ElevenLabs` → requires API key + Voice ID\n\nThere’s also a **Test speech** button in Settings to validate TTS without starting the Talk loop.\n\n## How to use\n\n1. Press **Connect**\n2. Press **Talk**\n3. Speak, then pause\n4. The transcript is sent to the gateway (`chat.send`)\n5. The assistant reply appears in CHAT\n6. If **Speaking** is enabled, the reply is spoken\n\nTip: if you disable **Speaking** while audio is playing, playback should stop immediately.\n\n## Permissions (what/why)\n\n- `microphone` — capture speech for the Talk loop\n- `storage` — persist settings\n- `offscreen` — background audio capture/playback\n- `sidePanel` — host the UI in the side panel\n- `declarativeNetRequest` — apply configured headers to gateway requests\n- `notifications` (optional) — reserved for future user-visible errors\n\nHost permissions:\n- default: `ws://127.0.0.1:18789/*`\n- ElevenLabs: `https://api.elevenlabs.io/*`\n\nRemote gateways:\n- the origin of **Gateway URL** is always included automatically\n- add any extra origins to **Settings → Additional Gateway permissions**\n- Chrome will prompt you to grant the requested origins\n\n## Project layout\n\n```\nmanifest.json\nservice_worker.js          # background + gateway client + state machine\nsidepanel.html/.js/.css    # UI\noptions.html/.js           # settings\noffscreen.html/.js         # audio playback + TTS engine\nicons/                     # extension icons\nshared/\n  gateway_client.js\n  state.js\n  stt.js\n  tts.js\n  vad.js\n```\n\n## Notes / limitations\n\n- This repo focuses on a practical “voice loop” UX, not on being a full chat client.\n- TTS quality depends on the selected provider and your system voices.\n- ElevenLabs usage depends on your plan/voice type (some voices require a paid plan).\n\n## Contributing\n\nIssues and PRs are welcome. If you change behavior or UI, please include a short note in the PR describing how to test it.\n\n## References\n\n - [OpenClaw official website](https://www.ryadel.com/en/clawtalk-talk-to-your-assistant-chrome-extension-openclaw/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRyadel%2FClawTalk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FRyadel%2FClawTalk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRyadel%2FClawTalk/lists"}