Remote-RED Agent

Remote access for any Linux system.

The Remote-RED Agent is a single, small program for Linux. It makes any local web UI securely reachable from anywhere and sends push notifications straight from your scripts to your phone. No Node-RED, no Home Assistant, no port forwarding. Just one binary on any Linux server, NAS, Raspberry Pi or IoT device.

$ curl -fsSL https://get.remote-red.com | sh

One command, and the agent is installed. Afterwards the script asks whether setup should start right away and walks you through the rest.

Remote-RED App
what the agent does

Two things, done well

The agent has a deliberately clear focus. It does two things, and for both the effort would be much higher without Remote-RED.

remote access

Many local web UIs reachable from anywhere

Remote-RED makes the web interfaces of many products and applications reachable from mobile. Over the same encrypted SSH tunnel that the Node-RED node and Home Assistant use too. No open ports, no public IP, no VPN hassle. More on this in the local requirements and transferable websites sections of the terms of use.

notify

Push notifications from any script

A single command turns any shell script into a source of native push notifications. Cron jobs, backup scripts, monitoring hooks report straight to your phone. With your own sound, without a webhook service in between: remotered notify --title "Backup" --body "Done, 42 GB".

multi-instance

One device as a bridge for the whole network

One agent can hold several instances at once. It runs on a reachable device and from there also makes the web UIs of other devices on the network reachable, ones that cannot get an agent of their own: NAS, smart home components, IoT boxes. Each appears as its own instance in the app.

No Node-RED, no Home Assistant. Just Linux.

Until now Remote-RED needed either Node-RED or Home Assistant as an underlying layer. The agent puts an end to that. It is a single, statically linked binary, without any runtime dependency.

No runtime needed

No Node.js, no Python version chaos, no extra software. The binary brings everything with it and therefore really runs on any Linux system, even on old distributions and lean IoT devices.

For every architecture

There are ready-made binaries for amd64, arm64 and armv7. From the beefy server down to the Raspberry Pi Zero, it is all there, from a single build.

Runs as a system service

One command sets up a hardened systemd service under its own unprivileged user. The agent opens no inbound ports on the host whatsoever. The tunnel goes strictly outbound.

As secure as the rest of Remote-RED

All connections run over HTTPS with public-key pinning, plus an SSH host-key check baked into the binary. Exactly the same mechanisms as in the apps, the Node-RED node and the Home Assistant integration.

$ remotered notify \ --title "Camper" \ --body "Battery is at 90%" # Body from stdin too: $ echo "42 GB backed up" | \ remotered notify --title "Backup"

Script-friendly exit codes: 0 sent, 1 limit or input error, 2 network problem. With --quiet, cron stays quiet too.

What you use it for

The agent is for anyone who runs a service on a Linux system and wants to reach it from anywhere, or hear from it.

iot manufacturer

Device makers with a local web UI

Your controller, machine or IoT box already comes with a web interface, but no app? This is exactly where the agent shines: you ship it on the device, and your customers get remote access and push notifications through the ready-made Remote-RED app. Without you having to build your own app, server infrastructure or cloud.

partner

Partner program for series products

Combined with the partner program, the agent is ideal for devices produced in series. You provision each device with a single command, and the QR code for access can go straight onto the type plate or into the manual. That means no in-app purchases for your users. Your own app with your branding adds the final touch.

homelab

Admins & homelab

You have a server, a NAS or a Raspberry Pi with a few web interfaces and want to reach them from anywhere, without opening ports or setting up a VPN. The agent tunnels them securely into the app and pings you via push when something goes wrong.

A device with a web UI, but no app?

That is exactly what the combination of agent and partner program is made for. Give your product remote access and push, without writing a single line of app code. We take care of app, server and stores.

guide

From a blank server to the app in minutes

Install, set up, pair, run it as a service. Here you find every step, plus the most important commands and how to keep the agent up to date later.

1. Installation via get.remote-red.com

The installation script detects your system's architecture, downloads the matching binary, verifies its SHA-256 checksum and puts it into /usr/local/bin/remotered. One command is enough:

curl -fsSL https://get.remote-red.com | sh

After that remotered is available system-wide. If the installation runs in a real terminal, the script asks right afterwards whether setup should start now. With curl | sh it instead just shows you the command to run yourself.

Rather take a look first? Perfectly fine. Download the script, read it, and run it afterwards. It installs only the verified binary and changes nothing else on your system.

Architectures

amd64, arm64 and armv7 are detected automatically. From the server to the Raspberry Pi.

No package mess

No apt, no Docker needed. The binary has no dependencies.

Easy updates

Once installed, an update is simple via 'remotered self-update'.

2. Overview of the commands

One binary, all tasks. Every command also has detailed built-in help.

CommandWhat it does
remotered setupSets up a new instance: registers it, asks for name and target URL and shows the QR code to pair the app.
remotered editChanges the local configuration of an existing instance, such as name or target URL. Server, credentials and app pairing stay untouched.
remotered removeRemoves an instance from the device again.
remotered qrGenerates a fresh QR code to pair another phone or to renew a lost pairing.
remotered runRuns the tunnel daemon in the foreground. This is what the system service runs in the background.
remotered notifySends a push notification to the paired apps.
remotered statusShows the connection status of all instances. With monitoring-friendly exit codes.
remotered serviceManages the systemd service: install, uninstall, start, stop, restart, status.
remotered self-updateUpdates the binary in place, checksum-verified.
remotered versionShows the installed version.
Help for every command: append --help to any command to see all options with an explanation, for example remotered setup --help or remotered notify --help. Running remotered on its own without arguments lists all available commands.

3. Set up, change and pair

The three commands you need most often when getting set up. Interactively guided, or as a one-liner for series production.

remotered setup always creates a new instance. After installation the script offers to start it right away in the terminal. But you can always call it yourself. Without arguments it asks you step by step for display name, region, target URL of the local web UI and agreement to the terms of use. At the end it shows the QR code that you scan with the Remote-RED app.

$ remotered setup

For series production everything also runs completely without prompts as a one-liner, including the partner details from the partner program and output of the QR code as a PNG file:

$ remotered setup --yes \ --name "Homeserver" \ --region us \ --target-url http://localhost:3000/ \ --customerhash <hash> --customerkey <key> \ --customerreference SN-12345 \ --qr-png /tmp/qr.png
Important: CustomerHash and CustomerKey are only passed to the server here, at creation time. The CustomerKey, the installer's secret, is not stored on the device.

remotered edit <id> only changes the local configuration of an existing instance, that is display name and target URL. Server, credentials and the already paired app stay untouched. Exactly the right way to quickly switch the target port.

$ remotered edit victron --target-url http://192.168.1.20:80/gui-v2/

Without flags, edit asks interactively and suggests the current value each time. With flags it runs through without prompting, ideal from scripts.

remotered qr generates a fresh QR code for an existing instance, without changing the configuration. Use it when you want to pair a second phone or a previous pairing has been lost. Remember to make your terminal wide enough.

$ remotered qr --instance victron

With exactly one instance you can omit --instance. With --qr-png <path> you also save the code as an image file.

4. Run it as a service

So the tunnel stays up permanently and comes back automatically after a reboot, the agent runs as a systemd service.

Set up with install

remotered service install creates its own unprivileged system user, sets the file permissions correctly, installs the hardened systemd unit and starts it. The command can be run any number of times and repairs the permissions along the way.

Control

start, stop and restart control the service without you needing to know the unit name. status shows whether the unit is running.

Check the connection

For the actual tunnel status you use remotered status. It reads the last known state and works even while the service is stopped.

Remove cleanly

remotered service uninstall stops and removes the unit. Your configuration and the state are deliberately kept, so nothing gets lost unintentionally.

# Set up and start the service $ sudo remotered service install # View the connection status $ remotered status

The service opens no inbound ports and runs with systemd hardening under its own user.

5. Keep it up to date with self-update

Updates are a single command. The binary is replaced, the checksum verified, your configuration and pairings stay untouched.

One command

sudo remotered self-update downloads the new version, verifies its checksum and replaces the binary. Nothing about config.toml or the state is touched.

Check first

With remotered self-update --check you only see whether a newer version is available, without changing anything. The exit code is directly suitable for cron or monitoring.

Pin a version

With --version 1.0.0 you install a specific version on purpose, for example to roll back to a known state.

Restart afterwards

A running daemon keeps using the old binary until it is restarted. So after the update, run sudo remotered service restart once. The app reconnects on its own.

# Check first whether there is something new $ remotered self-update --check # Update and restart the service $ sudo remotered self-update $ sudo systemctl restart remotered

Alternatively, running the installation script again is enough. Both ways do the same thing.

Get started on your Linux system

One command installs the agent, the next sets it up. If any questions are still open, just drop us a line.