Web Terminal nfltr terminal

nfltr terminal opens a full interactive terminal in your browser using xterm.js over HTTP polling. Unlike the Browser SSH Terminal (which requires an SSH server), this command spawns a real PTY directly — no sshd, no SSH keys, no configuration.

💡 Works Through Any Proxy

Uses HTTP polling instead of WebSocket. Works through corporate firewalls, HTTP proxies, CDNs, and load balancers that don't support WebSocket upgrades.


Quick Start

# Open a web terminal with password protection
nfltr terminal --basic-auth admin:secret --name my-server

# Custom shell (default: $SHELL or /bin/sh)
nfltr terminal --shell /bin/bash --basic-auth ops:pass

Visit the public URL shown in the terminal. A full xterm.js terminal renders in the browser with the server's shell.

How It Works

BROWSER xterm.js 5.5.0 HTTP polling (no WS) NFLTR SERVER HTTP proxy gRPC tunnel AGENT (nfltr terminal) PTY + shell process HTTP poll handler

The browser sends keystrokes via HTTP POST and polls for output. The agent allocates a real pseudo-terminal (PTY) and spawns your shell. Full ANSI color, cursor movement, and window resize are supported.

Terminal Preview

Connected to my-server via NFLTR web terminal

user@my-server:~$ ls -la
total 48
drwxr-xr-x 6 user user 4096 Mar 29 14:30 .
drwxr-xr-x 3 root root 4096 Mar 15 09:00 ..
-rw-r--r-- 1 user user 220 Mar 15 09:00 .bash_profile
drwxr-xr-x 4 user user 4096 Mar 28 11:23 projects

user@my-server:~$

Web Terminal vs Browser SSH Terminal

FeatureWeb Terminal (nfltr terminal)Browser SSH (nfltr tcp 22)
SSH server requiredNo — spawns PTY directlyYes — requires sshd
TransportHTTP pollingWebSocket
Proxy/firewall compatibleWorks through any HTTP proxyRequires WebSocket support
AuthenticationHTTP Basic AuthSSH password or public key
Multiple sessionsSingle PTY per agentOne session per SSH connection
LatencySlightly higher (polling interval)Lower (persistent connection)
Best forQuick access, restrictive networksFull SSH features, SCP

Features

🖥️ Full xterm.js

256-color, mouse events, scrollback, clipboard. xterm.js 5.5.0 with fit addon.

🔌 No WebSocket

Pure HTTP polling. Works through corporate proxies, CDNs, and firewalls that block WebSocket.

🖥️ Real PTY

Allocates a real pseudo-terminal. Full interactive shell with job control, tab completion, vi/emacs.

📐 Auto Resize

Terminal dimensions sync automatically when you resize the browser window.

🔐 Basic Auth

Protect with --basic-auth user:pass. Always use TLS in production.

📱 Mobile Ready

Works on phones and tablets. Touch-friendly with on-screen keyboard support.

Flags

FlagDefaultDescription
--basic-authProtect with HTTP Basic Auth (user:pass)
--shell$SHELLShell to spawn (falls back to /bin/sh)
--nameCustom agent name
⚠️ Security Note

Without --basic-auth, anyone with the URL gets full shell access. The terminal runs as the same OS user that started nfltr terminal. Always use authentication and TLS when exposing over the internet.

Full terminal from any browser

No SSH server, no WebSocket, no configuration. Just nfltr terminal and a URL.

Get Started Browser SSH →