Foreword¶
In the plugin-based extensions of DSH, a common practice in serial port debugging is to copy the board logs to the model, have the model generate commands, and then manually return to the terminal to execute and verify. DSH Serial Console integrates this process into a single console: users and AI models share the same auditable embedded serial session.
Below is an introduction to the community plugin @infinitepersistence/dsh-serial-console maintained by InfinitePersistence, including its capabilities, how to install and enable it, and current limitations to be aware of.
What This Is¶
DSH Serial Console is a community serial console project for DeepSeek Harness. It combines the browser terminal, model serial port tools, board output, and session audit logs into a single session.
The project is maintained by the InfinitePersistence community under the MIT License. It is not an official DeepSeek product or official endorsement.
Core Capabilities¶
Browser Terminal¶
- View board boot logs and real-time serial port output in the browser.
- Use the keyboard to directly operate the device, including Tab completion, arrow keys, backspace, paste, input methods, and common terminal control keys.
- Select serial port, baud rate, and line-ending modes like CR, LF, CRLF.
- Switch between Text and HEX views.
- In the Text terminal, use
Ctrl+Fto search historical output and navigate between matches.
Shared Serial Port Between User and Model¶
DSH Serial Console allows the DeepSeek model and the user to operate the same serial port, rather than occupying the device separately.
It supports viewing the model’s thinking, tool progress, and final responses directly on the right side of the serial port page. The user and the model share the send queue, but input leases at the entire command level are not yet provided.
Model Tools¶
The plugin provides the following model tools:
| Tool | Purpose |
|---|---|
serial_list_ports |
Enumerate available serial ports |
serial_connect |
Connect to a device |
serial_send |
Send text or raw bytes |
serial_read |
Read a bounded event window |
serial_expect |
Wait for a prompt or specified content |
serial_mark |
Mark key evidence locations |
serial_disconnect |
Safely disconnect from the device |
Audit and Source Marking¶
The plugin maintains an independent serial port audit log and supports exporting session events.
It uses U/M/B/S source markers for differentiation:
U: User inputM: Model inputB: Board outputS: Status/Audit
Installation and Enabling¶
Environment Requirements¶
- Node.js
^22.19.0or>=24.0.0 - DeepSeek Harness
0.1.0-rc.7 - pnpm
11.22.0 - Windows or Linux serial port environment
Installing When DSH Is Already Present¶
If DSH 0.1.0-rc.7 is already installed, run:
dsh plugin --profile web add '@infinitepersistence/dsh-serial-console@0.1.0-rc.4' --save-exact
After installation, launch using the same profile:
dsh --profile web
Installation and startup must use the same profile. After upgrading, restart the Host and refresh the page in the browser using Ctrl+F5.
Accessing the Page¶
After startup, visit:
http://127.0.0.1:3080
Enter any conversation and select the “Serial Port” tab.
Installing as a Library¶
If you only want to embed the console as a library in your own program, you can run:
pnpm add '@infinitepersistence/dsh-serial-console@0.1.0-rc.4' --save-exact
Building from Source¶
git clone https://github.com/InfinitePersistence/dsh-serial-console.git
cd dsh-serial-console
corepack enable
pnpm install
pnpm build
Typical Usage¶
Finding Historical Output¶
When the terminal is focused, press:
Ctrl+F
After entering content, matches will be highlighted. Navigation rules are as follows:
Enter: Jump to the next matchShift+Enter: Jump to the previous matchEsc: Close the search
Connecting to Serial Port Using Model Tools¶
You can do X first, then Y:
- Use
serial_list_portsto view available serial ports. - Use
serial_connectto connect to the device. - Use
serial_sendto send commands. - Use
serial_readorserial_expectto read output. - If needed, execute
serial_markto mark key locations. - When finished, use
serial_disconnectto disconnect.
Use Cases and Notes¶
Who Is This For¶
This is suitable for developers who need to debug serial port devices in the browser and wish to view user inputs, model calls, and board outputs in the same DSH session. It is also suitable for debugging workflows that need to retain serial port audit logs to review the order of operations.
Current Limitations¶
- Only one active physical serial port can be managed at a time.
- Automatic reconnection is not currently supported, and commands are not automatically replayed after reconnection.
- The current Text mode relies on board echo; when Shell echo is disabled, characters being typed by the user are not displayed.
- The user and model share the send queue, but input leases at the entire command level are not yet provided.
- Terminal checkpoints are only saved in the current browser’s memory; the view is rebuilt after page refresh, plugin reload, or gaps in events.
- Clearing the view in the browser does not delete records on the Host side.
Security Notes¶
The plugin runs with the permissions of the current dsh process. It is recommended to review the source code, dependencies, and licenses before installation. License information for third-party components can be found in THIRD_PARTY_NOTICES.md.
Links¶
- GitHub repository: https://github.com/InfinitePersistence/dsh-serial-console
- Package name:
@infinitepersistence/dsh-serial-console