Snippbot Device Agent
Connect any machine to Snippbot as a remote execution node.
What It Does
The device agent runs on a remote machine and connects back to your Snippbot daemon via WebSocket. Once paired, the AI agent can route tool calls — shell commands, file operations, screenshots, browser automation — to the remote device.
Installation
pipx install snippbot-device
Or in a virtual environment:
pip install snippbot-device
With optional capabilities (use pip in a venv):
pip install snippbot-device[screen] # Screenshots (Pillow + mss)
pip install snippbot-device[browser] # Browser automation (Playwright)
pip install snippbot-device[camera] # Camera capture (OpenCV)
pip install snippbot-device[all] # All optional capabilities
Requires Python 3.11 or higher.
Quick Start
1. Pair with your Snippbot daemon
From the Snippbot UI, click Pair Device to generate a 6-digit pairing code. Then on the remote machine:
snippbot-device pair --host DAEMON_IP --port 18781 --code XXXXXX
2. Start the agent
snippbot-device start # Background (daemonized)
snippbot-device start -f # Foreground (see logs)
3. Verify
snippbot-device status # Check connection and resource usage
snippbot-device capabilities # List detected capabilities
Commands
snippbot-device pair Pair this device with a Snippbot daemon
snippbot-device start Start the device agent
snippbot-device stop Stop the running agent
snippbot-device status Show agent status and connection info
snippbot-device capabilities List detected capabilities
Capabilities
The agent auto-detects what the machine can do:
| Capability | Requirement | Description |
|---|---|---|
execution.bash |
Built-in | Shell commands (bash, zsh, cmd) |
execution.python |
Built-in | Python script execution |
filesystem.read |
Built-in | Read files |
filesystem.write |
Built-in | Write files |
filesystem.transfer |
Built-in | Send/receive files to daemon |
system.info |
Built-in | OS, CPU, memory, disk info |
capture.screenshot |
[screen] extra |
Take screenshots |
capture.camera_photo |
[camera] extra |
Camera capture |
browser.navigate |
[browser] extra |
Browser automation |
display.remote_view |
[remote] extra |
Screen streaming |
execution.docker |
Docker CLI in PATH | Docker container management |
Configuration
Config is stored at ~/.snippbot-device/config.toml after pairing.
daemon_host = "192.168.1.100"
daemon_ws_port = 18781
device_name = "my-laptop"
device_token = "device_..."
device_id = "..."
max_concurrent_tasks = 4
heartbeat_interval = 15
auto_update = true
How It Works
- The agent connects to the daemon via WebSocket (
ws://host:port/ws/device) - Authenticates using the token received during pairing
- Advertises its capabilities (what tools it can execute)
- Enters a message loop waiting for tool requests
- Sends heartbeats every 15 seconds with CPU/memory/disk metrics
- Auto-reconnects with exponential backoff if the connection drops
Security
- Device tokens are stored locally and validated on each connection
- Environment variables matching
*_KEY,*_SECRET,*_TOKEN,*_PASSWORDare stripped from command execution - File operations are restricted to allowed paths (configurable)
- Execution timeout: 5 minutes max per tool call
- Output limit: 1 MB per result
Logs
# Foreground mode: logs to stdout
# Background mode: logs to ~/.snippbot-device/agent.log
tail -f ~/.snippbot-device/agent.log
See Also
- Snippbot - Main project
- Snippbot Docs - Full documentation
Release files for snippbot-device 0.1.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| snippbot_device-0.1.6.tar.gz | 30.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| snippbot_device-0.1.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 66.7 kB
Release files / snippbot_device-0.1.6.tar.gz
| Download URL | snippbot_device-0.1.6.tar.gz |
|---|---|
| Size | 30.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d9a678e3e19692528f957f8545030e05be75fdc863423a45c12c569cc6a27f39
|
|
BLAKE2b-256 checksum How to use checksums |
a6abaa7299c98ab1a62213cf2b89af588a9c644315bb2e8a873d4396493cf71e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.
Transparency logRelease files / snippbot_device-0.1.6-py3-none-any.whl
| Download URL | snippbot_device-0.1.6-py3-none-any.whl |
|---|---|
| Size | 36.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dc03c610b81ba46c0d8ec23693c8669638d4c5289a193e005db57c065a6c0654
|
|
BLAKE2b-256 checksum How to use checksums |
665e57abe13b800d0d75393c11be96cec300422c335bf2b45d9ed30e2bde6f38
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.
Transparency log