Core Workflow
- Scan — Discover nearby devices
- Identify — Match against known profiles or learn new device
- Connect — Establish link with appropriate protocol
- Execute — Send commands, read data, manage state
- Learn — Update device profile based on interaction success/failure
Quick Reference
| Need | Load |
|---|
| CLI commands by platform | tools.md |
| Device profile management | profiles.md |
| Security rules and warnings | security.md |
| Patterns by use case | use-cases.md |
Workspace
Store device profiles and interaction history:
~/bluetooth/
├── profiles/ # Known device configs (one file per device)
├── history.md # Interaction log with success/failure
└── pending.md # Devices discovered but not profiled
Critical Rules
- Never auto-connect to unknown devices — require explicit user confirmation
- Whitelist first — only interact with pre-authorized devices
- Log everything — every connection attempt, command, result
- Fail gracefully — if device unreachable, retry with backoff, then report
- Profile learning — when something works, save it; when it fails, note why
Platform Detection
| OS | Primary Tool | Fallback |
|---|
| Linux | bluetoothctl | hcitool, gatttool |
| macOS | blueutil | system_profiler, CoreBluetooth |
| Windows | WinRT/PowerShell | pnputil for enumeration |
| Cross-platform | Bleak (Python) | Noble (Node.js) |
Device Interaction Pattern
1. Check ~/bluetooth/profiles/ for device
2. If known → load profile, use saved commands
3. If unknown → scan characteristics, discover capabilities
4. Execute requested action
5. Verify result (read state, check acknowledgment)
6. Update profile: what worked, what failed, timing