Portable Web-Based Serial Terminal

A single executable serial terminal with dual-pane layout, data bridging, sequence sender, and XMODEM file transfer — no installation needed.

✓ 100% Free ⚙ Built with Rust 🌐 Windows · Linux · macOS
Download Free
🪟 Windows x86_64
🐧 Linux x86_64 (static musl)
🍎 macOS Intel
🍎 macOS Apple Silicon

Features

Everything you need in one portable binary

🖥️
Dual Pane
Two independent serial terminals side by side, each with its own port, config, and WebSocket connection.
Data Bridge
Forward data between panes with direction control (L→R, R→L, Both), regex extraction, and digits-only mode — synced across all clients.
▶️
Sequence Sender
Auto-generate and send data at configurable intervals using template variables: {counter}, {random:N}, {hex:N}, {time}, {date}.
🔄
Session Persistence
Serial sessions survive browser refresh. Reconnect and pick up data flow immediately — no lost context.
🌐
Multi-Client Sync
Open on multiple LAN PCs simultaneously. All clients see the same active sessions and bridge state in real-time.
📁
XMODEM Transfer
Send and receive files using the XMODEM-CRC protocol with a per-block progress bar.
📋
File Logging
Log all RX data to a file with start/stop control per pane. Never miss a byte.
🔢
Multiple Formats
ASCII, HEX, Binary, and Octal views — togglable per pane. Plus raw hex dump view.
🔧
On-the-fly Config
Change baud rate, data bits, parity, stop bits, and flow control without disconnecting.
🌙
Dark & Light Themes
Toggle with one click, persisted to localStorage. Comfortable for day and night use.
🔒
PIN Protection
Optional PIN gate on server startup for secure network sharing.
🇬🇧🇮🇩
Bilingual (EN / ID)
Switch between English and Indonesian with the flag button. Persisted to localStorage.

Architecture

Rust backend + Vanilla JS frontend — clean, fast, no dependencies

┌─────────────────────────────────────────────────────┐ │ Browser (UI) │ │ ┌──────────┐ divider ┌──────────┐ │ │ │ Pane 1 │ ═════════ │ Pane 2 │ │ │ │ (WS) │ │ (WS) │ │ │ └────┬─────┘ └────┬─────┘ │ │ │ │ │ └───────┼──────────────────────┼──────────────────────┘ │ WebSocket (ws://) │ ▼ ▼ ┌─────────────────────────────────────────────────────┐ │ Rust Backend (axum 0.7) │ │ ┌──────────┐ ┌──────────┐ │ │ │ Session 1│ │ Session 2│ ... │ │ │ (serial) │ │ (serial) │ │ │ └────┬─────┘ └────┬─────┘ │ │ │ │ │ │ ▼ ▼ │ │ ┌──────────┐ ┌──────────┐ │ │ │ COM port│ │ COM port│ │ │ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────┘

Download

Pre-built binaries from GitHub Actions — always the latest build

🪟 Windows
x86_64 · MSVC

No drivers needed — uses Win32 API built-in

↓ Download .exe
🐧 Linux
x86_64 · musl (fully static)

Requires libudev on glibc builds; static musl build has zero deps

↓ Download binary
🍎 macOS Intel
x86_64-apple-darwin

Uses IOKit framework — built-in on all modern Macs

↓ Download binary
🍎 macOS Apple Silicon
aarch64-apple-darwin

Native ARM64 build for M1/M2/M3 Macs

↓ Download binary

👉 Go to Actions → Build → click the latest successful run → download for your platform.

Quick Start

Up and running in under a minute

STEP 1

Download

Get the binary for your platform from the GitHub Actions page.

STEP 2

Run It

Linux/macOS: chmod +x pangrango && ./pangrango
Windows: double-click or run .exe.

STEP 3

Configure

Choose your port (default 8080), bind address, and optional PIN.

STEP 4

Open Browser

Navigate to http://localhost:8080 and click Connect.