Open Net Worth
Open Net Worth is an open-source personal AI wealth assistant you run yourself: one ledger for your whole financial life, worked by an AI agent you control.
If something happens to you, your crypto should not die with you. Seal where the keys are, check in now and then, and if you stop, the people you chose get it.
FinanceTypeScript · ShellGitHub @moshcoderOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
A dead man's switch for your crypto. Sealed in your browser; check in, or your people get it. Web, API, CLI, TUI, MCP.
Loading the full README.
Read the full README ↗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.
bunx @profullstack/deadmanclaude mcp add deadman -- bunx @profullstack/deadman mcphttps://deadman.switch.pit.world/api/v1 (Authorization: Bearer ds_…)The server cannot read a bundle, and nobody can open one before it fires.
| 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.
Credit codes (@profullstack/redeem-credits):
a code grants the unit keeper_days, days of the Keeper plan. Redeem it under
"Have a code?" on /me, with deadman redeem <code>, MCP redeem_code, or
POST /api/v1/redeem {"code"}. The days go through the same columns a payment
writes (users.plan / plan_until): on the end of a running plan, from now on
a lapsed one. Keeper for life is refused before the code is spent, so it can be
passed on. Days granted out of band are applied when that person next opens /me.
The redeem-credits CLI only speaks SQLite, so mint on the box with bin/codes.ts:
cd /opt/deadman.switch && set -a && . /root/.local/share/deadman-switch/app.env && set +a
bun bin/codes.ts mint --days 30 --label "for Dan" [--max 1] [--expires 30d]
bun bin/codes.ts list
bun bin/codes.ts revoke <codeId>
bun bin/codes.ts grant [email protected] --days 7
Invites (@profullstack/affiliates):
three single-use links per account at /invites (deadman invites [new],
GET/POST /api/v1/invites). A link lands on /i/<code>, rides in a 7-day
cookie and on the sign-in email link (so it survives opening the email in
another browser), and is spent when a new account is made through it. Then
both people get 7 days of Keeper. Every account also has an open affiliate
link (/?ref=<code>), remembered first-touch for 30 days and credited to new
accounts. bin/codes.ts invites <email> --total N changes someone's allowance.
deadman login ds_… # key from /me#account
deadman status
deadman checkin
deadman new "My crypto" --every=30 --grace=7 [email protected]
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_…
deadman redeem CR-XXXX-XXXX-XXXX-XXXX
deadman invites new --note="for Sam"
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:[email protected]: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.