-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathprivacy.html
More file actions
106 lines (98 loc) · 6.9 KB
/
Copy pathprivacy.html
File metadata and controls
106 lines (98 loc) · 6.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Podkey — Privacy Policy</title>
<meta name="description" content="Podkey privacy policy: a local Nostr/Solid key signer. Your key never leaves your device; no servers, no accounts, no analytics." />
<link rel="icon" href="icon.svg" />
<style>
:root{--bg:#0b0e12;--surface:#141920;--surface-2:#1b2129;--border:#262e38;
--text:#e7eaee;--muted:#9aa4b0;--accent:#f5a623;--mono:ui-monospace,Menlo,Consolas,monospace}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);
font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.65}
a{color:var(--accent)}
.wrap{max-width:780px;margin:0 auto;padding:0 22px}
header{padding:24px 0;display:flex;align-items:center;gap:11px;border-bottom:1px solid var(--border)}
header svg{width:24px;height:24px;color:var(--accent)}
header .b{font-weight:700;font-size:18px}
header a{margin-left:auto;color:var(--muted);text-decoration:none;font-size:14px}
h1{font-size:30px;margin:34px 0 6px;letter-spacing:-.02em}
.date{color:var(--muted);font-size:14px;margin-bottom:8px}
h2{font-size:19px;margin:30px 0 10px}
p,li{color:#d2d8df}
.muted{color:var(--muted)}
code{font-family:var(--mono);background:var(--surface-2);padding:2px 6px;border-radius:6px;font-size:13.5px}
table{width:100%;border-collapse:collapse;margin:14px 0;font-size:14.5px}
th,td{text-align:left;padding:10px 12px;border:1px solid var(--border);vertical-align:top}
th{background:var(--surface);color:var(--text)}
td{background:var(--surface-2);color:#d2d8df}
ul{padding-left:20px}
li{margin:7px 0}
.note{background:var(--surface-2);border:1px solid var(--border);border-left:3px solid var(--accent);
border-radius:8px;padding:12px 14px;color:var(--muted);font-size:14.5px;margin:16px 0}
footer{padding:30px 0 50px;color:#6b7480;font-size:13.5px;border-top:1px solid var(--border);margin-top:34px}
footer a{color:var(--muted);text-decoration:none}
</style>
</head>
<body>
<div class="wrap">
<header>
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<circle cx="8" cy="15" r="4" /><path d="M10.85 12.15 19 4" /><path d="m18 5 2 2" /><path d="m15 8 2 2" />
</svg>
<span class="b">Podkey</span>
<a href="index.html">← Home</a>
</header>
<h1>Privacy Policy</h1>
<div class="date">Last updated: 2026-06-16</div>
<p>Podkey is a browser extension that holds a Nostr/<a href="https://nostrcg.github.io/did-nostr/">did:nostr</a>
key on your device and uses it to sign Nostr events (<a href="https://github.com/nostr-protocol/nips/blob/master/07.md">NIP-07</a>)
and to authenticate to <a href="https://solidproject.org">Solid</a> pods over
<a href="https://github.com/nostr-protocol/nips/blob/master/98.md">NIP-98</a>. It is a
<strong>local signer</strong>: your key never leaves your device, and Podkey has no servers, no
accounts, and no analytics.</p>
<h2>What Podkey stores, and where</h2>
<p class="muted">All data is stored locally in the browser's extension storage. Nothing is sent to the Podkey developers or any third party.</p>
<table>
<tr><th>Data</th><th>Where</th><th>Notes</th></tr>
<tr><td>Private key</td><td><code>storage.local</code>, encrypted</td><td>Stored only as an AES-256-GCM ciphertext, wrapped by a scrypt key derived from your passphrase. The plaintext key is never written to disk.</td></tr>
<tr><td>Private key (unlocked)</td><td><code>storage.session</code>, in-memory</td><td>After you unlock, the decrypted key is held in memory for the browser session, then cleared when the browser closes.</td></tr>
<tr><td>Public key</td><td><code>storage.local</code></td><td>Your <code>did:nostr</code> identity. Not secret.</td></tr>
<tr><td>Trusted origins</td><td><code>storage.local</code></td><td>Sites you approved to sign without re-prompting, plus an optional per-site auto-sign preference. Revocable from the popup.</td></tr>
</table>
<p>There is <strong>no telemetry, no tracking, no advertising identifiers, and no remote logging</strong>. Podkey collects none of your browsing history or page content.</p>
<h2>How your key is used</h2>
<ul>
<li>Signing (NIP-07), NIP-44 encryption, and Solid authentication (NIP-98) happen entirely inside the extension's background service worker. The raw private key is never exposed to web pages: the page receives only the resulting signature, ciphertext/plaintext, or <code>Authorization</code> header.</li>
<li>A site you have not approved triggers a consent prompt on its first request; closing it, or a 60-second timeout, denies it.</li>
<li>Podkey makes <strong>no network requests of its own</strong>. A NIP-98 <code>Authorization</code> header is attached only to requests <em>you</em> initiate to a server you have trusted; the data goes to that server, under your control, not to Podkey.</li>
</ul>
<h2>Permissions, and why</h2>
<ul>
<li><code>storage</code>: to keep the encrypted key, your public key, and your trusted sites locally.</li>
<li><strong>Host access (<code><all_urls></code>)</strong>: as a NIP-07 signer, Podkey injects a <code>window.nostr</code> provider into pages and, for trusted sites, attaches NIP-98 auth to your own requests. Podkey <strong>does not read, collect, or transmit page content or browsing history</strong>; host access is used solely to expose the signer and to intercept auth for origins you explicitly approved.</li>
</ul>
<h2>Data sharing and retention</h2>
<ul>
<li>Podkey <strong>does not sell or share</strong> any data. No data broker, no third-party processor, no off-device transfer of your key or activity.</li>
<li>All data stays on your device until you delete it. Removing the extension, or "Forget key" in the popup, erases the stored vault, public key, and trusted sites.</li>
</ul>
<div class="note">Back up your private key before forgetting it or uninstalling. Without a backup it cannot be recovered.</div>
<h2>Your control</h2>
<ul>
<li>Unlock / lock your key on demand from the popup.</li>
<li>Review and revoke trusted sites at any time.</li>
<li>Export your private key (after unlocking) to back it up.</li>
<li>Forget the key entirely to start over.</li>
</ul>
<h2>Contact</h2>
<p>Podkey is open source under AGPL-3.0. Questions, issues, or security reports:
<a href="https://github.com/JavaScriptSolidServer/podkey/issues">github.com/JavaScriptSolidServer/podkey/issues</a>.</p>
<footer>
<a href="index.html">Podkey</a> · <a href="https://github.com/JavaScriptSolidServer/podkey/blob/main/PRIVACY.md">PRIVACY.md</a> · <a href="https://github.com/JavaScriptSolidServer/podkey">GitHub</a>
</footer>
</div>
</body>
</html>