Rconsole docs · v1.4.2 GitHub

Rconsole features

Every feature of Rconsole 1.4.2, by area. This is the map; the details live in COMMANDS.md (each command, option and example), README.md (setup, configuration, security model), DEPLOY.md and FREE_HOSTING.md. A test fails when a command exists that is not mentioned here or in COMMANDS.md.

Contents · 1. What it is · 2. The console · 3. Files and editing · 4. Your Linux systems · 5. Hosting · 6. Free-tier survival · 7. Updating · 8. Background jobs · 9. Users and security · 10. Environment and AI · 11. Fun commands · 12. Running real programs · 13. Deployment and releases · 14. Settings · 15. Limits


1. What it is

A Flask web app that gives you a Linux console in the browser — built so bots, websites and workers can be hosted for free on platforms such as Render. Two modes in one page:

Commands run on a target: host (the server itself; admins only) or a vm (your own Linux system where you are root; everyone). One worker process with threads; all state in one data directory.


2. The console

Feature What you get
Line mode Type a command, get its output. cd is stateful per tab; pipes, redirects, &&, ; work (a real shell runs anything that is not a built-in).
Tabs Each Rconsole tab has its own directory, history and terminal. A terminal keeps running while you switch tabs, refresh the browser or close the browser tab, and re-attaches when you return; closing the Rconsole tab (✕) kills its terminal.
Real terminal Interactive programs open in an xterm.js window with a real PTY (ConPTY on Windows): job control, Ctrl+C, resize, colours, a ✕ button (or Esc) to close; the console carries on in the directory you were in. See section 12.
What survives what Browser reload or logout: tabs, history, aliases and the running terminal programs. Server restart, sudo reboot, rconsole update or a redeploy: tabs, history, aliases and each tab's folder come back, but the programs that ran in terminals, jobs and hand-started apps are stopped (a reopened tab gets a fresh terminal). See Updating.
help Lists the commands; help also prints the version.
clear / cls Clears the screen.
history Command history of the current tab.
rwhoami Prints your username.
version Prints the rconsole version (also at /healthz). See also rconsole version (section 7).
cd Change directory (~ supported; confined to the VM in VM mode).
alias / unalias Persistent per-user aliases that replace the first word of a command.
theme 17 colour themes (default light amber solarized dracula github ubuntu retro nord gruvbox matrix tokyonight catppuccin monokai everforest ayu papercolor), saved per account, switchable live from the command or the theme button.
logout Signs you out; everything is kept.
Logout button Sits next to the theme and system buttons (inside the ⚙ menu on phones) and does exactly what logout does.
⚙ menu On phones it holds theme, system and logout. For admins it also holds a Dashboard link (shown on every screen size; never sent to non-admins).
Mobile first Installable as a home-screen app (web manifest + icon); on narrow screens the tab bar shrinks to tabs, +, 📁, ⚙; a footer key bar provides Tab / Esc / Ctrl / arrows for touch keyboards; neofetch, vm list and friends reformat to your width.
Update screen While rconsole update runs, every open tab shows a locked progress screen and reloads by itself (section 7).

3. Files and editing

Feature What you get
edit <file> Built-in code editor with syntax highlighting for ~65 languages (300+ file extensions and special file names), mobile friendly. Works on the host (admins) or inside your VM. Files over 5 MB are refused.
Editor: smart editing Auto-indent (tabs or spaces, detected per file), auto-closing brackets/quotes with step-over and pair-delete, selection wrapping, HTML/XML auto-close tags, Markdown list continuation, Tab/Shift+Tab block indent, toggle comment (~60 languages), move/copy/delete/join lines, smart Home, current-line highlight. Full list: COMMANDS.md → edit.
Editor: find & replace Ctrl/Cmd+F / H / F3, match case, whole word, regex with $1, match counter, Replace All, go to line (Ctrl/Cmd+G).
Editor: font size & status bar A− / A+ (9–32 px, remembered; 16 px minimum on iOS), line/column, selection size, line count, indentation style (tap to change). Warns before closing the page with unsaved changes.
Editor: touch symbol bar Tab, outdent, undo/redo, Find, comment toggle and the symbols that are awkward on a phone keyboard (brackets, quotes, ; : = / \ and more) above the keyboard.
fm [path] In-console file manager: cd, up, open, cat, rm, mkdir, touch, mv, ?, q; the directory carries over when you quit.
📁 file browser Visual navigator: browse, open in the editor, create, rename, delete; download and upload; photos are shown and videos play in a built-in viewer (see COMMANDS.md).
File manager: selecting Click the blank space of a row to select it (the name still opens it); Ctrl/Cmd+click toggles, Shift+click selects a range, drag a rectangle to select many (Ctrl/Shift adds), double-click opens. On phones long-press a row, then drag to sweep over more rows; taps then toggle. Select all (a checkbox at the start of the selection bar, shown once something is selected; Ctrl/Cmd+A), Esc clears, Delete key deletes.
File manager: compress Selected items become one archive in the same folder: zip, tar, tar.gz, tar.bz2, tar.xz, tar.zst (Python 3.14+), 7z (needs bsdtar; admins can also use 7-Zip), RAR (admins with the rar tool installed), and one-file gz, bz2, xz, zst. Symlinks are stored as links, never followed; an existing archive is never overwritten (name (2).zip).
File manager: extract zip (also jar/war/apk/whl), tar family, gz/bz2/xz/zst, and through bsdtar 7z, RAR, CAB, ISO, CPIO, DEB, RPM, LZH, XAR. Extract to a new folder (uses the archive's own single top folder if it has one) or Extract here (never overwrites).
File manager: safe extraction Every entry is created with dir_fd + O_NOFOLLOW: .., absolute and drive-letter names are refused, nothing is written through a symlink, devices/FIFOs/hard links are skipped, setuid bits dropped. Zip-bomb guards: expanded size (RCONSOLE_MAX_EXTRACT_MB), 200,000 entries, free disk space. Confined (VM) users only get bsdtar for external formats.
File manager: background jobs Compress and extract run as a job with a progress bar and a Cancel button (temp files are cleaned up); one job per user at a time, and they never tie up a request.
File manager: properties Shown only when exactly one item is selected: type, location, size (folders: files/folders counted without following links), size on disk, modified/accessed/changed, permissions, owner/group (names for the host admin), link target, MIME type, entries inside an archive.
File manager: multi-delete Delete everything selected in one confirmation (folders with their contents; links are removed, never followed).
Download A file as it is; a folder as a streamed .zip (symlinks are skipped so a link can never pull in outside files).
Upload One or many files, or a whole folder with its structure kept; existing files are replaced only after one confirmation; each file is its own request so one failure does not stop the rest.
Confinement Everything goes through the same path namespace as commands: admins see the host, everyone else only their own VM. Symlink and .. escapes are resolved inside the VM root.

4. Your Linux systems (vm)

Several systems per user at once — Alpine, Debian, Ubuntu, Kali — each with its own root filesystem and its own persistent /root. You are root inside and can install anything; no host privileges. Works on locked-down hosts (it uses proot, fetched and checksum-verified automatically on x86-64). Debian is the default (RCONSOLE_DEFAULT_SYSTEM).

Feature What you get
vm / vm status [name] Your systems, which is active, disk used, install progress.
vm list Every installable system (debian:bookworm, ubuntu:24.04, alpine:3.21, kali, arch, aliases deb ubu alp archlinux).
vm install [name…] Installs one or more (all too) in the background; root filesystems come from the distribution's own mirrors and are verified against the published SHA-256; safe extraction; the same system can't be installed twice.
vm shell [name] Interactive root shell in a VM.
shell Admins only: the same kind of interactive window, on the host shell.
vm run [--vm name] <cmd> One command, printed output (90 s limit). @vm:<name> cmd does the same inline.
vm use <n> / vm mode [host\|vm [name]] Which VM plain commands use / where they run (host is admins only). Several VMs and no default pops up a picker.
vm reset [name] --yes Recreates a VM's system files and keeps its /root.
vm remove <name\|all> --yes Deletes a VM and its /root.
vm setup <profile> [name] Ready-made toolchains installed as a background job with live progress: python (with headers for psycopg2, mysqlclient, Pillow, lxml, cryptography…), build, node, rust, db, tools, docker, udocker, kali (Kali toolset), all. Profiles are remembered and re-applied after a restore.
vm update [name] Updates a VM to the latest version, safely (Alpine walks to the newest release, one release at a time; Debian/Ubuntu/Kali get all newer packages of their release; --stay = packages only): locks it (nothing can start in it, what ran there stops), checks the package database, takes a snapshot (hard links: almost no disk), upgrades without questions (config files kept), verifies, and on any problem — failure, timeout, shutdown, even a crash — restores the snapshot. /root is never touched. Admins must be in the host shell; a normal user with one system has everything stop while it runs (name optional), with several only that VM is locked. --yes confirms, --log shows the run, vm status shows progress.
vm ps [name] · vm kill <pid> [name] Processes of one VM. Each VM has its own PID namespace (RCONSOLE_VM_PIDNS, default auto), so ps/top/kill//proc inside it show only its processes (PIDs from 1) and kill -9 -1 stays inside; where the host forbids user namespaces these two commands are the scoped view (found through proot) and vm doctor says "NOT isolated".
vm deps [name] What a restore will reinstall in a VM: system packages, pip, global npm, virtualenvs and Node projects under /root (deps.json, taken before each backup). vm deps capture records now, vm deps restore reinstalls now. RCONSOLE_RESTORE_DEPS=0 disables restoring.
vm doctor [name] Step-by-step health check: shell, programs, root, write, DNS, internet, packages.
vm help Short usage.
No questions asked Installs are non-interactive (DEBIAN_FRONTEND=noninteractive); pip install works without --break-system-packages; Kali gets a writable /dev/net and no banner; user tool directories (~/.local/bin, ~/.cargo/bin, ~/.bun/bin, ~/go/bin) are on PATH.
docker docker run/pull/images/ps/rm/rmi/… without a daemon (a shim over udocker, installed in the image and by vm setup docker). drun is docker run. DOCKER_HOST forwards to a real engine. Daemon-only features (-d, exec, logs, build, compose) explain why they are impossible.
neofetch / fetch / rfetch Screen-fitting system summary: your target's (a VM's own distro and packages) or rconsole's; rfetch is always rconsole's.
Not a hard sandbox The VM is a convenience boundary, not a security one (see the security model).

5. Hosting apps, bots and workers

Feature What you get
expose <port> <name> Publishes a server you started (host or any VM) at https://<domain>/<name>/. Private by default (rconsole login), --public for admins (webhooks, demos), --rewrite fixes root-relative links in HTML/CSS. Up to 20 per user; names unique across users.
expose list / expose rm / unexpose List with [up]/[down], remove one, several, or all.
Reverse proxy Pooled; sends X-Forwarded-Prefix/Host/Proto, rewrites redirects into the prefix, passes multiple Set-Cookie through, never forwards rconsole's own session cookie; requests are buffered with a 30 s timeout (no WebSockets through it).
service Named commands rconsole keeps running: start at boot, restart on crash with 2 s → 60 s back-off (reset after a minute of stability), live in a VM or on the host, are restored after a redeploy (definitions are in the backups; processes are stopped and started again once the VM is rebuilt). "Boot" means Rconsole's own startup. service add\|list\|start\|stop\|restart\|logs\|rm\|help.
service add options --vm, --host (admins), --cwd, --env KEY=VALUE (repeatable; good for bot tokens), --expose PORT:NAME (also publishes it), --no-autostart. Up to 10 per user.
kprocess 🔒 Kill a process by PID, or everything the session hosts. Refuses to kill rconsole itself.
Everything together service add app --vm debian --cwd /root/app --expose 8000:app gunicorn -b 127.0.0.1:8000 app:app starts it, restarts it, logs it and publishes it.

6. Free-tier survival

Made for hosts that sleep when idle and wipe the disk on every deploy — see FREE_HOSTING.md.

Feature What you get
keepalive Pings the site's own public URL (/healthz) every 10 minutes so a free instance is not suspended for inactivity (it cannot prevent provider restarts or quota limits). On by default on Render; keepalive now, sudo keepalive off\|on; also pings extra URLs (RCONSOLE_KEEPALIVE_EXTRA).
backup 🔒 Encrypted snapshots to a private git repo (history never accumulates: each push replaces the branch) or a folder. Saves users and secrets, per-user state, the workspace, exposures, services, each VM's /root, the VM list and vm setup profiles, and the installed release of rconsole update. sudo backup, now, restore --yes, help. Runs every 15 minutes if something changed and once at shutdown.
Automatic restore On a blank instance the latest backup is restored before anything else starts; VMs are reinstalled, profiles re-applied and packages reinstalled (system, pip, npm, virtualenvs, Node projects) in the background; each VM stays locked (restoring) until done, then its services start by themselves.
reboot 🔒 Restarts in place without a redeploy (sudo reboot --yes: final backup → stop everything → reload), or --hard to exit the process. Services start again; the page reconnects.
/healthz Public health probe: {"ok": true, "version": …}. Answers even while an update is running.
Sleep-proof deploys Render blueprints for the free plan (render.yaml) and for a persistent disk (render.paid.yaml).

7. Updating (rconsole update)

New in 1.3.0. Details: COMMANDS.md → Updating rconsole.

Feature What you get
rconsole update Asks GitHub for the latest release; if it is newer, shows what is new, asks, then updates the whole program to it. Admins only (no sudo prefix).
rconsole update --check Reports only (everyone). --yes skips the question; --force also allows a git checkout or reinstalling the same / a rolled-back version.
Console lock From the first step until the restart nothing else can be done: every request except /healthz, static files and the status endpoint gets 503; no command, terminal, file operation, login or hosted app works, in any tab. Open tabs show a progress screen.
Verified SHA-256 of the archive checked against the release's SHA256SUMS (no checksum, no update); strict unpack (no links, .., absolute paths, size limits).
Tested before applied Correct version, every file compiles, and the new app is imported in a separate process with a throw-away data directory — before anything is stopped or replaced.
Data stays intact Only program files are replaced, one by one, atomically, after a rollback copy of each is saved. data/, .venv, .git, .env are never touched; only files an earlier release installed are ever removed. Services, jobs and terminals are stopped and a final backup taken first; then an in-place restart.
Dependencies Changed Python packages go to <data>/update/site-<version>, never into the system.
--rollback Back to the previous version (also python updater.py rollback, which works with a dead server).
Boot safety A new version must stay up ~25 s to count as healthy; one that keeps failing to start is rolled back at the next container start and is not offered again without --force.
Survives re-creation The verified release is kept in <data>/update/releases and in the encrypted backups, and is re-applied at boot when the image was rebuilt from older code.
rconsole version Version, install directory, last update result, rollback available.
Settings RCONSOLE_UPDATE_REPO (your fork), RCONSOLE_UPDATE_TOKEN (private repo / rate limit; never passed to user commands).

8. Background jobs

Add & to any command (sleep 60 &). Jobs are per user, survive closing the tab, and are numbered %n.

Command Does
jobs Lists jobs (number, pid, running/done, command).
jobout %n [lines] Last lines of a job's output (default 50).
jobtail %n Live-follows output; any key stops.
fg %n Follows output and stops when the job ends.
kill %n Stops a job (kill SIGKILL %n); anything else goes to the real kill.

Output is a rolling buffer; kills take the whole process tree.


9. Users and security

Feature What you get
Accounts Admin and normal users; up to RCONSOLE_MAX_USERS (10). suser, auser, nauser, muser, ruser, cpass, cuser — all 🔒. The last admin can't be demoted or deleted; deleting a user removes their state, VMs, jobs, terminals and exposures; renaming moves everything with the name.
First login The factory ark/ark login only works to set a new password (sudo cpass); until then only cpass, logout, help, clear, history and rwhoami run. RCONSOLE_ADMIN_PASSWORD sets the first password.
Passwords PBKDF2-HMAC-SHA256, 210 000 rounds, per-user salt plus a persisted random pepper; old hashes upgrade on login; minimum length RCONSOLE_MIN_PASSWORD (8).
Brute-force protection Throttled per (IP, user) and per IP with exponential lockout (RCONSOLE_LOGIN_ATTEMPTS/..._LOCKOUT); the response never reveals whether a user exists.
Sessions Signed cookie rconsole_session (HttpOnly, SameSite=Lax, Secure over HTTPS), 30-day inactivity timeout, a deleted user is logged out.
Web hardening Origin / Sec-Fetch-Site check on every POST and WebSocket handshake; X-Frame-Options, nosniff, HSTS over HTTPS; trusted-proxy handling (RCONSOLE_TRUST_PROXY).
Authorization choke point sandbox.py decides host vs VM for the line console, jobs, hosted apps, the terminal WebSocket and the file APIs; host access is admin-only.
Secrets Generated secrets are stored 0600, shared by all processes, and stripped from every user process and hosted app.
Users file Atomic 0600 writes; a corrupt file is quarantined, never silently reset.
Admin dashboard /dashboard, admins only (others get a 404 and no link). Live overview (CPU, memory, disk, network, load, one hour of graphs, alerts), processes (services, jobs, terminals, busiest host processes with owners; restart / stop / kill / logs), users (online status, create, promote, demote, reset password, stop everything, delete), systems (per-system process list, disk usage by area), exposed ports and hosted apps, and health (backups with Back up now, keep-alive, updates). Resource numbers come from /proc and the container's cgroup, so no extra dependency; RCONSOLE_METRICS_INTERVAL sets the sampling rate.
Audit trail Logins (also failed and locked-out ones), logouts, and every account or process change made from the dashboard or with suser, auser, nauser, muser, cpass, ruser; shown in the dashboard's Activity tab and kept in logs/audit.jsonl (rotated at 1 MB).
rboot 🔒 Factory reset: stops everything, wipes every user's state, VMs, logs and exposures, resets users to the default admin. No undo.

10. Environment and AI

Feature What you get
env 🔒 Per-user environment variables exported into every command and VM (values masked when listed): sudo env, set K=V, unset K, import (copy known provider keys from the server).
agent 🔒 Native AI coding agent: runs shell commands and reads/writes/lists files in your current target; persistent per-tab conversation, context compaction, retries; OpenAI-compatible or Anthropic providers (first key found wins). Slash commands /help /clear /model /provider /keys /models /compact /system /exit; obviously destructive host commands are refused.
opencode 🔒 Launches the OpenCode terminal AI; installs it as a background job on first use; sudo opencode run "prompt" for one prompt.

11. Fun commands

Built in, nothing to install: hello / hi, cowsay, fortune, lolcat, figlet / banner, sl, matrix, colors, date, uptime, cal [month [year]], echo [-n] [-e], rev, wc, plus neofetch / fetch / rfetch (section 4). echo, rev and wc hand over to the real programs when the line has pipes.


12. Running real programs

Any word that is not a built-in is run by a real shell in your current target (60 s limit for captured output; use vm shell, & or an interactive program for longer work), with your sudo env variables, user tool directories on PATH and non-interactive package managers.

Interactive programs open in a real terminal window: nano vi vim nvim emacs less more most man top htop btm glances watch tmux screen mc ranger nnn fzf lynx w3m mutt irssi telnet ssh bash sh zsh fish pwsh powershell cmd cmd.exe python python3 py ipython pip irb node npm npx php lua opencode.


13. Deployment and releases

Feature What you get
Docker image Runs as an unprivileged user by default (RCONSOLE_RUN_AS_ROOT=1 for single-owner setups), data in /data, gunicorn with one worker and RCONSOLE_THREADS threads, health check on /healthz; the entrypoint also re-applies a saved update (updater.py sync).
Render render.yaml (free plan, keep-alive + backups) and render.paid.yaml (persistent disk); detection of the public URL and trusted proxy.
VPS docker compose with Caddy (automatic HTTPS) or nginx (deploy/nginx.conf), systemd notes — see DEPLOY.md.
Local uv run python serve.py (Python ≥ 3.14, older versions are not supported); Windows supported (ConPTY, no VM).
serve.py launcher uv run python serve.py runs gunicorn where it works (Linux, macOS, containers) and falls back to a built-in threaded server where it does not (Windows), with the same shutdown work. RCONSOLE_SERVER=gunicorn\|builtin forces one; RCONSOLE_HOST sets the built-in server's bind address. gunicorn is not installed on Windows.
CI and releases GitHub Actions runs lint and the test-suite; pushing a vX.Y.Z tag publishes a release with rconsole-X.Y.Z.tar.gz, a .zip and SHA256SUMS from the changelog — the archive rconsole update installs. Dependabot keeps dependencies current.
Tests about 500 tests, including HTTP-level, authorization, path confinement, backups, the updater and documentation drift guards; real-VM end-to-end tests run when proot and a static busybox exist.

14. Settings

All through environment variables (config.py); the full table with defaults is in docs/configuration.md (generated from the same list as this table).

Area Variables
Server PORT, RCONSOLE_DATA_DIR, RCONSOLE_THREADS, RCONSOLE_LOG_LEVEL, RCONSOLE_SERVER, RCONSOLE_HOST, RCONSOLE_TRUST_PROXY, RCONSOLE_COOKIE_SECURE, RCONSOLE_ALLOWED_ORIGINS, RCONSOLE_PUBLIC_URL, RCONSOLE_RUN_AS_ROOT
Accounts and login RCONSOLE_SECRET, RCONSOLE_PEPPER, RCONSOLE_ADMIN_PASSWORD, RCONSOLE_MIN_PASSWORD, RCONSOLE_MAX_USERS, RCONSOLE_METRICS_INTERVAL, RCONSOLE_LOGIN_ATTEMPTS, RCONSOLE_LOGIN_LOCKOUT
Linux systems (VMs) RCONSOLE_VM, RCONSOLE_DEFAULT_MODE, RCONSOLE_DEFAULT_SYSTEM, RCONSOLE_ALLOW_USER_HOST, RCONSOLE_USER_VM_PROC, RCONSOLE_VM_PIDNS, RCONSOLE_HOST_HOME, RCONSOLE_VM_ROOTFS_URL, RCONSOLE_VM_ROOTFS_SHA256, RCONSOLE_VM_PROOT
Services and hosted apps RCONSOLE_SUPERVISOR
Files RCONSOLE_MAX_UPLOAD_MB, RCONSOLE_MAX_EXTRACT_MB
Staying awake RCONSOLE_KEEPALIVE, RCONSOLE_KEEPALIVE_INTERVAL, RCONSOLE_KEEPALIVE_EXTRA
Backups and restore RCONSOLE_BACKUP_URL, RCONSOLE_BACKUP_TOKEN, RCONSOLE_BACKUP_USER, RCONSOLE_BACKUP_BRANCH, RCONSOLE_BACKUP_DIR, RCONSOLE_BACKUP_PASSPHRASE, RCONSOLE_BACKUP_ENCRYPT, RCONSOLE_BACKUP_INTERVAL, RCONSOLE_BACKUP_MAX_MB, RCONSOLE_RESTORE_SETUP, RCONSOLE_RESTORE_DEPS
Updating RCONSOLE_UPDATE_REPO, RCONSOLE_UPDATE_TOKEN, RCONSOLE_UPDATE_API
Docker Compose files RCONSOLE_DOMAIN, RCONSOLE_VERSION
Docker compatibility layer (inside VMs) DRUN_MODE, DRUN_PULL_OPTS, DOCKER_SHIM_LOCAL, DOCKER_HOST

---|---| | Server | PORT, RCONSOLE_DATA_DIR, RCONSOLE_THREADS, RCONSOLE_TRUST_PROXY, RCONSOLE_ALLOWED_ORIGINS, RCONSOLE_COOKIE_SECURE, RCONSOLE_PUBLIC_URL | | Secrets and login | RCONSOLE_SECRET, RCONSOLE_PEPPER, RCONSOLE_ADMIN_PASSWORD, RCONSOLE_MIN_PASSWORD, RCONSOLE_LOGIN_ATTEMPTS, RCONSOLE_LOGIN_LOCKOUT, RCONSOLE_MAX_USERS | | Systems | RCONSOLE_VM, RCONSOLE_DEFAULT_MODE, RCONSOLE_DEFAULT_SYSTEM, RCONSOLE_ALLOW_USER_HOST, RCONSOLE_USER_VM_PROC, RCONSOLE_RUN_AS_ROOT, RCONSOLE_HOST_HOME, RCONSOLE_VM_ROOTFS_URL, RCONSOLE_VM_ROOTFS_SHA256, RCONSOLE_VM_PROOT | | Services | RCONSOLE_SUPERVISOR | | Files | RCONSOLE_MAX_UPLOAD_MB, RCONSOLE_MAX_EXTRACT_MB | | Staying alive | RCONSOLE_KEEPALIVE, RCONSOLE_KEEPALIVE_INTERVAL, RCONSOLE_KEEPALIVE_EXTRA | | VM isolation / restore | RCONSOLE_VM_PIDNS (auto | on | off: one PID namespace per VM), RCONSOLE_RESTORE_DEPS (reinstall each VM's packages after a restore, default on) | | Backups | RCONSOLE_BACKUP_URL, RCONSOLE_BACKUP_TOKEN, RCONSOLE_BACKUP_DIR, RCONSOLE_BACKUP_PASSPHRASE, RCONSOLE_BACKUP_INTERVAL, RCONSOLE_BACKUP_MAX_MB, RCONSOLE_BACKUP_BRANCH (branch that receives snapshots, default rconsole-backup), RCONSOLE_BACKUP_USER (git user for the token, default x-access-token), RCONSOLE_BACKUP_ENCRYPT (default on; turning it off stores plain snapshots), RCONSOLE_RESTORE_SETUP (re-run vm setup profiles after a restore, default on) | | Updating | RCONSOLE_UPDATE_REPO, RCONSOLE_UPDATE_TOKEN, RCONSOLE_UPDATE_API (GitHub API base; tests / Enterprise mirrors only) | | Docker shim | DRUN_MODE, DRUN_PULL_OPTS, DOCKER_SHIM_LOCAL, DOCKER_HOST |


15. Limits

Thing Limit
Accounts 10 (RCONSOLE_MAX_USERS)
Services per user 10
Exposures per user 20 (ports 1024–65535)
Captured command output 60 s; vm run 90 s
Proxy request 30 s, buffered, no WebSockets
Upload per file 64 MB (RCONSOLE_MAX_UPLOAD_MB)
Extracted size per archive 2048 MB (RCONSOLE_MAX_EXTRACT_MB); 200,000 entries
Items per compress 500; one compress / extract job per user at a time
Editor file 5 MB
Backup 40 MB total, 20 MB per file (RCONSOLE_BACKUP_MAX_MB)
Terminals about one per thread (RCONSOLE_THREADS, 64)
One worker State lives in process memory: do not run several workers.

Edit this page on GitHub