SerialRUN
Health Gecti
- License — License: NOASSERTION
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 38 GitHub stars
Code Gecti
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
Professional Serial Port Debugging Assistant with Modbus, PLC, CAN, I2C/SPI support and MCP server
SerialRUN
One serial tool for terminal work, Modbus/PLC debugging, CAN and I²C/SPI analysis,
firmware flashing — plus an MCP server that lets AI agents drive the port.
English | 简体中文
Download · Features · MCP server · Documentation · Website
Modbus RTU debugging — live register monitoring with synchronized TX/RX in the terminal
Website
www.serialrun.com — feature tour, OS-aware downloads, user guide, and documentation
Download
Latest: v0.4.6 (2026-10-28) — what's new · all releases
| Platform | Recommended | Also available |
|---|---|---|
| Windows (x64) | serialrun-0.4.6-windows-x64-setup.exe | portable zip |
| macOS (Apple Silicon, M1–M4) | serialrun-0.4.6-macos-arm64.dmg | zip |
| macOS (Intel) | serialrun-0.4.6-macos-x64.dmg | zip |
| Linux (x86_64) | serialrun_0.4.6_amd64.deb | tar.gz |
The website detects your OS and points the main button at the right installer:
www.serialrun.com.
Windows — run the setup for Start Menu shortcuts and an uninstaller; the portable
ZIP needs no installation and also contains serialrun-cli.exe and serialrun-mcp.exe.
macOS — Apple Silicon (M1–M4) needs the arm64 build, Intel Macs need the x64 build.
The builds are ad-hoc signed (not notarized), so on first launch use
right-click → Open. If macOS reports the app as damaged, runxattr -dr com.apple.quarantine /Applications/SerialRUN.app once and open it again.
Linux — sudo apt install ./serialrun_0.4.6_amd64.deb installs serialrun,serialrun-cli and serialrun-mcp into /usr/bin and resolves dependencies.
For the tarball, extract and run ./serialrun. Runtime dependencies (Ubuntu/Debian):sudo apt install libudev1 libxkbcommon0 libx11-6 libxcursor1 libxrandr2 libxi6 libgl1 libwayland-client0
All packages are built automatically by GitHub Actions for every release — see
the release workflow and docs/RELEASE_SOP.md.
Quick Start
Connect your first device
- Plug the USB serial device into your computer.
- Launch SerialRUN and click Refresh next to the port selector.
- Choose the port and baud rate, then click Connect.
- Type in the input box and press Send (or Enter). Toggle HEX, timestamp,
CRC or the line ending in the toolbar as needed.
Every panel is an independent OS window — open Modbus, PLC, CAN, Scope
or any other tool from the top bar and drag it anywhere, including onto a second monitor.
Command line
The packages include serialrun-cli for scripted work:
# List available ports
serialrun-cli list
# Connect, send, and monitor
serialrun-cli send COM1 "Hello\r\n"
serialrun-cli monitor COM1 -t -l output.log
# Record and replay a session
serialrun-cli record COM1 -o script.txt
serialrun-cli replay COM1 script.txt
Agent mode (JSON output for automation)
serialrun-cli agent list-ports # List ports (JSON)
serialrun-cli agent COM1 send "AT+RST" # Send data
serialrun-cli agent COM1 read --timeout 1000 # Read data
serialrun-cli agent COM1 run-script test.txt # Run a script
Why SerialRUN?
Serial debugging usually means juggling a terminal for raw I/O, another tool for
Modbus registers, a vendor utility for PLCs, and a separate viewer for CAN or
I²C/SPI traffic. SerialRUN puts them behind one multi-window UI and adds an MCP
server so AI assistants can operate the same port under your supervision.
| Capability | SerialRUN | PuTTY | Tera Term | VS Code Serial Monitor |
|---|---|---|---|---|
| Native GUI on Windows, macOS and Linux | Yes | Windows only | Windows only | Yes |
| HEX view and timestamps | Yes | No | Partial | No |
| Modbus RTU/TCP monitor and frame builder | Yes | No | No | No |
| PLC presets, TCP↔RTU bridge, HMI simulator | Yes | No | No | No |
| CAN (SLCAN), I²C/SPI, oscilloscope | Yes | No | No | No |
| Script record and replay | Yes | No | Macro language | No |
| Built-in MCP server for AI agents | Yes (23 tools) | No | No | No |
| Multi-window panel layout | Yes | No | No | No |
| License | BSL 1.1 → MIT on 2030-05-31 | MIT | BSD-3-Clause | MIT |
Based on the default, publicly documented feature sets as of October 2026.
Features
Terminal and daily debugging
- HEX or text send/receive, optional timestamps, CRC selector, configurable line endings
- Flexible baud rates — arbitrary custom values plus presets up to 3,000,000
- Auto-send and auto-reply for repetitive test loops
- Quick commands for frequently used payloads
- DTR/RTS control for reset lines and boot modes
- Auto-wrapping toolbar — controls adapt to the window instead of being clipped
- Keep-input mode, auto-scroll, and a persistent terminal history
Industrial protocols
- Modbus RTU/TCP monitoring with 8 function codes and a configurable response timeout (50–5000 ms)
- Frame builder — visual Modbus frame construction with live hex preview
- PLC control — register polling with brand presets (Siemens, Mitsubishi, Delta, Omron)
- TCP/RTU bridge — expose a serial Modbus device to Modbus TCP clients
- HMI simulator — virtual Modbus slave (TCP/RTU) with configurable registers and coils
- Custom protocol patterns for matching and decoding proprietary frames
Analysis and visualization
- Real-time charts and communication statistics
- Serial oscilloscope with trigger and cursor measurement
- CAN bus analyzer — SLCAN parsing, ID filtering, per-ID statistics
- I²C/SPI debug — register read/write with configurable address and data width
- Register editor — CSV/JSON import/export with alarm-threshold monitoring
- Data logger — continuous CSV recording with timestamps
- Packet capture viewer — load and filter pcap files, per-packet inspection
Firmware and file transfer
- XMODEM / YMODEM / ZMODEM transfers
- STM32 ISP serial flashing
- ESP32 serial flashing
Automation and AI integration
- Script recording and playback with timing preserved
- CLI and agent mode with JSON output for CI and tooling
- MCP server — 23 tools for AI assistants, with client-IP access logging
- Auto-reply rules for scripted device conversations
Workflow and customization
- Multi-window interface — every panel runs as its own always-on-top OS window
- Bilingual UI (English/Chinese) with dark and light themes
- Plugin system — dynamic discovery, install, enable/disable and ZIP import
- Data persistence — configuration, logs, terminal history and warnings in
~/.serialrun/ - Global error system — unified notifications in the status bar with history
Requirements and permissions
| Platform | Requirement |
|---|---|
| Windows | Windows 10/11 x64 |
| macOS | macOS 11 or newer; arm64 for Apple Silicon, x64 for Intel |
| Linux | x86_64 X11 or Wayland session |
- USB serial drivers — install the vendor driver if your adapter is not detected:
CH340/CH341, CP210x, FTDI or PL2303. CDC-ACM devices work with the built-in driver. - Linux serial permissions — add your user to the serial group, then log out and back in:
sudo usermod -aG dialout $USER(uucpon Arch-based distributions). - Network — the MCP server listens on
127.0.0.1:9527by default and can be switched
to LAN mode in the GUI; the port is configurable. - Building from source — a current stable Rust toolchain; see Development.
MCP Server
SerialRUN embeds an MCP server so AI assistants and scripts can inspect the port,
send commands and read Modbus registers through the same connection the GUI uses.
Enable it in the GUI sidebar (default 127.0.0.1:9527); every call is written to the
access log with the client IP.
Connect in 30 seconds
The server speaks JSON-RPC 2.0 over TCP:
printf '%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_ports","arguments":{}}}' \
| nc 127.0.0.1 9527
From an MCP client, call tools such as connect, send_command, modbus_read orread. A stdio bridge and Python/Node examples are in
docs/MCP_API.md.
Available tools
| Tool | Description |
|---|---|
list_ports |
List all available serial ports |
connect |
Connect to serial port (baud rate, data bits, stop bits, parity, flow control) |
disconnect |
Disconnect from current connection |
send |
Send data (text or hex), no response wait |
read |
Read data from RX buffer (non-blocking, auto-captured by background monitor) |
send_command |
Send command and read response from buffer (recommended for AT commands) |
modbus_read |
Read Modbus RTU holding registers (with engineering value conversion) |
modbus_write |
Write Modbus RTU holding register |
plc_read |
Read all registers from a PLC preset brand |
plc_write |
Write to a PLC register by address |
status |
View connection status, byte counters, MCP server info |
get_device_info |
Port metadata (description, manufacturer, VID/PID) |
get_config |
Read UI settings (supports all or single key) |
set_config |
Update UI setting (syncs to GUI immediately) |
get_config_keys |
List all settable configuration keys |
clear_buffers |
Clear RX/TX buffers |
set_dtr |
Control the DTR line |
set_rts |
Control the RTS line |
get_access_log |
View access log with client IPs |
load_pcap |
Load a pcap capture file for analysis |
query_packets |
Query captured packets with filters |
get_packet |
Fetch a single captured packet |
pcap_stats |
Capture statistics and protocol summary |
All operations are logged with the client IP, multiple clients can connect
concurrently, and the access log is visible in the GUI settings panel.
Troubleshooting
| Symptom | Fix |
|---|---|
| macOS says the app is damaged | xattr -dr com.apple.quarantine /Applications/SerialRUN.app, then open again |
| macOS app does not start on an Intel Mac | Use the x64 DMG; the arm64 build only runs on Apple Silicon |
| Port is missing from the list | Install the USB-serial driver, use a data-capable cable, and close other programs holding the port |
| Permission denied opening the port on Linux | Add your user to dialout (uucp on Arch) and log in again |
| Custom baud rate is ignored | Fixed in v0.4.5 — update, then type the rate and press Enter or click Connect |
| MCP client cannot connect | Make sure MCP is enabled, nothing else uses port 9527, and firewall rules allow loopback |
| Linux app fails to start | Install the runtime dependencies listed in Download |
| Need diagnostics | Check the in-app log viewer and ~/.serialrun/ (logs.json, warnings.json) |
If a problem persists, open an issue with your OS version, adapter model, and the
relevant log lines. Device dumps may contain sensitive payloads — redact them first.
GUI Panels
All panels run as independent OS windows — drag, resize, and arrange freely. Child windows always stay on top of the main window.
| Panel | Description |
|---|---|
| Terminal | Serial TX/RX with HEX mode, timestamps, CRC checksums, auto-wrapping toolbar |
| Modbus | RTU monitor with 8 function codes, configurable response timeout (50-5000ms), TX/RX in terminal |
| PLC Control | Register polling with brand presets (Siemens, Mitsubishi, Delta, Omron), TX in terminal |
| TCP/RTU Bridge | Bridge Modbus TCP clients to serial RTU devices |
| HMI Simulator | Virtual Modbus slave with configurable registers and coils |
| CAN Bus | SLCAN frame capture, ID filtering, per-ID statistics |
| I2C/SPI | Register read/write debug tool, TX in terminal |
| Oscilloscope | Real-time waveform display with trigger and cursor measurement |
| File Transfer | XMODEM / YMODEM / ZMODEM protocol transfer |
| Frame Builder | Visual Modbus frame construction with live hex preview |
| Flasher | STM32 ISP and ESP32 serial flashing |
| Data Logger | Continuous CSV recording with timestamp |
| Register Editor | CSV/JSON import/export, alarm threshold monitoring |
| Chart | Multi-series real-time data visualization |
| Plugin Manager | Dynamic plugin discovery and loading |
| Log Viewer | Application log with filter, export, and persistence |
Project Structure
SerialRUN/
├── crates/
│ ├── serialrun-core/ # Core library (port, protocol, checksum, data logger)
│ ├── serialrun-cli/ # CLI application
│ ├── serialrun-gui/ # GUI application (egui/eframe)
│ ├── serialrun-mcp/ # MCP server for AI integration
│ ├── serialrun-mobile/ # Android USB serial adapter
│ ├── serialrun-mobile-app/ # Android app (eframe/egui)
│ └── serialrun-plugin-api/ # Plugin API definitions
├── plugins/
│ └── serialrun-example-plugin/ # Plugin example (C FFI)
├── assets/ # Embedded images and icons
├── docs/ # Documentation
├── tests/ # Integration tests
└── benches/ # Benchmarks
Data Persistence
SerialRUN automatically saves data to ~/.serialrun/ directory:
| File | Content |
|---|---|
config.toml |
Theme, language, baud rate settings |
logs.json |
Application logs (max 2000) |
terminal.json |
Terminal send/receive history (max 5000) |
warnings.json |
Warning/error history (max 1000) |
mcp_access_log.json |
MCP access log (max 1000) |
Plugin Development
#[no_mangle]
pub extern "C" fn plugin_get_info() -> *mut c_char { /* ... */ }
#[no_mangle]
pub extern "C" fn plugin_execute(command: *const c_char, params: *const c_char) -> *mut c_char { /* ... */ }
See plugins/serialrun-example-plugin/ for a complete example.
Development
cargo build # Build all crates
cargo test # Run tests
cargo bench # Run benchmarks
Build from Source
git clone https://github.com/YaoIsAI/SerialRUN.git
cd SerialRUN
cargo build --release
# Windows: target/release/serialrun.exe
# macOS: target/release/serialrun
# Linux: target/release/serialrun
# macOS .app bundle:
make app
| Platform | Target |
|---|---|
| Windows (MSVC) | cargo build --target x86_64-pc-windows-msvc --release |
| macOS (Apple Silicon) | cargo build --target aarch64-apple-darwin --release |
| macOS (Intel) | cargo build --target x86_64-apple-darwin --release |
| Linux | cargo build --target x86_64-unknown-linux-gnu --release |
See docs/BUILD.md for detailed platform-specific instructions.
Documentation
| Document | Description |
|---|---|
| docs/help_en.md | English user guide |
| docs/help_zh.md | Chinese user guide |
| docs/MANUAL.md | User manual |
| docs/MANUAL_CN.md | User manual (Chinese) |
| docs/MCP_API.md | MCP API reference |
| docs/BUILD.md | Build guide |
| docs/RELEASE_SOP.md | Release SOP (multi-platform CI) |
| CHANGELOG.md | Release history |
| CLAUDE.md | Agent operation guide |
Contributing
Contributions are welcome — bug reports, protocol corrections, translations and
pull requests all help.
- Found a bug or have an idea? Use the issue templates. Include OS, adapter
model, and steps to reproduce; redact serial payloads that contain secrets. - Sending a PR? Fork the repository, keep the change focused, and run
cargo fmt --allandcargo test --workspacebefore opening it. CI builds on
Windows, macOS and Linux. - Adding a plugin? Start from
plugins/serialrun-example-plugin/and see
docs/MCP_API.md for the tool surface. - Read CONTRIBUTING.md for the full workflow.
Roadmap
Planned work, subject to change — discuss priorities in
Discussions:
- Signed and notarized macOS builds (remove the Gatekeeper workaround)
- Community plugin search inside the Plugin Manager
- Broader PLC presets and Modbus function-code coverage
- Continued Android app parity with the desktop panels
Community and Support
- GitHub Discussions — questions, ideas and show-and-tell
- GitHub Issues — bug reports and feature requests
- www.serialrun.com — guides, downloads and project news
If SerialRUN helps your work, consider giving the project a star — it helps other
embedded developers find it.
Support the project
Donations help cover build machines, code-signing and hosting.
WeChat Pay
License
SerialRUN is released under the Business Source License 1.1. The
license converts to the MIT License on 2030-05-31, or earlier if aChange Date/Change License notice is published in LICENSE. Usage in
production is permitted except for offering SerialRUN itself as a commercial
serial-debugging product; see LICENSE for the exact terms.
Made with ❤️ for embedded developers
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi