MultiSerial
MultiSerial is a desktop serial communication workspace for connecting to UART, USB-serial, and COM-port devices. It is built with Tauri 2, Rust, React, and TypeScript, with the serial backend running natively through Rust and the UI focused on day-to-day device bring-up, loopback checks, logging, and repeatable send workflows.
The app is intended for embedded, hardware, firmware, and lab workflows where you need to inspect incoming serial data, send text or bytes, keep logs, and switch between devices without relying on a terminal-only tool.
What You Can Do
- Discover serial ports and inspect USB metadata such as product, manufacturer, VID/PID, and serial number.
- Connect with configurable baud rate, data bits, parity, stop bits, and flow control.
- Send text, hex bytes, macros, automated sends, and raw file contents.
- View terminal data as UTF-8, hex, binary, decimal, or mixed output.
- Search terminal data, add filters, and highlight matching patterns.
- Keep independent session tabs with separate buffers, settings, filters, macros, and logs.
- Start session logs, open log folders, and export terminal data as text or HTML.
- Toggle DTR and RTS while connected.
Current Status
The project is under active implementation. The macOS path is the most heavily exercised so far, including CP2102 loopback testing. Linux (Ubuntu 24.04) now has a verified AppImage build, launch, and CP2102 loopback over /dev/ttyUSB0. Windows support and .deb install verification are still pending native host testing.
Known current release gates are tracked in TODO.md, with hardware spike results in docs/spike-results.md.
Download
A pre-release build is published on the Releases page.
- macOS (Apple Silicon / arm64): download
MultiSerial_<version>_aarch64.dmg, open it, and drag MultiSerial to Applications. The build is signed with a Developer ID and notarized by Apple, so it opens without a Gatekeeper warning. - Linux (x86_64): download
MultiSerial_<version>_amd64.AppImage(chmod +xand run directly) orMultiSerial_<version>_amd64.deb(sudo dpkg -i). Built and verified on Ubuntu 24.04, including launch and a CP2102 USB-UART loopback over/dev/ttyUSB0. See docs/release-checklist.md and docs/linux-permissions.md for thedialoutgroup requirement.
These are early pre-release builds and are not yet feature-complete. Intel (x86_64) macOS and Windows artifacts are not published yet; build them from source in the meantime (see below and docs/release-checklist.md).
Quick Start For Development
Use the pinned project toolchain rather than global JavaScript tooling:
corepack enable
corepack prepare pnpm@10.11.0 --activate
corepack pnpm install
corepack pnpm tauri:devDevelopment runs use isolated project-local data under .dev-data/ for config, logs, temp files, and test results. This avoids clashing with the computer's global environment or production app data.
For the browser-only preview:
For a production frontend build:
For the packaged desktop app:
corepack pnpm tauri:build
More setup detail is in docs/development.md.
Manual Loopback Test
- Connect a USB-to-TTL serial adapter.
- Short TX to RX on the adapter.
- Launch MultiSerial and scan ports.
- Select the adapter, choose a baud rate such as
115200, and click Connect. - Send text such as
helloand confirm it appears back in the terminal. - Switch to Hex and send bytes such as
00 01 02 ff.
A sample file for file-send testing is included at:
docs/samples/serial-loopback-sample.txt
Use Choose file, select the sample file, connect a loopback adapter, and click Send file. File send transmits the file's raw bytes over the active serial connection.
Settings
The Settings dialog controls default connection parameters, display behavior, logging, send/file pacing, automation limits, filters, update behavior, and privacy defaults.
Production logs default to ~/MultiSerial/logs. Development and tests use .dev-data/ paths.
Test Commands
Run the main checks before committing:
corepack pnpm typecheck
corepack pnpm lint
corepack pnpm format:check
corepack pnpm test
corepack pnpm test:e2e
corepack pnpm rust:fmt
corepack pnpm rust:test
corepack pnpm rust:clippyHardware loopback tests are ignored by default because they require a physical adapter. See docs/hardware-self-test.md.
Useful Docs
- Quick Start
- Serial Connection Guide
- Logging
- Linux Permissions
- Privacy
- Release Checklist
- Architecture Decisions
Repository Layout
src/- React frontend, terminal model, send/macro logic, filters, settings, and app state.src-tauri/- Rust Tauri shell, serial backend, logging backend, config, and native commands.tests/e2e/- Playwright workflows for UI behavior and browser mock serial testing.docs/- user, developer, hardware, and release documentation..dev-data/- local development/test data and manual test files.
License
This project is licensed under the terms in LICENSE. Third-party notices are collected in THIRD_PARTY_NOTICES.md.




























