Nullprint
All tools / DeepSeek dsh

How to use DeepSeek dsh with Nullprint

Let dsh, DeepSeek's agent harness, create profiles, open their browsers and read pages in Nullprint over MCP. Six steps, and every command can be copied with one click.

Written for dsh 0.2.1-rc.2, a preview release. Its interface may change in later versions.

What it is

dsh is DeepSeek's official agent harness (npm package @deepseek-ai/dsh). dsh web opens a chat page in your browser. With the Nullprint MCP server it can list, create, start and stop your profiles and browse inside them.

Set it up in six steps

  1. Check Node.js

    node -v

    You need v22 or later. If it's missing or older, download it from nodejs.org.

  2. Install dsh and nullprint-mcp

    macOS / Linux:

    sudo npm install -g @deepseek-ai/dsh nullprint-mcp

    Windows: open the terminal as administrator and run it without sudo:

    npm install -g @deepseek-ai/dsh nullprint-mcp
  3. Add Nullprint to dsh

    Generate the web profile's config files:

    macOS / Linux:

    dsh --profile web --dump-config > /dev/null

    Windows (PowerShell):

    dsh --profile web --dump-config > $null

    Leaving out > /dev/null (> $null on Windows) is fine too; it just prints the config as well, which is how the video does it.

    Open ~/.dsh/profiles/web/cordis.patch.yml (Windows: %USERPROFILE%\.dsh\profiles\web\cordis.patch.yml) in a text editor. Delete the [] at the end first, then paste:

    - insert:
        - id: mcp-nullprint
          name: "@deepseek-ai/dsh-mcp-client"
          config:
            serverName: nullprint
            transport: stdio
            command: nullprint-mcp
            args: []
            env: {}
    Copy these 9 lines as they are. transport and args are required (write args: [] even with no arguments): without them the dsh web app silently skips the plugin, with no error. In our test env: {} could be left out, but keeping it is safer. If you leave the [] in, dsh won't start and reports end of the stream or a document separator is expected.
  4. Set your DeepSeek API key

    Create a key on the DeepSeek platform (platform.deepseek.com), then in the terminal:

    macOS / Linux:

    export DEEPSEEK_API_KEY=your-key

    Windows (PowerShell):

    $env:DEEPSEEK_API_KEY="your-key"

    This only lasts for the current terminal, so run step 5 in the same window.

  5. Start dsh and check the connection

    Open Nullprint and sign in first. Then run:

    dsh web

    Open the address it prints. To check the connection, ask dsh:

    Call nullprint's profiles_list

    It's connected when your profiles come back.

  6. Optional: talk to it

    Install Voicefall (free for now), hold the right Option key and speak, for example: “Use Nullprint to create a new profile, open YouTube, find today's most popular videos and list the top ten for me.”

Headless mode, using dsh from another computer, and troubleshooting: full dsh guide

Why they work well together

FAQ

dsh won't start and says “end of the stream or a document separator is expected”.

The [] line is still at the end of cordis.patch.yml. Delete it and start dsh again.

Asking for profiles_list does nothing.

Make sure Nullprint is open and signed in, and that the block has all of transport, args and env. If any of them is missing, the dsh web app silently skips the plugin.

Does DeepSeek see my pages?

Your requests, profile names and the page content dsh reads go through DeepSeek's servers. Don't hand sensitive profiles to an AI.

Visit DeepSeek platform ↗Try Nullprint free for 7 days

Also works with