Advanced Configuration
Use this page when you want a reference view of ~/.config/remoterf/ and the main server config layout.
Now that the basic server framework is up, this page serves as a deeper reference for the full ~/.config/remoterf/ file tree, including the optional GitHub Gist status publisher. You may skip this page if you want, since nothing below is critical for a first successful bring-up.
Reference Layout
Sample ~/.config/remoterf/ tree
Compact reference view of the main server config files. Hover or focus any entry for a brief explanation.
Hover or focus a file or folder name to see what it does.
-
~/.config/remoterf/directory-
server.envCLI preferred -
gist.envCLI preferred -
super_token.txtedit by hand -
devices.ymledit by hand -
certs/DO NOT TOUCH -
db/DO NOT TOUCH -
drivers/directory-
<device>_schema.pyedit by hand
-
-
~/.config/remoterf/ somewhere else as a manual snapshot. It is best to do this while the server is stopped so the copied state is consistent.
GitHub Gist Status Publishing
RemoteRF can publish lightweight deployment status to a GitHub Gist. This is useful when you want a static web dashboard to show reservation activity, account totals, reserved hours, or other server-side summary data without exposing the RemoteRF server itself to the public internet.
Push status JSON to a public Gist
The server runtime writes the status payload. The website or dashboard reads the raw Gist URL and renders it as a normal JSON data source.
serverrf --serve gathers live usage and reservation summaries.
gist.env stores the target Gist metadata and publishing credential.
The configured JSON file is updated on the publishing interval.
A page fetches the raw URL and renders the latest status snapshot.
What You Need
Create a public GitHub Gist and copy the long ID at the end of its URL.
https://gist.github.com/user/<gist_id>
Use a stable file name ending in .json. The dashboard raw URL should point at this same file.
Create a GitHub personal access token with Gists read/write permission, then keep it only on the server.
gist.env
Configure the Publisher
Run these commands from the same Python environment where remoterf-server is installed:
Create the Gist Assets
Create a public Gist, add an empty JSON file, and save both the Gist ID and filename for the CLI step.
35d21013e98817dd7fe745a6c8819bfe.
Create the GitHub Token
Generate a GitHub personal access token for the server process. The token only needs Gists read/write permission for this feature.
Store the Target Gist
Use the built-in CLI so RemoteRF writes the expected gist.env values.
serverrf --gist --set --id <gist_id> --file <filename>
serverrf --gist --show
serverrf --gist --show should print the configured Gist ID and JSON filename. If your installed version prompts for the GitHub token, paste the token from Step 2 into that prompt.
Restart the Server
Start the server after the Gist config is in place. The status JSON should update automatically while the server is running.
serverrf --serve
Dashboard Hook
The static dashboard side should read the raw Gist file, not the editable Gist page:
https://gist.githubusercontent.com/<github_user>/<gist_id>/raw/<filename>
The current RemoteRF dashboard renderer expects a JSON object with usage totals and per-device reservation counts:
{
"usage": {
"account_count": 60,
"total_reservations": 214,
"total_reserved_hours": 417
},
"reservation_history_days": 27,
"reservations": {
"0": {
"2026-04-24": 12
},
"1": {
"2026-04-24": 4
}
}
}serverrf --serve process and start it again so it reloads gist.env.
Super Token
The super token is an administrator-only master override for direct device access. Normal users should use the reservation API tokens issued by RemoteRF after they reserve a device. The super token exists for administrator testing and urgent debugging when needing to access a device without going through the normal reservation process.
Keep this separate from user onboarding: Do not give the super token to students, lab users, dashboards, public Gists, or client setup guides. Anyone with the value can bypass the normal reservation-token path.
Store the Token Locally
Choose a private admin-only value and store it only on the RemoteRF server. This does not need to be generated by RemoteRF; a human-written value is fine as long as it avoids spaces, is reasonably long, and is not reused from a normal account password.
mkdir -p ~/.config/remoterf
nano ~/.config/remoterf/super_token.txtThe nano command only opens the file. Type one private token value on the first line, such as my-private-super-token, then save and exit. Leaving this file empty disables the super-token override.
chmod 600 ~/.config/remoterf/super_token.txt
The server reads the super token from ~/.config/remoterf/super_token.txt. After the file is in place, start the server normally:
serverrf --serve
If you change the value while the server is already running, restart serverrf --serve before relying on the new token.
Token Forms
The super token can be passed into the same Python token= argument used by normal reservation tokens:
from remoteRF.drivers.adalm_pluto import *
# First available unreserved device, local devices first.
sdr = adi.Pluto(token="my-private-super-token")
# Specific device, only if that device is online and unreserved.
sdr = adi.Pluto(token="my-private-super-token_0")
# Specific device even if it is currently reserved.
sdr = adi.Pluto(token="my-private-remoterf-admin-token_0_force")Use the _force form sparingly, as it can access a device that is already reserved and currently in use, potentially disrupting existing experimentation.
Rotation Checklist
If the super token is exposed to someone who should not have access to it, it should be changed immediately to prevent them from having unfettered access to the server’s devices:
- Stop the running
serverrf --serveprocess. - Replace
~/.config/remoterf/super_token.txtwith a new private value. - Start
serverrf --serveagain.