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+F to 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 input
  • M: Model input
  • B: Board output
  • S: Status/Audit

Installation and Enabling

Environment Requirements

  • Node.js ^22.19.0 or >=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 match
  • Shift+Enter: Jump to the previous match
  • Esc: Close the search

Connecting to Serial Port Using Model Tools

You can do X first, then Y:

  1. Use serial_list_ports to view available serial ports.
  2. Use serial_connect to connect to the device.
  3. Use serial_send to send commands.
  4. Use serial_read or serial_expect to read output.
  5. If needed, execute serial_mark to mark key locations.
  6. When finished, use serial_disconnect to 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