Server Management
This page provides a complete reference for operating the RemoteRF server, including managing configuration, devices, hosts, users, groups, enrollment codes, reservations, and server state.
Overview
This page is a reference for server-side operation of RemoteRF.
It covers the primary commands used upon starting the RemoteRF server via serverrf -s.
As usual, be sure to activate the remoterf-server environment using conda before starting the server.
This can be done by opening a new terminal and then typing in:
conda activate remoterf-server
serverrf -s
Server Management Scope
The server management surface is split across two command contexts:
- the static shell, where
serverrfandhostrfconfigure certificates, ports, host identity, host tokens, gist settings, and startup - the runtime shell, where the running server manages users, groups, enrollment codes, reservations, devices, hosts, and live state
Version Note:
This page tracks the command surface used by the current RemoteRF deployment docs.
If your installed package prints different help text, treat serverrf --help and help inside the running server shell as the source of truth for that installation.
Static Shell
Static shell commands are typed into the normal operating-system terminal, before you enter the running server@remoterf: prompt.
Use them to check CLI help, write local configuration, create host tokens, configure optional metadata, or start the long-running server and host processes.
Run each command from the Conda environment or virtual environment where the corresponding package is installed.
This section is a compact reference. For first-time setup order and worked examples, use the Server Deployment and Host Deployment pages first, then return here for command lookup.
Server-Side Commands
serverrf --help
serverrf --serve
serverrf -s
serverrf --config --main-port <port> --cert-port <port>
serverrf --config --show
serverrf --gen-certs <static_ip> --days <days> --force
serverrf --gen-certs <static_ip> --dns <name> --days <days> --force
serverrf --show-certs
serverrf --host --token-create "host" --length 8 --force
serverrf --host --show
serverrf --gist --set --id <gist_id> --file <filename>
serverrf --gist --show
Run serverrf --help to confirm the command is available in the active Python environment.
Use serverrf --config --main-port ... --cert-port ..., then verify with serverrf --config --show.
Use serverrf --gen-certs with the server's stable IP or DNS name, then inspect them with serverrf --show-certs.
Use serverrf --host --token-create to create the token a remote host will later apply with hostrf.
Use serverrf --gist --set and serverrf --gist --show only when the deployment uses the optional gist-backed metadata path.
Start the long-running server process from the server shell when configuration is ready.
serverrf --serve
serverrf -s
After changing certificates, ports, host tokens, or gist settings, stop the active serverrf --serve process and start it again so the runtime reloads the updated state.
Host-Side Commands
hostrf --help
hostrf --serve
hostrf -s
hostrf --config --addr <server_addr:port>
hostrf -c -a <server_addr:port>
hostrf --config --host <host_name> "TOKEN"
hostrf -c -h <host_name> "TOKEN"
Run hostrf --help to confirm the host package is installed in the active Python environment.
Use hostrf --config --addr with the server address and main port that clients and hosts should reach.
Run the hostrf --config --host ... command returned by serverrf --host --token-create.
Use hostrf --serve after the server address and host token are configured.
Start the long-running host process after the server address and host token are configured.
hostrf --serve
hostrf -s
After changing the host server address or host token, stop the active hostrf --serve process and start it again so the host reloads the updated state.
Runtime Shell
Runtime commands are typed after the RemoteRF server is already running.
Once serverrf --serve opens the server@remoterf: prompt, use help to print the runtime command list for the installed package.
These are useful first checks at the prompt.
help
status
devices list
groups list
Complete Command Reference
Use this as the condensed runtime command index. Destructive reset commands are denoted in yellow; use these with caution.
help
clear
status
quit
users list
users manage
users purge
users perms
devices list
devices status
reservations list
reservations purge
groups list
groups create
groups edit
groups delete
groups csv
codes list
codes create
codes delete
codes csv
hosts status
hosts wipe
db purge
Server State
Use the server-state commands first when you are diagnosing a live deployment. They do not change stored data, and they give you the fastest picture of what the runtime can currently see.
Start with read-only state before editing records.
Use status, help, and clear for general runtime inspection and shell housekeeping.
Use users list, users manage, users purge, and users perms for registered accounts and legacy permission tiers.
Use groups create, groups edit, codes create, and their list/export commands for cohort onboarding.
Use devices list, devices status, and hosts status to inspect local and host-provided devices.
Use reservations list for normal inspection. Treat reservations purge, hosts wipe, and db purge as intentional reset commands.
help
status
devices list
devices status
hosts status
reservations list
users list
groups list
codes list
Users and Permissions
Use user commands when you need to inspect who has registered, change an individual user’s access, delete an account, or manage that user’s reservations directly.
users list
users manage
users purge
users perms
users listprints registered accounts, including username, current permission tier, email, and creation time.users manageopens an interactive flow for one username. From there, you can set legacy permission details, delete the user, or add, view, and cancel that user’s reservations.users permsprints the underlying permission tables forUsers,PowerUsers, andAdmins.users purgedeletes all account records after confirmation.
Account note: Registration emails are recorded but are not currently used for password recovery in the documented user onboarding flow. If a user loses access, the practical recovery path may be to delete or ignore the old account and issue a fresh enrollment code.
Permission note: Group membership is the preferred mechanism for normal class and lab onboarding. Direct per-user management is best saved for exceptions, debugging, manual reservations, or account cleanup.
User Groups and Enrollment Codes
User Groups
User groups are mechanisms used by RemoteRF to scope access without manually configuring each student account one-by-one.
- User Groups: A user group defines the permissions and privileges of its members. It determines which SDRs are accessible to members of the group, the number of reservations each member may hold, and the duration of each reservation.
- Enrollment Codes: An enrollment code is a token that allows a student to self-enroll into a user group without you manually editing their account on the RemoteRF server.
groups list
groups create
groups edit
groups delete
groups csv
The usual group setup flow is:
- Run
devices listand record the device IDs users should be allowed to use. - Run
groups create. - Enter a clear group name, such as
ee101-2026-spring. - Enter an explicit device whitelist, such as
0,1,2. - Set
max_reservation_time_secfor the longest allowed single reservation. - Set
max_reservationsfor the maximum concurrent reservations per user. - Set
lifetime_secto0for no automatic expiration, or to a positive lifetime for temporary cohorts. - Run
groups listand record the generatedgroup_id.
server@remoterf: groups create
Enter group name (c to cancel): ee101-2026-spring
Devices whitelist (e.g. 0,1,2) (c to cancel): 0,1,2
Max reservation time (sec) [1800] (c to cancel): 3600
Max concurrent reservations [3] (c to cancel): 1
Group lifetime (sec) [0=forever] (c to cancel): 0
Use groups edit when a cohort needs a different whitelist or reservation policy after users have already registered.
Use groups csv to export the group table to the machine’s Downloads folder for record keeping.
Note: A user can belong to more than one group. For a device that appears in multiple groups, the server uses the highest applicable reservation duration and concurrent reservation limit for that user.
Enrollment Codes
codes list
codes create
codes delete
codes csv
The usual code-generation flow is:
- Confirm the target group with
groups list. - Run
codes create. - Enter how many codes to generate.
- Enter the target
group_id. - Choose the character count per code name, or accept the default.
- Confirm the generated code names.
- Set uses per code.
- Set
duration_sec, using0only when the code should never expire. - Export a copy with
codes csvif you need a distribution or audit record.
server@remoterf: codes create
How many enrollment codes? (c to cancel): 25
Group ID to attach codes to? (c to cancel): 1
Characters per code name? [10] (c to cancel): 10
Uses per code? [1] (c to cancel): 1
Duration in seconds? [3600] (0=never expires) (c to cancel): 604800
Use codes delete to delete one code by name or all codes attached to a group ID.
Use codes csv to export all current enrollment codes to the machine’s Downloads folder.
Note: Enrollment codes are credentials that allow a user to make an account on the RemoteRF server. Share them only with the intended cohort, and avoid posting a reusable code in a public course page unless that is deliberate.
For field-by-field class guidance, see Class Setup and Generating Enrollment Codes.
Devices, Hosts, and Reservations
Device, host, and reservation commands help you verify what clients will be able to reserve before users arrive.
devices list
devices status
hosts status
hosts wipe
devices listprints the device inventory visible to the server runtime.devices statusprints tunnel-aware device state, which is especially useful when hosts contribute devices.hosts statusprints the host tunnel status and host-provided device state.hosts wipeclears persisted host-directory state and in-memory host tunnel state after confirmation.
Host-state note:
The command hosts wipe is for runtime tunnel state, not normal client onboarding.
If hosts are still connected, they may repopulate live host state after the wipe.
reservations list
reservations purge
reservations listprints reservation IDs, usernames, device IDs, start times, and end times.reservations purgedeletes all reservation records after confirmation.users managecan also add, view, and cancel reservations for one user at a time.
Reservation note:
Use reservations list before changing account, group, device, or host state.
It is much easier to explain a cleanup action when you have captured the current reservation IDs first.
Destructive Commands
The runtime shell includes several reset commands. Use them deliberately, avoid running them during active labs, and prefer the narrowest command that matches the cleanup target.
users purge
reservations purge
hosts wipe
db purge
users purgePre-checkRun users list and export group/code data if you need a roster trail.
reservations purgePre-checkRun reservations list and confirm no one is actively using devices.
hosts wipePre-checkRun hosts status and confirm host reconnection behavior is understood.
db purgePre-checkRun status, users list, and reservations list; treat this as a full reset.
Reset note:
Use reservations purge when the target is reservation history only.
Use db purge only for an intentional full reset of database-backed server state.
Operating Pattern
For a normal class or lab rollout, use this sequence.
Run the management path once from the server shell.
This keeps onboarding predictable when the first client machines connect.
Start serverrf --serve, then run status.
Run devices list and devices status. Use hosts status if the deployment has host machines.
Run groups create with the intended whitelist and limits.
Run codes create against the group's group_id.
Run groups csv and codes csv if you need external tracking.
Register with one code from a real client workflow, then confirm with users list and reservations list.
After this path works, send users to the Onboarding Users checklist or the end-user Client Documentation, along with the correct server address, network requirement, enrollment code, and Python import pattern.
Next Steps
If the server starts cleanly, devices are visible, groups and codes are ready, and a test client can reserve a device, this can be the end of the server-management path. Navigate to one of the pages below only for the cases where the deployment needs deeper configuration work or diagnosis.