agi-fans
oh-my-dsh
omdsh is a plugin-first terminal coding agent built on DeepSeek Harness, with an interaction model inspired by oh-my-pi.
- Stars
- 9
- Language
- TypeScript
- Created
- Aug 15, 2026
- Updated
- Aug 15, 2026
Introduction
oh-my-dsh
English | 简体中文
omdsh is a plugin-first terminal coding agent built on DeepSeek Harness, with an interaction model inspired by oh-my-pi.

Why oh-my-dsh
DeepSeek Harness provides a capable agent runtime and a strong architectural idea: everything is a plugin. oh-my-dsh brings that runtime into a focused, keyboard-driven terminal experience without creating a second agent core or hiding the Harness behind a parallel abstraction.
The TUI is deliberately a presentation and interaction layer. Sessions, tools, permissions, models, skills, MCP servers, commands, and telemetry continue to come from Harness services and plugins; omdsh composes them into a terminal application and adds the UI behavior needed to use them comfortably.
Design principles
- Harness-native. Use published DeepSeek Harness packages as the source of truth for agent behavior, state, and lifecycle.
- Everything remains a plugin. New capabilities belong in Cordis plugins, services, providers, consumers, or app composition instead of a growing monolithic TUI.
- One owner for each concern.
@agi-fans/dsh-tuiowns terminal presentation and interaction, while@agi-fans/oh-my-dshowns startup and runtime composition. - Terminal-first interaction. Keep the composer anchored, render incrementally, respect display-cell width, and make common workflows available from the keyboard.
- Progressive disclosure. Keep the default view calm and concise while making tool output, telemetry, settings, and session details discoverable on demand.
- References stay references. The projects under
refs/are read-only material for API and UX research; omdsh runtime code depends only on published packages and its own workspace packages.
What it supports
- Streaming conversations with durable sessions, resume, search, retry, compact, and Markdown export
- Plugin-owned slash commands, interactive settings, model and reasoning selection, and access modes
- Tool calls, approval and question flows, collapsible output, and live session telemetry
- Project-aware
@file search, clipboard image paste, prompt history, and queued follow-up messages - Harness skills and MCP servers discovered from project and user configuration
- Responsive terminal layout, themes, transcript scrolling, and non-TTY fallback behavior
Architecture
DeepSeek Harness plugins and services
│
▼
@agi-fans/dsh-tui — terminal capability seam
│
▼
@agi-fans/oh-my-dsh — boot and plugin composition
The TUI package is split internally into a service definition, a local terminal provider, and an interactive runner. This keeps terminal ownership isolated from event projection and rendering, and leaves room for other providers or consumers without coupling them to the local TTY implementation. See the architecture overview and plugin architecture review for more detail.
Installation
Requirements: Node.js 22.19 or newer (Node.js 24 is also supported) and a DeepSeek API key for live model turns.
npm install --global @agi-fans/oh-my-dsh
omdsh
Run /login inside omdsh to open the DeepSeek API-key dashboard, paste a key into a masked prompt, validate it, and save it through the Harness credential store. A key chosen interactively takes priority over an inherited DEEPSEEK_API_KEY on the next model request and across restarts. Use /logout to remove that omdsh-managed choice and fall back to DEEPSEEK_API_KEY when one is available. CI and externally managed environments can continue using the environment variable without running /login.
You can also run omdsh without installing it globally:
npx @agi-fans/oh-my-dsh
Model settings can also come from $DSH_HOME/settings.yaml, while credentials follow the DeepSeek Harness credential resolution flow. Skills and MCP configuration are documented in Skills and MCP.
Development
pnpm install
pnpm omdsh "list files" # run from source
pnpm typecheck # check TypeScript
pnpm test # unit and pipe-mode tests
pnpm build # build all workspace packages
pnpm smoke # interactive PTY smoke test
pnpm smoke:happy # mock-LLM happy path
The checkouts in refs/deepseek-harness and refs/oh-my-pi are read-only references. Do not use them as runtime dependencies or modify them while developing omdsh.
Changelog
User-visible changes and release history are tracked in CHANGELOG.md.
Acknowledgements
oh-my-dsh exists because of two projects:
- DeepSeek Harness provides the runtime foundation, plugin architecture, and the conviction that agent capabilities should be composable rather than embedded in one application.
- oh-my-pi demonstrates how thoughtful terminal interaction, compact information design, and careful keyboard workflows can make an agent feel fast and approachable.
Thank you to both projects and their contributors. omdsh is an independent community project: it is built on DeepSeek Harness and learns from OMP, but is not an official distribution of either project.
License
oh-my-dsh is available under the MIT License.