New · v00052 Read the changelog ↗

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.

How it works

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 device
  • No 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.

  1. 01

    Name a service

    Add a named TCP or UDP service to a workload configuration, such as http on port 8080.

  2. 02

    Forward it

    Run one command. EdgeWire opens a local port on your machine that leads to that service.

  3. 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.

Read the docs