Skip to main content
Glama
moshcoder

deadman

by moshcoder

deadman.switch

A dead man's switch for your crypto. Write down where the wallets, seeds and logins are, seal it with a passphrase only your family knows, and check in now and then. If you stop checking in, the people you chose get the sealed bundle.

How it works

  1. Seal. The bundle (a note plus files) is encrypted on your device: PBKDF2-SHA256 (600,000 rounds) into AES-256-GCM. The server stores only the ciphertext. You give the passphrase to your heir yourself.

  2. Check in. Every 1 to 365 days. The email link, the push notification's "I'm OK" button, the web, the CLI, the API or MCP all restart the clock.

  3. Reminders. A missed check-in gets three reminders across the grace period (1 to 30 days), by email and push, and on paid plans a phone call on the last one. Reminders are at least 12 hours apart.

  4. Release. Only after the grace period, and at least a day after the last reminder (so an outage can never skip the warnings), each recipient gets their own link. The page shows your hint, asks for the passphrase, and opens the bundle in their browser.

The server cannot read a bundle, and nobody can open one before it fires.

Related MCP server: zKettle

Plans

Free

Keeper ($49/year or $149 for life)

Switches

1

10

People per switch

2

10

Sealed bundle

64 KB

5 MB

Reminders

email, push

email, push, phone call

Paid in crypto through CoinPay. A lapsed plan never switches protection off: existing switches keep running on the free channels.

CLI

deadman login ds_…                     # key from /me#account
deadman status
deadman checkin
deadman new "My crypto" --every=30 --grace=7 --to=kid@example.com
deadman seal "My crypto" note.md seed-card.png --hint="first dog, then the year"
deadman read "My crypto"
deadman open https://deadman.switch.pit.world/r/r_…

Running it

Bun + Hono + Postgres (DATABASE_URL). Tables are made on boot.

bun install
DATABASE_URL=postgres://… DEADMAN_SECRET=$(openssl rand -hex 32) bun src/server.ts

Variable

DATABASE_URL

Postgres

DEADMAN_SECRET

32+ characters; signs check-in links and CSRF tokens

RESEND_API_KEY, MAIL_FROM

email (without a key, mail goes to the log)

VAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY

web push (bunx web-push generate-vapid-keys)

COINPAY_API_KEY, COINPAY_BUSINESS_ID, COINPAY_WEBHOOK_SECRET

payments

TELNYX_API_KEY, TELNYX_CONNECTION_ID, TELNYX_FROM, TELNYX_PUBLIC_KEY

phone calls

ADMIN_EMAILS

accounts that get Keeper free

PORT (8801), WORKER=off

Tests: TEST_DATABASE_URL=postgres://postgres:test@127.0.0.1:55491/postgres bun test (see test/app.test.ts for a one-line docker Postgres).

Deploy: bin/install.sh on the box (OpenInstall), settings in bin/install.conf.

MIT. By Profullstack, Inc.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables timelock encryption using the Shutter Network, allowing users to encrypt messages that can only be decrypted after a specified future time. Supports natural language time parsing and provides trustless time-delayed communications.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Self-hosted, zero-knowledge encrypted, self-destructing secrets for secure agent-to-agent coordination
    3
    AGPL 3.0
  • A
    license
    A
    quality
    B
    maintenance
    Enables agents to price, send, and track encrypted file transfers, with files chunked, encrypted, and hashed locally before any network relay, and to retrieve signed collection receipts. It supports prepaid credit pools and gives agents a privacy-first transfer capability within their own trust domain.
    1
    Apache 2.0
  • A
    license
    A
    quality
    B
    maintenance
    Ephemeral rendezvous for agents: threads with a secret read key and a public write address that expire on time, receipts that outlive them, and an open board where agents that have never met find each other. Local runtime with fifteen MCP tools over stdio, no account, no API key.
    15
    103 PyPI
    MIT