Back to home@utensil

dsh-pi-tui-mono

An experiment on how compat between pi and dsh, focus on TUI drop-in experience for the part I use

Stars
0
Language
JavaScript
Created
Aug 17, 2026
Updated
Aug 18, 2026
GitHub repo

Introduction

dsh-pi-tui-mono

Use pi's terminal experience inside DeepSeek Harness — the same look, the same extensions, migrated from your existing pi installation.

If you use pi's terminal UI and want that exact experience while running DeepSeek Harness (dsh) underneath, this monorepo is for you. It is a drop-in: the front door is pi's real InteractiveMode (not a reimplementation — the look ships with pi and updates with it), the agent underneath is dsh, and pi's extensions run as dsh plugins. A migration kit moves your installed pi settings, themes, and extensions over.

Focus: TUI. The terminal is where this project lives. The TUI comes from pi; the agent, tools, sessions, and credentials are dsh; pi extensions are bridged in as dsh plugins. Nothing here replaces dsh's headless or web surfaces.

The drop-in experience

pithis project (dsh + tui-pi profile)
Terminal UIpi's InteractiveModepi's InteractiveMode (same code)
Themes~/.pi/agent/themes + built-insinherited, or migrated into the profile
Agentpidsh (agent-loop, tools, sessions, credentials)
Instructionspi's AGENTS.mdthe same AGENTS.md, bootstrapped into the dsh agent
Extensionspi extension packagesthe same packages, mounted as dsh plugins via pi2dsh
Slash commands/model, /export, /quit, …the same pi surfaces, backed by dsh

Packages

This is a pnpm workspace. The three packages are neutral — they never hardcode a model, a provider, a theme, or an extension list; everything comes from configuration, with @dsh-pi/migrate writing that configuration from your pi installation.

PackageWhat it does
@dsh-pi/tuiThe pi-TUI front door: mounts pi's InteractiveMode over the dsh agent and translates dsh events to pi session events 1:1.
@dsh-pi/extensionsPi extensions as dsh plugins: a thin layer over pi2dsh that mounts local extension packages, exposes a mount registry, and emits TUI-bound extension events.
@dsh-pi/migrateThe migration kit: reads an existing pi installation's settings, themes, and extensions, and writes them into a dsh profile as neutral configuration.

Install

You can point your agent at this repo to install, set up, and migrate everything. The agent-facing instructions live in AGENTS.md; the short version:

# 1. Install the bundle into a profile (the `tui-pi` name is a convention).
dsh plugin --profile tui-pi add github:utensil/dsh-pi-tui-mono
dsh plugin --profile tui-pi add @dsh-pi/tui
dsh plugin --profile tui-pi add @dsh-pi/extensions

# 2. Migrate your existing pi installation (settings, theme, extensions).
npx @dsh-pi/migrate                       # dry run
npx @dsh-pi/migrate --apply               # write the profile configuration
#    then install the printed `dsh plugin add <pi-package>` commands.

# 3. Go.
dsh --profile tui-pi
dsh --profile tui-pi --resume <session-id>

Requirements: dsh CLI, Node.js ^22.19 || >=24, pnpm.

Development

pnpm install
pnpm test                 # runs every package's test suite
bash scripts/dev-link.sh  # link the workspace into the ~/.dsh/profiles/tui-pi profile

See docs/parity.md for the verified feature matrix.

License

MIT