Skip to content

Back to the catalog

rlaope/deepseek-bot
github.comrepo

rlaope/deepseek-bot

deepseek-bot is an MIT-licensed plugin for DeepSeek Harness that runs one always-on agent in the terminal (dsh), Slack, Discord and Telegram. Conversations are durable sessions with persona, USER.md and MEMORY.md files and a recall index scoped per channel. Commands run in a macOS Seatbelt sandbox, destructive ones need in-chat approval, and injected instructions are flagged. Slack is verified live; Discord and Telegram only against mocks.

TL;DR Adds persistent memory, a sandbox, approval prompts and chat gateways to DeepSeek Harness so one agent works across terminal, Slack, Discord and Telegram.
Document

What it claims

deepseek-bot is an MIT plugin for DeepSeek Harness that puts one persistent agent behind a fullscreen terminal (dsh) and Slack, Discord and Telegram. Beyond chat, the terminal agent writes docx, xlsx and pptx files, reads links with a headless browser, looks at images and calls MCP tools. It uses DeepSeek's own API by default. OpenGateway, the project's sponsor, or any OpenAI-compatible endpoint can replace it. It is an independent project, not affiliated with DeepSeek.

How it works

Each turn loads a persona, USER.md, MEMORY.md, a memory/ directory and a recall index over past conversations. Recall stays inside its own channel, and the agent treats "not found" as a valid answer. In messengers it replies in the thread when mentioned. It shows 👀, then progress, then an end mark. stop ends a turn, usage shows tokens, and be quiet mutes it (🫡) until it is named again.

flowchart TD
  M[Message or file text] --> F{Tries to give orders?}
  F -- yes --> FL[Flagged before model]
  F -- no --> A[Model turn]
  FL --> A
  A --> C{Deletes or overwrites?}
  C -- no --> S[Run in Seatbelt sandbox]
  C -- yes --> P{Requester: Allow / Deny}
  P -- Allow --> S
  P -- Deny --> X[Not run]
  A --> MCP[MCP server, outside sandbox]

The Seatbelt sandbox writes only to its own workspace and cannot read tokens or credentials. Only the person who asked can approve a destructive command.

How to use it

It requires macOS, Node.js 22+, the DeepSeek Harness app and a DeepSeek API key. If the harness already has a key, the installer reuses it. If the app is missing, the installer offers to download it from DeepSeek's server and checks it against the build's published hash. Rerunning the installer, or running dsh update, updates the plugin.

curl -fsSL https://raw.githubusercontent.com/rlaope/deepseek-bot/master/install.sh | bash
dsh
dsh gateway setup      # connect Slack, Telegram or Discord: ↑↓ and Enter
dsh gateway status     # is it up, and where it found its key

On Telegram and Discord, anyone who finds the bot can message it. Restrict access with:

dsh gateway setup telegram --users <your id>

Limits

  • macOS only. On Windows the terminal can be run by hand, but the installer, services and sandbox are not ported.
  • The sandbox is a policy boundary, not a separate OS user. MCP servers run outside it, so the README advises adding only trusted ones.
  • Pin your Harness version. DeepSeek Harness is a release candidate, and the project depends on its internals.
  • Messenger testing is uneven. Slack and the terminal are in live use. Discord and Telegram are tested only against mocked APIs.
  • Model scenarios are not in CI. Unit suites run in CI against fakes. Scenarios against a real model run by hand, or daily if service/install-scenarios.sh schedules them.
  • Unverified items are listed in PLAN.md, item by item.
  • The demo used OpenGateway, not the default DeepSeek API.

Organisations named here

  • DeepSeek
  • OpenGateway

Technologies named here

  • DeepSeek Harness
  • dsh
  • Model Context Protocol
  • Slack
  • Discord
  • Node.js
  • macOS
  • Seatbelt
  • deepseek-bot
  • OpenGateway
  • Telegram

Techniques named here

  • Sandboxing

Concepts named here

  • Human approval for destructive actions
  • Persistent agent memory
  • Sandboxed command execution