bbcom is a Tauri desktop tool for embedded developers who need a fast, inspectable serial console. It combines multi-session serial TX/RX, protocol parsing, Modbus master tooling, waveform plotting, export, and an optional Z.ai-powered command/log assistant in one application.
For module ownership, data-flow invariants, and runtime topology, see ARCHITECTURE.md.
- Multi-session serial console with independent connection state, TX/RX counters, pause/resume, search, direction filters, and restored recent captures.
- High-throughput rendering path using a bounded O(1) RX queue, threshold/ timer-based runtime drains, virtual scrolling, and per-session frame invalidation.
- Modbus master for RTU and raw-PDU transports, FC01-FC06/FC10 operations, contiguous read/write batching, periodic read/write loops, replay sources, and register-to-waveform bindings.
- Protocol tools for delimiter, fixed-length, and length-field frame parsing with bounded resynchronization and absolute stream offsets.
- Waveform plotting for numeric RX streams or Modbus register samples, with channel visibility, statistics, autoscale, pause, clear, and CSV export.
- Automation helpers including ordered send/delay macros, RX-triggered responses, quick commands, send history, highlights, connection presets, DTR/RTS control, and a 250 ms BREAK pulse.
- Export and logging to TXT, CSV, JSONL, and BIN through bounded backend sessions, opaque save grants, incremental batches, and atomic replacement.
- AI assistant for Linux/BusyBox command generation and serial-log analysis, with model validation, request limits/cancellation, role-separated prompts, and risk classification.
- Desktop polish with dark/light themes, English/Chinese UI catalogs, persisted settings, keyboard shortcuts, and installer releases with explicit per-platform signing status.
| Main Window | AI Assistant |
![]() |
![]() |
| Modbus Registers | Waveform Plot |
![]() |
![]() |
- Display modes: HEX, ASCII, UTF-8, ANSI, and HEX+ASCII split view.
- Port settings: baud rate, data bits, stop bits, parity, flow control, DTR, and RTS.
- Hot-plug port refresh, reconnect attempts, millisecond timestamps, per-frame and merged views.
- Cyclic sending, quick commands, send history, and serialized 4 KiB write chunks without unsafe automatic retransmission after partial failure.
- Trigger rules that match text or HEX in RX and send a response with cooldown.
- Keyword highlights scoped to All/TX/RX with text or HEX matching.
- Parser presets for CRLF, NMEA 0183, AT/modem, SCPI, NUL-delimited binary, and length-prefixed frames.
- Modbus
.bbregimport/export for register tables and replay data sources. - Export filters by time range and direction.
- Checksum, CRC-8, CRC-16/X-25, CRC-16/Modbus, and CRC-32 calculations.
- Standalone always-on-top assistant window.
- Natural-language prompt to terminal command, with safe/caution/dangerous risk classification.
- Serial-log Q&A scoped to the current session context.
- Z.ai model registry shared between frontend validation and Rust dispatch.
- Explicit cancellation, 60-second timeout, bounded context, and at most two concurrent requests without a hidden queue.
| Layer | Technology |
|---|---|
| Desktop | Tauri v2 |
| Backend | Rust 2024, tokio, serde, thiserror, crc, zai-rs |
| Frontend | Vue 3 Composition API + TypeScript |
| UI | Naive UI, @lucide/vue |
| State | Pinia |
| Build | Vite 8, pnpm |
| Serial | tauri-plugin-serialplugin |
| Persistence | bounded localStorage snapshots + OS credential store for API keys |
| Test/Quality | Vitest, V8 coverage, WebdriverIO/Jasmine, ESLint, Prettier, cargo test, clippy, llvm-cov, criterion |
- Rust 1.97.0 (edition 2024)
- Node.js 24.13.0
- pnpm 11.11.0
cargo-llvm-cov0.8.7 andcargo-audit0.22.2- ShellCheck available on
PATH - OS permission to access serial ports
pnpm install --frozen-lockfile provisions the exact Node.js runtime declared by
the repository, and project scripts run with that managed runtime.
Install the local quality-gate tools before making a commit:
cargo install cargo-llvm-cov --version 0.8.7 --locked
cargo install cargo-audit --version 0.22.2 --locked
# ShellCheck: macOS `brew install shellcheck`; Ubuntu/Debian
# `sudo apt-get install shellcheck`; Windows `choco install shellcheck`.On Linux you may need to add your user to the serial group, for example:
sudo usermod -aG dialout "$USER"pnpm install
pnpm tauri:devFrontend-only development:
pnpm devProduction builds:
pnpm build
pnpm tauri:buildThe helper script wraps the same common flows:
chmod +x scripts/dev.sh
./scripts/dev.sh install
./scripts/dev.sh dev
./scripts/dev.sh build| Document | Description |
|---|---|
| ARCHITECTURE.md | Topology, runtime ownership, data flow, and boundaries |
| CONTRIBUTING.md | Quality gate, IPC contracts, release process, and PR rules |
| CHANGELOG.md | Version history |
| SECURITY.md | Vulnerability reporting |
Which platforms are supported?
bbcom targets Windows, macOS, and Linux through Tauri v2.
How do I get a Z.ai API key?
Create a key at open.bigmodel.cn and enter it in the AI assistant settings panel.
Why is my serial port missing?
- Confirm the device is connected and the driver is installed.
- On Linux, check group permissions such as
dialout. - On macOS, check
ls /dev/cu.*. - Reopen the port list after plugging in the device.
See CONTRIBUTING.md for the local quality gate, IPC contract workflow, and release checklist.
This project is licensed under the MIT License.



