Open
Conversation
… MCU + Linux tools Expand the existing UNO Q Bridge peripheral from 2 GPIO tools to 13 tools covering the board's full capability set. ZeroClaw can now run as an edge-native agent directly on the UNO Q's Debian Linux (Cortex-A53). MCU tools (via Bridge socket to STM32U585): - GPIO read/write (D0-D21), ADC read (A0-A5, 12-bit, 3.3V) - PWM write (D3/D5/D6/D9/D10/D11), I2C scan/transfer, SPI transfer - CAN send (stub), LED matrix (8x13), RGB LED (LED3-4) Linux tools (direct MPU access): - Camera capture (MIPI-CSI via GStreamer) - Linux RGB LED (sysfs), System info (temp/mem/disk/wifi) Also includes: - Expanded Arduino sketch with all MCU peripheral handlers - Expanded Python Bridge server with command routing - DeployUnoQ CLI command for edge-native deployment via SSH - Cross-compile script (dev/cross-uno-q.sh) for aarch64 - UNO Q datasheet for RAG pipeline (docs/datasheets/arduino-uno-q.md) - Pin validation with datasheet constraints (PWM pins, ADC channels, etc.) - 19 unit tests covering validation, response parsing, and tool schemas
Three issues discovered during deployment to actual UNO Q hardware:
1. Bridge.call() takes positional args, not a list — changed from
Bridge.call("digitalRead", [pin]) to Bridge.call("digitalRead", pin)
2. Bridge.call() must run on main thread (not thread-safe) — restructured
socket server to use a queue pattern: accept thread enqueues requests,
main App.run() loop drains queue and calls Bridge
3. Docker container networking requires 0.0.0.0 bind (not 127.0.0.1)
4. Wire/SPI are built into Zephyr platform, removed from sketch.yaml
5. Renamed C++ functions to bridge_* prefix to avoid Arduino built-in clashes
6. Changed const char* params to String for MsgPack RPC compatibility
Tested on hannah.local: gpio_read, gpio_write, adc_read, pwm_write,
capabilities all confirmed working.
…l cross-compile config - Camera capture tool now uses v4l2-ctl instead of GStreamer (works with USB cameras like NETUM, not just MIPI-CSI) - Tool output includes [IMAGE:<path>] hint so Telegram channel sends the captured photo directly to the user - Added width/height/device parameters (defaults: 1280x720, /dev/video0) - Added aarch64-unknown-linux-musl linker config to .cargo/config.toml
…camera for USB The daemon's channel server was missing peripheral tools — only the interactive `agent` command loaded them. Now `start_channels()` calls `create_peripheral_tools()` so Telegram/Discord/Slack channels get access to all UNO Q hardware tools. Also updated camera capture tool description to guide the LLM to use [IMAGE:<path>] markers for Telegram photo delivery.
feat(peripherals): Arduino UNO Q edge-native agent with full MCU + Linux peripheral tools
- config.toml with supervised autonomy, SQLite memory, cost tracking - docker-compose.yml with security-hardened container (non-root, capability drops) - Uses zeroclaw-local:latest image (built from source) - Telegram channel with auto-reconnect via allowed_users - CLI channel enabled for gateway webhook access - Model routes: Claude Sonnet 4 (default), Gemma 3n, GPT-OSS 20B, Claude 4.5, Gemini Flash Lite - HTTP requests enabled for n8n webhook integration (workflows.mi1-media.com) - Obsidian vault mounted read-only as knowledge base - Pairing code helper scripts (PowerShell + batch) - .env.example with placeholder API key - README with full setup guide
- Replace hardcoded bot_token with __TELEGRAM_BOT_TOKEN__ placeholder - Init container now injects token via sed from TELEGRAM_BOT_TOKEN env var - Added TELEGRAM_BOT_TOKEN to .env.example with placeholder - Token stays in .env (gitignored), never committed to repo
Feature/deploy marketing agent
- Changed allowed_domains from ['workflows.mi1-media.com'] to ['*'] - Agent can now visit any website for marketing research - Still protected by autonomy level (supervised), workspace isolation, and cost limits
- Created AGENTS.md with 16 specialist agents organized by category - Mounted agency-agents repo at /zeroclaw-data/workspace/agents/ (read-only) - AGENTS.md auto-injected into system prompt by ZeroClaw's OpenClaw identity system - User says 'Activate Book Co-Author' in Telegram to switch personas - Agents: Book Co-Author, Content Creator, Social Media Strategist, SEO Specialist, Brand Guardian, LinkedIn Creator, Podcast Strategist, Instagram Curator, TikTok Strategist, Twitter Engager, Reddit Builder, Orchestrator, Document Generator, Executive Summary, Analytics Reporter, Sales Extraction - Includes workflow templates (e.g., Book Chapter Development)
- Mounted deploy/marketing/output/ into container at /zeroclaw-data/workspace/output/ - Init container chowns output dir to uid 65534 for write access - Updated AGENTS.md with output folder instructions for all agents - Agent can create .md, .txt, .pdf scripts, .docx scripts directly readable by user
Feature/deploy marketing agent
…selection - Orchestrator now auto-selects the right specialist based on user's request - No need to manually 'Activate' agents — it reads definitions and adopts workflows automatically - Multi-step projects get planned across multiple specialists sequentially - Manual override still available via 'Activate [Agent Name]'
feat(deploy): make orchestrator the default mode for automatic agent …
…ce, audio, video) - parse_update_message now falls back to 'caption' when 'text' is absent - Extract file metadata from document, photo, voice, audio, and video messages - Download files via Telegram Bot API (getFile + file URL) and save to workspace - Files saved to output/uploads/ directory (host-accessible) - Prepend file path to message content so agent can reference uploaded files - Graceful fallback: if download fails, agent still receives the caption text
feat(telegram): support incoming file uploads (documents, photos, voi…
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Describe this PR in 2-5 bullets:
masterfor all contributions):Label Snapshot (required)
risk: low|medium|high):size: XS|S|M|L|XL, auto-managed/read-only):core|agent|channel|config|cron|daemon|doctor|gateway|health|heartbeat|integration|memory|observability|onboard|provider|runtime|security|service|skillforge|skills|tool|tunnel|docs|dependencies|ci|tests|scripts|dev, comma-separated):<module>: <component>, for examplechannel: telegram,provider: kimi,tool: shell):trusted contributor|experienced contributor|principal contributor|distinguished contributor, auto-managed/read-only; author merged PRs >=5/10/20/50):Change Metadata
bug|feature|refactor|docs|security|chore):runtime|provider|channel|memory|security|ci|docs|multi):Linked Issue
Supersede Attribution (required when
Supersedes #is used)#<pr> by @<author>, one per line):Co-authored-bytrailers added for materially incorporated contributors? (Yes/No)No, explain why (for example: inspiration-only, no direct code/design carry-over):\n): (Pass/Fail)Validation Evidence (required)
Commands and result summary:
cargo fmt --all -- --check cargo clippy --all-targets -- -D warnings cargo testSecurity Impact (required)
Yes/No)Yes/No)Yes/No)Yes/No)Yes, describe risk and mitigation:Privacy and Data Hygiene (required)
pass|needs-follow-up):Compatibility / Migration
Yes/No)Yes/No)Yes/No)i18n Follow-Through (required when docs or user-facing wording changes)
Yes/No)Yes, locale navigation parity updated inREADME*,docs/README*, anddocs/SUMMARY.mdfor supported locales (en,zh-CN,ja,ru,fr,vi)? (Yes/No)Yes, localized runtime-contract docs updated where equivalents exist (minimum forfr/vi:commands-reference,config-reference,troubleshooting)? (Yes/No/N.A.)Yes, Vietnamese canonical docs underdocs/i18n/vi/**synced and compatibility shims underdocs/*.vi.mdvalidated? (Yes/No/N.A.)No/N.A., link follow-up issue/PR and explain scope decision:Human Verification (required)
What was personally validated beyond CI:
Side Effects / Blast Radius (required)
Agent Collaboration Notes (recommended)
AGENTS.md+CONTRIBUTING.md):Rollback Plan (required)
Risks and Mitigations
List real risks in this PR (or write
None).