EdgeWire
Early access
Reach any robot, from anywhere.
Direct, encrypted connections from your laptop or your apps to services on a robot. No VPN and no open ports.
On your laptop
$ admrl edgewire forward edge-1 web 127.0.0.1:8080
listening on 127.0.0.1:8080
$ curl http://127.0.0.1:8080
hello from the deviceNo VPN
Reach a robot from your laptop.
Open a connection from your laptop or your own app to a service running on a robot, wherever it is. There is no VPN to run and no port to open on the robot.
Direct first
Peer to peer, with a relay behind it.
EdgeWire connects your machine to the robot directly when the network allows it, and goes through a relay when it does not. Either way the connection is encrypted end to end.
One command
You get a local socket.
One command, or one call from your code, gives you a socket on your machine that leads to the service on the robot. Point any tool at it.
How it works
Three steps to a robot on your desk.
01
Name a service
Add a named TCP or UDP service to a workload configuration, such as http on port 8080.
02
Forward it
Run one command. EdgeWire opens a local port on your machine that leads to that service.
03
Use it
Point your browser, Foxglove, RViz or your own code at the local port, as if the robot were on your desk.
Under the hood
Built for 10 Gbit/s. Tuned for LEO and 5G.
EdgeWire is a Go library and an admrl edgewire command set. One call opens a local socket to a service on a robot, over QUIC, on the best path the network gives it.
Go
err := edgewire.Forward(ctx, "127.0.0.1:18080", edgewire.Options{
DeviceID: "edge-1",
OrgID: org,
Service: "http",
})10 Gbit/s
Built for it on a direct path
LEO and 5G
Adapts to changing latency and loss
QUIC
One encrypted transport per session
FEC
Adaptive forward error correction
ML-DSA-65
Post-quantum signatures, FIPS 204
P2P + relay
ICE direct path, TURN fallback
- Direct first. ICE finds a direct UDP path between you and the robot, with TURN over UDP or TLS as the relay fallback.
- Choose the guarantee. Reliable streams, deadline delivery, or lossy datagrams that add forward error correction only as the link needs it.
- Signed twice. Identities and grants carry both an Ed25519 and an ML-DSA-65 signature, and both must verify. The TLS key exchange is post-quantum hybrid too.
Your tools
Open Foxglove or RViz against a robot anywhere, as if it were on your desk.
Run foxglove_bridge in your workload, expose its port as a service, forward it with one command and connect Foxglove or RViz to the local port. The same goes for a web page, a database or any other TCP or UDP service. Read the guide
Foxglove on port 8765
$ admrl edgewire forward edge-1 foxglove 127.0.0.1:8765
listening on 127.0.0.1:8765 Then open ws://127.0.0.1:8765 in Foxglove.
Safe by design
Only what you expose, and nothing more.
Named services only
You choose which services a workload exposes. Nothing else is reachable.
Only the workload
The robot forwards to the workload’s own sockets, so other programs on the device stay out of reach. This holds for isolated and host-network workloads alike.
Access is checked
Every connection needs an authorised account on an organisation with EdgeWire enabled.
Revocable
Remove a service and the open connections to it are closed.
Get started
Stop shipping people to the robot.
Tell us what you want to reach and we will show you EdgeWire doing it.