DevDuck Integration¶
DevDuck is the minimalist, self-adapting agent runtime. strands-adb is a first-class tool drop-in — one env var, no code.
1-Line Setup¶
pip install devduck strands-adb
export DEVDUCK_TOOLS="strands_adb:adb;strands_tools:shell"
devduck "take a screenshot of my phone"
That's it. DevDuck auto-loads adb from strands_adb, adds shell from strands_tools, and you have a phone-aware agent.
The DEVDUCK_TOOLS Format¶
;separates packages,separates tools in the same package:separates package name from tools
Recommended configurations¶
Persistent via service¶
Install as a systemd / launchd service that auto-restarts:
devduck service install \
--name phone-agent \
--tools "strands_adb:adb;strands_tools:shell" \
--startup-prompt "monitor notifications, text me on telegram for anything urgent" \
--env TELEGRAM_BOT_TOKEN=xxx
Now DevDuck runs in the background 24/7 on that host, watching the phone.
Logcat → Event Bus¶
DevDuck has an internal event bus. strands-adb pushes logcat events into it:
# In DevDuck:
adb(action="log_stream_start",
filter="NotificationManagerService",
topic="phone.notifications")
Every new notification appears in the agent's context automatically on the next query.
graph LR
PHONE["📱 Phone"] -->|logcat| ADB["strands_adb"]
ADB -->|publish| BUS["🚌 DevDuck event_bus"]
BUS -->|inject context| AGENT["🤖 DevDuck agent"]
AGENT -->|react| PHONE
style AGENT fill:#3DDC84,color:#000
Ambient Mode¶
DevDuck's ambient mode runs the agent in a background loop. Perfect for phone monitoring:
export DEVDUCK_AMBIENT_MODE=true
export DEVDUCK_AMBIENT_IDLE_SECONDS=60
devduck "monitor my phone every minute and alert me on anything urgent"
Or autonomous mode:
Scheduler¶
Cron-style jobs via scheduler:
# Inside devduck:
scheduler(action="add",
name="morning-brief",
schedule="0 8 * * *",
prompt="read my notifications and summarize what I missed overnight",
tools="strands_adb.adb,strands_tools.shell")
Remote Phone, Cloud Agent¶
DevDuck + wireless adb + SSH tunnel = full remote control:
# on the box with your phone:
ssh -R 5037:localhost:5037 cloud.example.com
adb -a -P 5037 nodaemon server &
# on cloud box:
export DEVDUCK_TOOLS="strands_adb:adb;strands_tools:shell"
devduck "check my phone battery and notifications"
Multi-Device via identity¶
DevDuck's identity tool lets you spawn parallel agents per device:
identity(action="fan_out", system_knowledge='''[
{"identity": "pixel-phone", "task": "monitor notifications"},
{"identity": "samsung-tablet", "task": "keep brightness adaptive"}
]''')
Each identity runs in parallel with its own ADB_SERIAL.
Example: Complete Setup¶
#!/bin/bash
# ~/.devduck_phone_agent.sh
export MODEL_PROVIDER=bedrock
export STRANDS_MODEL_ID="global.anthropic.claude-sonnet-4"
export AWS_BEARER_TOKEN_BEDROCK=xxx
export ADB_SERIAL="192.168.1.42:5555"
export DEVDUCK_TOOLS="strands_adb:adb;strands_tools:shell,file_read,file_write;devduck.tools:tasks,scheduler,ambient_mode,notify,telegram,system_prompt"
export DEVDUCK_AMBIENT_MODE=true
export TELEGRAM_BOT_TOKEN=xxx
devduck "$@"
What's Next¶
- Examples — full DevDuck flows
- SSH / Wireless ADB — remote setups
- Safety — production hardening