Ethical · Recoverable · Instant

Remote control
for deployed apps.

Switch any client app into read-only, limited, or locked mode in real time — without touching the codebase. One signal. Zero data risk. Full recovery.

deadfuse.js
import DeadFuse from "@surelle-ha/dead-fuse";

DeadFuse.activate({
  projectId: "acme-dashboard",
  token:     "prod-token-here",

  onReadonly: () => showBanner(),
  onLocked:   (msg) => lockScreen(msg),
});
Connected · ACTIVE
8Project states
Realtime sync
<100msBroadcast latency

Works with any frontend framework

·····
How it works

One dashboard.
Instant control.

A lightweight pub/sub architecture connects your dashboard to every deployed client app in real time — no redeployment needed.

01

Create a project

Add your client app to the dashboard. Get a project key and generate instance tokens for each deployment.

02

Embed the SDK

npm install once. Call DeadFuse.activate() with your credentials and define your state callbacks.

03

Deploy & connect

The SDK opens a realtime channel. Your client app receives the current state instantly on startup.

04

Flip the switch

Change state from the dashboard. All connected clients respond within milliseconds. No redeployment.

Dashboard

Admin UI · REST API

Realtime broadcast

Client App

dead-fuse SDK · Any framework

Project states

Eight states.
Total coverage.

From a friendly warning banner to a full lockdown — every scenario a freelancer faces is built in.

ACTIVE

Full access. App runs normally.

onActive()
WARNING

Sends a warning message to all clients.

onWarning(msg)
READONLYBlocks writes

Blocks all write operations automatically.

onReadonly()
LIMITED

Custom partial restriction via handler.

onLimited()
LOCKEDBlocks writes

Full block. Writes intercepted + custom UI.

onLocked(msg)
EXPIREDBlocks writes

Contract ended. Triggers expiry handler.

onExpired()
SLEEPBlocks writes

App temporarily paused.

onSleep()
SELF_DESTRUCTBlocks writes

Fully custom — you define what happens.

onSelfDestruct()
Philosophy

Built on trust,
not pressure.

DeadFuse is designed for professional, ethical client relationships. It never destroys data. It always allows recovery.

Never deletes client data — only sends control signals
Read-only as default enforcement — not destruction
Full recovery available instantly after payment
Use WARNING before escalating to LOCKED
Client controls the deployed app — you send the signal
Always disclose DeadFuse in your contract terms
SDK

Install once.
Control forever.

One package, two lines of config, infinite control.

terminal
$ npm install @surelle-ha/dead-fuse

# or
$ pnpm add @surelle-ha/dead-fuse
import { useEffect } from "react";
import DeadFuse from "@surelle-ha/dead-fuse";

export function App() {
  useEffect(() => {
    DeadFuse.activate({
      projectId: globalThis._importMeta_.env.VITE_FUSE_PROJECT_ID,
      token:     globalThis._importMeta_.env.VITE_FUSE_TOKEN,
      onLocked: (msg) => showLockScreen(msg),
    });
    return () => DeadFuse.deactivate();
  }, []);
}
Pricing

Simple, honest pricing.

No seats. No per-client fees. Just projects.

Monthly Yearly –20%

Free

For solo freelancers getting started.

$0/mo
  • 2 projects
  • All 8 states
  • Realtime sync
  • GitHub login
  • × Priority support
  • × Custom domain
Start free

Agency

For studios managing clients at scale.

$39/mo
  • Unlimited projects
  • All 8 states
  • Realtime sync
  • GitHub login
  • Priority support
  • Up to 5 team members
Upgrade to Agency
Get started today

Take control of your
client relationships.

Deploy in minutes. Free plan includes 2 projects.