Open source · preview

An open protocol for AI agents and devices.

Device Connect is the open-source protocol that lets AI agents safely operate physical devices. Connect a robot, sensor, or instrument once, and every agent across every framework can find and use it.

See it → View on GitHub
Built by
Arm
License
Apache 2.0
01 · About

A standard protocol
between agents and devices.

Connecting agents to the physical world has meant a one-off integration for every fleet, every framework, every protocol. Device Connect collapses that into a device driver on the hardware and one import on the agent. The agent treats devices the way it treats any other tool. Discover, call, listen.

AI Agent
natural language
Device Connect
discover · invoke · subscribe · govern
Devices
robots · cameras · sensors · vehicles
By design
01
Reach every agent, day one. One integration with Device Connect (robots, cameras, sensors, instruments, vehicles, appliances), and every AI agent can use it.
02
Operate at scale. Agents discover what is online, what each device can do, and run commands the same way at one device or a thousand.
03
Safe by default. Each device has its own identity. Rules say what each agent is allowed to do, and a full audit log records every action.
02 · Capabilities

Four tools for your agent.

The SDK exposes everything as four MCP-compatible tools. Anything you can do with a device (query state, run a command, react to an event) goes through one of them.

Find devices
Discover what's connected. Filter by type, location, or capability.
discover_devices()
Call a function
Invoke any exposed operation. Request–response, typed.
invoke_device()
Check status
Read health, identity, and availability before acting.
get_device_status()
Listen live
Subscribe to real-time events. Alerts, readings, state changes.
subscribe()
Works with MCP. Exposes devices as MCP tools so any MCP-compatible client can discover and invoke them.

Works with the frameworks you already use.

Strands
AWS
LangChain
Open source
Native Agent
Plain Python
Claude
Anthropic
Agents SDK Soon
OpenAI
Agent Dev Kit Soon
Google
03 · Packages

Three packages.

Device Connect ships as three pip packages. One runs on devices, one runs in agents, and the third (optional) runs on a server. They communicate over a network with three messaging options.

Messaging options Zenoh (default, P2P LAN, zero infra)NATS (cloud identity, JWT/NKey)MQTT (existing IoT brokers). Pick what fits your network.
04 · See it

A device. An agent.

The whole story end-to-end: a temperature sensor that exposes a reading and emits alerts, and an agent that finds it, calls it, and listens for trouble.

Device · sensor.py
# sensor.py: runs on the device

from device_connect_edge import DeviceDriver, rpc, emit, periodic

class TempSensor(DeviceDriver):
    device_type = "sensor"
    device_id   = "temp-bay-01"

    @rpc()
    async def get_reading(self) -> dict:
        """Return current temperature."""
        return {"temp": 22.5, "humidity": 45}

    @emit()
    async def alert(self, level, message):
        """Broadcast an alert event."""
        pass

    @periodic(interval=10)
    async def poll(self):
        reading = await self.get_reading()
        if reading["temp"] > 30:
            await self.alert("warning", "Hot!")
Decorators handle transport, identity, retries, schemas.
rpc
response
event
Agent · agent.py
# agent.py: runs anywhere

from device_connect_agent_tools import (
    connect, discover_devices, invoke_device,
    subscribe,
)

connect()

# Find what's on the network
devices = discover_devices(device_type="sensor")

# Call the @rpc function remotely
result = invoke_device("sensor-001", "get_reading")
# → {"temp": 22.5, "humidity": 45}

# Listen for @emit events
subscribe("*.event.alert", on_alert)
No URLs, no auth boilerplate, no transport code.
05 · Deployment

Scale from local to a production fleet.

Your code stays the same either way. To run in production, add the optional device-connect-server package and turn on security.

Mode 1 · D2D
Device to device
A laptop, a Pi, and a sensor on the same Wi-Fi. Working in five minutes.
  • Setuppip install, no servers, no certs
  • MeshZenoh with LAN multicast discovery
  • Scale~50–100 devices on a local network
  • StateEphemeral · lives in-memory
  • SecurityApp-layer auth optional
Mode 2 · Full infrastructure
Production fleet
Cross-network, persistent, cryptographically governed.
  • SetupDocker compose · etcd, registry, security service
  • MeshNATS with JWT/NKey identity, cloud routing
  • ScaleThousands of devices across sites
  • StatePersistent · etcd-backed
  • SecuritymTLS, ACLs, signed commissioning, full audit log
06 · Get started

From pip install to first RPC, in minutes.

On the device
$pip install device-connect-edge

Then write a class that subclasses Device, decorate a method with @rpc, and run it. Discovery is automatic on the LAN.

In the agent
$pip install device-connect-agent-tools

Import connect, discover_devices, invoke_device, subscribe. Pass the tool surface to your agent runtime.

For detailed guidance, see Device Connect Learning Paths:

arm Learning Paths
Device-to-Device communication with Device Connect
Stand up peer-to-peer communication between two devices, with no broker or cloud service in between.
learn.arm.com →