Skip to content

Start

Start the Web UI through the root README; the command prints its URL. This guide begins after that server is running. The dsh process uses its invoking directory as the default filesystem location, but a fresh Web UI has no selected workspace until you add one.

This guide assumes you started the Web UI through the root README. Model changes take effect on the next request without restarting the server.

DSH routes its outbound requests — model calls, web search, page fetches, and MCP servers over HTTP — through the proxy named by the standard proxy environment variables. It reads them at launch; nothing else needs configuring. A few paths stay direct by design or by runtime limit, listed under “What stays direct” below.

This tutorial installs the published Python SDK, runs the shipped standalone minimal profile, and shows how to customize the same dsh profile from your own program.

This opt-in overlay adds a signed GitHub endpoint to dsh web. When a pull request in the configured repository changes from draft to ready for review, the rule creates a titled root Session under the repository’s Web Workspace and starts a read-only review prompt.

This overlay opts one dsh web process into Schedule reminders without changing the shipped default Web composition:

Terminal window
dsh web --patch apps/cli/config/examples/schedule/cordis.yml

The current overlay supports reminders created with a positive whole-number after_seconds, an absolute at target, or a fixed-rate every_seconds interval of at least 300 seconds. The model manages them through schedule_create, schedule_list, and schedule_delete; every result identifies delivery as session-local.

With this overlay enabled, a successfully opened Session with active reminders shows a read-only catalog in the conversation header. It lists the complete prompt, scheduled or overdue status, one-time or exact repeating cadence, browser-local target time, and relative time. The sidebar also places a non-interactive alarm after the title of grouped, flat, and search rows when their currently available projection value is non-empty. These surfaces never create, edit, delete, or acknowledge reminders, and a cold Session’s cached alarm can be briefly missing or stale.

The browser attaches its IANA zone to each prompt. Time-context tells the model to interpret otherwise-unqualified dates and times in that request’s browser zone. This assumption belongs to natural-language interpretation only: schedule_create.at must be either a strict RFC 3339 date-time with Z or a numeric offset, or { date, time, time_zone } with an explicit UTC or IANA Area/Location zone. Schedule does not retain or infer a Session default zone. Daylight-saving gaps are rejected, overlaps choose the first instant, and successful records keep only the resulting UTC target.

The original Session log owns each reminder. A live root Agent waits until it is fully idle, then queues a normal follow-up turn in that conversation. It never steers current work and adds no separate receipt or reminder card. Closing the process or leaving the Session cold stops its in-memory timer without deleting the record; reopening that same Session restores the wait and delivers an overdue reminder. Reading cold history never activates it, and a fork does not inherit its parent’s reminders.

Every reminders stay aligned to their creation time. If one is overdue, only its latest due occurrence is presented and the next target remains on the original fixed-rate sequence. All distinct Every records overdue at the same idle decision are combined into one follow-up with one occurrence each; missed intervals do not create a backlog. Due one-shots run before that batch. Calendar and Cron expressions are not supported.

Create and actual delete operations acknowledge success only after Session persistence confirms their event prefix. Schedule does not provide browser, operating-system, email, SMS, or other external notification. A durable dispatch records that the follow-up was queued; it does not acknowledge model success or user receipt.

These three default-off reference configurations connect one memory system to DSH through @deepseek-ai/dsh-mcp-client. Pick one, or copy the same generic MCP row for another server.

These third-party configurations are provided as interoperability examples only. Their inclusion does not imply endorsement, recommendation, partnership, or ongoing support by DeepSeek.

Read this before changing anything under packages/. It assumes you know Cordis; if you do not, start with the primer or the tutorial.

We recommend using an agent to explore the codebase and understand its architecture.