DSH Plugins Marketplace

DSH Plugins

Plugins

/

UI & Experience

/

dsh-pushups

d

dsh-pushups

Manifest valid

Counts the prompts you send in the Web GUI and turns them into a push-up debt, shown as a chip under the composer with one-click pay-off, partial payments and a day streak.

UI (client)hasBundlePatch

dsh-pushups

One prompt = one push-up. Vibe code now, pay in push-ups later.

Typing is not cardio. It just has better marketing.

dsh-pushups is a small DeepSeek Harness (DSH) plugin for the Web GUI: every message you send to the assistant becomes one push-up of debt. Stand up, do the set, pay it off — in one go or in parts.

Why this exists

You are a mammal running a chat interface. Around hour six of "just one more prompt" your spine has quietly become a Jenga tower with a deadline, your legs have filed for remote work, and "I'll stretch in a minute" has been in the backlog since Tuesday.

Here's the trap: talking to a machine feels like doing something. The tokens stream, the diff appears, the dopamine lands — and none of it requires your body. So the body gets the leftovers: the stiff neck, the 4 PM fog, the vague memory of having shoulders.

The usual remedies all lost to a notification that says "later". Later is not a time. Later is where good intentions go to be archived.

So the deal is stupid on purpose: one prompt = one push-up. Not a workout plan, not a wellness journey — a number under the composer that grows every time you write to an AI instead of moving your own body. When it gets annoying enough, you get up. That's the whole mechanism.

It will not fix your posture. It will make it slightly less fictional.

Physics doesn't read intentions. Gravity is the only reviewer that never leaves "looks good to me".

┌──────────────────────────────────────────────┐
│  ... chat ...                                │
│  ┌────────────────────────────────────────┐  │
│  │  message the assistant                 │  │
│  └────────────────────────────────────────┘  │
│              🏋 Push-ups: 7                  │
└──────────────────────────────────────────────┘

Click the chip, and a dialog shows the lifetime message count, the unpaid debt, the streak of days closed without debt, recent payments, partial-payment buttons (+5, +10, +25, all), a custom amount, and a language switch (English / Русский / 中文 — English by default).

Next to the chip sits a one-click ✓ button: when you have already done the push-ups, it pays the whole debt without opening anything. The dialog stays for the details.

What counts

One admitted human prompt: a session event user/message whose source is { kind: 'user', rpcId: <string> }. This is exactly the signal DSH itself uses for "a human typed this in the Web GUI".

Not counted:

  • retries — user/message is appended once per admitted message, never per attempt;
  • automatic goal continuation rounds (source.kind === 'goal');
  • scheduled, webhook, tool-context and other machine-produced user-role messages;
  • subagent work — child sessions carry no rpcId;
  • messages sent before the plugin was installed (the counter starts at zero on install);
  • prompts sent from other clients (TUI, ACP, SDK) — the rpcId discriminator is Web-only.

Requirements

  • DSH 0.2.0-rc.1 or newer with the web profile;
  • no build step: the Client half is plain JavaScript.

Install

From an absolute path:

plugin_manager
  action: install_bundle
  target: /absolute/path/to/dsh-pushups

From a git checkout:

git clone https://github.com/ivanlebedvideo/dsh-pushups.git

then install that directory the same way. install_bundle adds the package to the profile, selects the bundle and applies its patch; a new bundle activates without a server restart, but reload the page (Ctrl+R) so the browser loads the new Client module.

Disable it at any time:

plugin_manager
  action: set_plugin
  target: pushups
  enabled: false

Data

The ledger is a single JSON file owned by the Host half:

$DSH_HOME/storages/pushups/state.json      # default: ~/.dsh/storages/pushups/state.json

It holds the install timestamp, the lifetime count, the current debt, the streak, bounded per-day counters (400 days) and the last 500 payments. The Host also serves three loopback routes for the Client: GET /pushups/state, POST /pushups/pay, POST /pushups/reset. They are unauthenticated by design — DSH's web server binds 127.0.0.1 and this data is a push-up counter, not a secret.

Agent tool

The Host registers one read-only tool, pushups_status, so the assistant can answer "сколько я должен?" with the live number. It never adds nudges to replies on its own.

Rules baked in

  • 1 message = 1 push-up; no daily cap, no coefficient — a cap is permission to cheat;
  • debt carries over to the next day and never expires;
  • partial payments are allowed;
  • a day that ends with debt breaks the streak; a day closed at zero extends it;
  • "Reset everything" requires a second click and zeroes lifetime, debt and history;
  • nothing blocks sending — blocking would make you write less, not move more.

Limitations

  • Web GUI only; the counter is global across all sessions and projects of this installation.
  • Day boundaries follow the Host machine's local time zone.
  • The streak advances when the Host observes a day rollover (on any message, payment or state read), so it is an honest approximation, not a cron job.
  • No data migration: the state file carries a version and a mismatched version starts fresh.

License

MIT.

Comments

Loading…

Similar plugins

dsh-prompt-enhance

One-click prompt enhancement for the DeepSeek Harness composer: a chip beside the model selector rewrites the draft into a structured prompt using the session's own model.

UI & ExperienceManifest valid

★ 0

MIT

JavaScript

dsh plugin --profile web add dsh-prompt-enhance

by LiuCrane

DSH Web UI plugin: model provider chip beside the composer plus DeepSeek and OpenCode Go balances below it, only for providers the profile configures.

Manifest valid

★ 0

JavaScript

Oct 3, 2026

dsh plugin --profile web add dsh-easy-balance

by Nihao7-L

One-click prompt rewriting in the DSH composer — keep going for up to 5 rounds, diff every change, and jump back to any version.

UI & ExperienceManifest valid

★ 0

MIT

JavaScript

Oct 20, 2026

dsh plugin --profile web add dsh-prompt-chain

by SanYe-SanJiu

Windows-only process control for the harness: a sidebar button that shuts DSH down through the host's own graceful exit path, an app-window / normal-tab switch on the Plugins card that rewrites the de

UI & ExperienceManifest valid

★ 0

MIT

JavaScript

Oct 21, 2026

dsh plugin --profile web add dsh-power-switch

Expand button for the DSH Web UI composer — appears at 3+ lines, stretches to near-fullscreen height, auto-collapses on send, and Enter inserts newlines in expanded mode.

UI & ExperienceManifest valid

★ 0

dsh plugin --profile web add dsh-composer-stretch

by 1514100951

DSH web 用量/费用悬浮按钮插件:账户余额、峰谷时段、今日/本会话消费估算与 token 统计(含设置开关)

Terminal & ClientsManifest valid

★ 3

MIT

JavaScript

Aug 27, 2026

dsh plugin --profile web add dsh-usage-footer