Files
goblin.st/index.html
T
butler 08bbd74532 Initial commit: goblin.st static landing site
Static landing page for goblin.st (index, privacy, terms) with Geist
fonts and brand assets. Matches the currently-deployed /opt/goblin/www.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 01:22:01 -04:00

315 lines
18 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Goblin — a private wallet for GRIN ツ</title>
<meta name="description" content="Pay a username and the payment travels as an end-to-end encrypted message over nostr, through the Nym mixnet. No files to swap, no addresses on the chain.">
<meta property="og:type" content="website">
<meta property="og:title" content="Goblin — a private wallet for GRIN ツ">
<meta property="og:description" content="Pay a username — slatepacks and the Nym mixnet handled for you. Relays only ever see ciphertext.">
<meta property="og:url" content="https://goblin.st/">
<meta property="og:image" content="https://goblin.st/assets/goblin-icon.png">
<link rel="icon" type="image/png" href="assets/goblin-icon.png">
<link rel="apple-touch-icon" href="assets/goblin-icon.png">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="wrap">
<header class="site">
<a class="brand" href="/">
<span class="mark" aria-hidden="true"></span>
<span class="word">Goblin</span>
</a>
<nav class="site" aria-label="Site">
<a href="#features">Features</a>
<a href="#handles">Handles</a>
<a href="#downloads">Downloads</a>
<a class="gh" href="https://github.com/2ro/goblin" rel="noopener">
<svg viewBox="0 0 16 16" aria-hidden="true"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8Z"/></svg>
GitHub
</a>
</nav>
</header>
<main>
<section class="hero">
<div>
<span class="kicker">Free &amp; open source · GRIN ツ</span>
<h1>Send grin like <span class="strike">a&nbsp;text.</span></h1>
<p class="lede">
Goblin is a private wallet for
<strong>GRIN</strong> — confidential digital cash with no amounts or
addresses on the chain. Pay a <span class="at">username</span> and the payment is
delivered as an end-to-end encrypted message over <strong>nostr</strong>, through
the <strong>Nym mixnet</strong>. No files to swap. No need to both be online.
</p>
<div class="cta-row">
<a class="btn-primary" href="#downloads">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3v10.6l3.3-3.3 1.4 1.4-5.7 5.7-5.7-5.7 1.4-1.4 3.3 3.3V3h2zM5 19h14v2H5v-2z"/></svg>
Get the builds
</a>
<div class="store-btns" role="note" aria-label="App stores coming soon">
<span class="store" aria-disabled="true" title="Coming soon">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M17.05 12.54c-.03-2.89 2.36-4.28 2.47-4.35-1.35-1.97-3.44-2.24-4.18-2.27-1.78-.18-3.47 1.05-4.37 1.05-.9 0-2.29-1.02-3.77-1-1.94.03-3.72 1.13-4.72 2.86-2.01 3.49-.51 8.65 1.45 11.48.96 1.39 2.1 2.94 3.6 2.88 1.45-.06 1.99-.93 3.74-.93 1.74 0 2.24.93 3.77.9 1.56-.03 2.54-1.41 3.49-2.81 1.1-1.61 1.55-3.17 1.58-3.25-.04-.02-3.03-1.16-3.06-4.56zM14.17 4.04c.8-.97 1.34-2.32 1.19-3.66-1.15.05-2.55.77-3.38 1.74-.74.85-1.39 2.22-1.22 3.53 1.29.1 2.6-.65 3.41-1.61z"/></svg>
<span class="lines"><small>App Store</small><span>Coming soon</span></span>
<i class="soon">SOON</i>
</span>
<span class="store" aria-disabled="true" title="Coming soon">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M3.6 1.8c-.35.37-.55.94-.55 1.68v17.07c0 .74.2 1.31.55 1.68l.09.08 9.56-9.56v-.22L3.69 1.71l-.09.09zm13.05 13.04-3.18-3.18v-.22l3.19-3.19.07.04 3.78 2.15c1.08.61 1.08 1.61 0 2.23l-3.78 2.14-.08.03zm-3.4-2.96L3.69 22.31c.36.38 1.5.42 2.13.06l11.27-6.4-3.84-4.09zm0-7.76L5.82 1.63C5.19 1.27 4.05 1.31 3.69 1.7l9.56 9.56 3.84-4.1-3.84-2.04z" transform="translate(1.5 0)"/></svg>
<span class="lines"><small>Google Play</small><span>Coming soon</span></span>
<i class="soon">SOON</i>
</span>
</div>
</div>
<p class="micro">
Linux · Windows · Android today — macOS
<a href="https://github.com/2ro/goblin#build" rel="noopener">builds from source</a>.
Apache-2.0, sha256 checksums on every build.
</p>
</div>
<div class="phone-wrap" aria-hidden="true">
<div class="phone">
<div class="notch"></div>
<div class="p-head">
<span class="w">Goblin</span>
<span class="av"></span>
</div>
<div class="balance">
<div class="eyebrow">Balance</div>
<div class="amt">4.2069<span class="tsu"></span></div>
<div class="fiat">≈ $0.11 · 1ツ = $0.026</div>
</div>
<div class="pr-row">
<div class="pr pay">Pay</div>
<div class="pr req">Request</div>
</div>
<div class="act">
<div class="row">
<span class="dot" style="background:linear-gradient(135deg,#5BB0D9,#3D7FA6)"></span>
<span class="who"><b>mira</b><i>arrived sealed · just now</i></span>
<span class="val in">+0.5ツ</span>
</div>
<div class="row">
<span class="dot" style="background:linear-gradient(135deg,#9D8BE8,#6C58C4)"></span>
<span class="who"><b>kit</b><i>delivered over Nym · 2h</i></span>
<span class="val">1.2ツ</span>
</div>
<div class="row">
<span class="dot" style="background:linear-gradient(135deg,#E8854B,#C25A2E)"></span>
<span class="who"><b>npub1g0b…l1n</b><i>finalized · yesterday</i></span>
<span class="val in">+2.0ツ</span>
</div>
</div>
<div class="tabbar">
<span class="t"><svg viewBox="0 0 24 24"><path d="M4 10.5 12 4l8 6.5V20a1 1 0 0 1-1 1h-5v-6h-4v6H5a1 1 0 0 1-1-1v-9.5z"/></svg></span>
<span class="puck"></span>
<span class="t"><svg viewBox="0 0 24 24"><path d="M4 6h16v2H4V6zm0 5h16v2H4v-2zm0 5h10v2H4v-2z"/></svg></span>
</div>
</div>
</div>
</section>
<section class="rail-sec" aria-label="How a payment travels">
<div class="rail-card">
<div class="rail-title">
<h2>How a payment travels</h2>
<span class="sub">Payments are NIP-44 encrypted; relays only ever see ciphertext — never the amount, sender, or recipient. Privacy is Mimblewimble on-chain + Nym on the wire.</span>
</div>
<div class="rail">
<img class="packet" src="assets/grin-logo.png" alt="" aria-hidden="true">
<div class="stop">
<div class="pin"><svg viewBox="0 0 24 24"><circle cx="12" cy="8" r="3.4"/><path d="M5 20c.8-3.6 3.6-5.6 7-5.6s6.2 2 7 5.6"/></svg></div>
<b>You</b><i>type an amount, pick a name</i>
</div>
<div class="stop">
<div class="pin"><svg viewBox="0 0 24 24"><rect x="4" y="7" width="16" height="13" rx="2"/><path d="M4 11h16M12 7v13M9.5 7C7.5 5 8.5 3 10.5 3.5 11.7 3.8 12 5.5 12 7c0-1.5.3-3.2 1.5-3.5 2-.5 3 1.5 1 3.5"/></svg></div>
<b>Gift wrap</b><i>slatepack sealed, <a href="https://nips.nostr.com/17" rel="noopener">NIP-17</a></i>
</div>
<div class="stop">
<div class="pin"><svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="8.5"/><circle cx="12" cy="12" r="5.2"/><circle cx="12" cy="12" r="2"/></svg></div>
<b>Nym mixnet</b><i>5-hop, linked in-process</i>
</div>
<div class="stop">
<div class="pin"><svg viewBox="0 0 24 24"><path d="M12 21s-6.5-4.3-6.5-9.2C5.5 8 8 6 12 6s6.5 2 6.5 5.8C18.5 16.7 12 21 12 21z" transform="translate(0 -1.5)"/><path d="M9 11.5l2 2 4-4.5"/></svg></div>
<b>them</b><i>unwrapped, verified, applied</i>
</div>
</div>
</div>
</section>
<section id="features">
<div class="sec-head">
<h2>Private by construction</h2>
<p>Pay anyone instantly and directly — an addressless, confidential
chain underneath.</p>
</div>
<div class="features">
<article class="feat">
<div class="glyph"><svg viewBox="0 0 24 24"><path d="M9.88 9.88a3 3 0 1 0 4.24 4.24"/><path d="M10.73 5.08A10.4 10.4 0 0 1 12 5c7 0 10 7 10 7a13.2 13.2 0 0 1-1.67 2.68"/><path d="M6.61 6.61A13.5 13.5 0 0 0 2 12s3 7 10 7a9.7 9.7 0 0 0 5.39-1.61"/><path d="M2 2l20 20"/></svg></div>
<h3>Confidential by design</h3>
<p>GRIN is confidential digital cash — every amount is cryptographically
hidden. Like handing someone cash, what you send stays between the two
of you.</p>
</article>
<article class="feat">
<div class="glyph"><svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="4"/><path d="M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8"/></svg></div>
<h3>Pay a username</h3>
<p>Handles are <a href="https://nips.nostr.com/5" rel="noopener">NIP-05</a> identities at <code>goblin.st</code>. Pay
<code>mira</code> — or any raw <code>npub</code> on nostr.</p>
</article>
<article class="feat">
<div class="glyph"><svg viewBox="0 0 24 24"><rect x="3" y="5" width="18" height="14" rx="2"/><path d="M3 7l9 6 9-6"/></svg></div>
<h3>Sealed delivery</h3>
<p>The slatepack travels as a NIP-17 gift-wrapped DM (<a href="https://nostrbook.dev/kinds/1059" rel="noopener">kind 1059</a>) and is
applied automatically by the recipient's wallet — no files, no meetups.</p>
</article>
<article class="feat">
<div class="glyph"><svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="9"/><circle cx="12" cy="12" r="5.5"/><circle cx="12" cy="12" r="2"/></svg></div>
<h3>Mixnet, built in</h3>
<p>Your payments and identity — nostr messages, names, price and
avatars — ride the
<a href="https://nym.com" rel="noopener">Nym mixnet</a>, with the SDK
linked right into the app. Five hops of cover traffic hide who pays
whom. (The grin node connects directly — public chain data, not tied
to you.) Nothing to set up.</p>
</article>
<article class="feat">
<div class="glyph"><svg viewBox="0 0 24 24"><circle cx="8" cy="15" r="5"/><path d="M11.5 11.5 21 2"/><path d="M16.5 6.5 19 9"/><path d="M14 9l2.5 2.5"/></svg></div>
<h3>Separate from your wallet key</h3>
<p>Your nostr payment key is deliberately separate from your funds.
Rotate it any time to stay unlinkable — your grin never moves.</p>
</article>
<article class="feat">
<div class="glyph"><svg viewBox="0 0 24 24"><path d="M4 21v-7M4 10V3M12 21v-9M12 8V3M20 21v-5M20 12V3M1 14h6M9 8h6M17 16h6"/></svg></div>
<h3>Your numbers, your way</h3>
<p>Off by default. Opt into a world currency, Bitcoin, or sats and the
rate is fetched over the mixnet — nothing leaves your device otherwise.</p>
</article>
</div>
</section>
<section id="handles">
<div class="handle-grid">
<div>
<p class="big-at">Be <span class="at-name">yourself</span>.</p>
<p>Claim a free handle in the app and friends can pay you by name.
Your handle resolves through the open <a href="https://github.com/2ro/goblin-nip05d" rel="noopener">goblin.st identity service</a>
standard NIP-05, one name per key, yours until you release it.</p>
<p>Or remain anonymous and reset your identity whenever you want.</p>
</div>
<div class="code-card" aria-label="NIP-05 resolution example">
<span class="c-dim">$</span> curl 'https://goblin.st/.well-known/nostr.json?name=mira'<br>
{<br>
&nbsp;&nbsp;<span class="c-key">"names"</span>: {<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="c-key">"mira"</span>: <span class="c-str">"7d2f19c0…a4c41a"</span><br>
&nbsp;&nbsp;}<br>
}
</div>
</div>
</section>
<section id="downloads">
<div class="sec-head">
<h2>Downloads</h2>
<p>Fresh from the forge. Verify with the checksums file — every build ships one.</p>
</div>
<div class="dl-grid">
<div class="dl-card">
<span class="build-chip"><span class="dot"></span> latest release</span>
<div class="dl-rows">
<a href="https://github.com/2ro/goblin/releases/latest">
<svg viewBox="0 0 24 24"><path d="M12 3c-2 0-3.5 1.6-3.5 3.8 0 1.5-.6 2.7-1.5 4-1 1.4-2 3-2 5C5 19 7 21 9.5 20.4c.8-.2 1.6-.2 2.5-.2s1.7 0 2.5.2C17 21 19 19 19 15.8c0-2-1-3.6-2-5-.9-1.3-1.5-2.5-1.5-4C15.5 4.6 14 3 12 3z"/><path d="M9.5 9.8h.01M14.5 9.8h.01"/></svg>
<span class="name">Linux <span class="file">x86_64 · tar.gz</span></span>
<span class="arrow"></span>
</a>
<a href="https://github.com/2ro/goblin/releases/latest">
<svg viewBox="0 0 24 24"><path d="M12 3l8 4.5v9L12 21l-8-4.5v-9L12 3z"/><path d="M4 7.5l8 4.5 8-4.5M12 12v9"/></svg>
<span class="name">Linux AppImage <span class="file">x86_64 · chmod +x, run</span></span>
<span class="arrow"></span>
</a>
<a href="https://github.com/2ro/goblin/releases/latest">
<svg viewBox="0 0 24 24"><path d="M4 6.5 10.5 5v6H4v-4.5zM11.5 4.8 20 3.5V11h-8.5V4.8zM4 12.5h6.5v6L4 17.1v-4.6zM11.5 12.5H20v7.4l-8.5-1.3v-6.1z"/></svg>
<span class="name">Windows <span class="file">x86_64 · zip</span></span>
<span class="arrow"></span>
</a>
<a href="https://github.com/2ro/goblin/releases/latest">
<svg viewBox="0 0 24 24"><path d="M7 8.5C7 6 9.2 4 12 4s5 2 5 4.5M7 8.5h10M7 8.5v7a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-7M9 4 8 2.5M15 4l1-1.5M9.5 19.5V22M14.5 19.5V22"/></svg>
<span class="name">Android <span class="file">armv7 + arm64 · apk</span></span>
<span class="arrow"></span>
</a>
<a href="https://github.com/2ro/goblin/releases">
<svg viewBox="0 0 24 24"><path d="M12 4v9M12 13l-3.5-3.5M12 13l3.5-3.5M5 17h14M5 20h14"/></svg>
<span class="name">All builds &amp; checksums <span class="file">sha256sums.txt</span></span>
<span class="arrow"></span>
</a>
</div>
<p class="dl-meta">
macOS: <a href="https://github.com/2ro/goblin#build" rel="noopener">build from source</a>
clone with <code>--recursive</code>, then <code>cargo build --release</code>.
</p>
</div>
<div class="dl-card stores-card">
<span class="store" aria-disabled="true" title="Coming soon">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M17.05 12.54c-.03-2.89 2.36-4.28 2.47-4.35-1.35-1.97-3.44-2.24-4.18-2.27-1.78-.18-3.47 1.05-4.37 1.05-.9 0-2.29-1.02-3.77-1-1.94.03-3.72 1.13-4.72 2.86-2.01 3.49-.51 8.65 1.45 11.48.96 1.39 2.1 2.94 3.6 2.88 1.45-.06 1.99-.93 3.74-.93 1.74 0 2.24.93 3.77.9 1.56-.03 2.54-1.41 3.49-2.81 1.1-1.61 1.55-3.17 1.58-3.25-.04-.02-3.03-1.16-3.06-4.56zM14.17 4.04c.8-.97 1.34-2.32 1.19-3.66-1.15.05-2.55.77-3.38 1.74-.74.85-1.39 2.22-1.22 3.53 1.29.1 2.6-.65 3.41-1.61z"/></svg>
<span class="lines"><small>Download on the</small><span>App Store</span></span>
<i class="soon">SOON</i>
</span>
<span class="store" aria-disabled="true" title="Coming soon">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M3.6 1.8c-.35.37-.55.94-.55 1.68v17.07c0 .74.2 1.31.55 1.68l.09.08 9.56-9.56v-.22L3.69 1.71l-.09.09zm13.05 13.04-3.18-3.18v-.22l3.19-3.19.07.04 3.78 2.15c1.08.61 1.08 1.61 0 2.23l-3.78 2.14-.08.03zm-3.4-2.96L3.69 22.31c.36.38 1.5.42 2.13.06l11.27-6.4-3.84-4.09zm0-7.76L5.82 1.63C5.19 1.27 4.05 1.31 3.69 1.7l9.56 9.56 3.84-4.1-3.84-2.04z" transform="translate(1.5 0)"/></svg>
<span class="lines"><small>Get it on</small><span>Google Play</span></span>
<i class="soon">SOON</i>
</span>
<p>Store listings are on the way. Until then, grab the APK on the left —
it's the same wallet.</p>
</div>
</div>
</section>
</main>
</div>
<footer class="site">
<div class="wrap">
<div class="foot-grid">
<div class="foot-brand">
<span class="mark" aria-hidden="true"></span>
<p>Goblin is a peer-to-peer wallet for GRIN ツ — confidential digital
cash on Mimblewimble. Keys, names and history stay on your device.</p>
</div>
<div>
<h4>Project</h4>
<ul>
<li><a href="https://github.com/2ro/goblin" rel="noopener">Wallet on GitHub</a></li>
<li><a href="https://github.com/2ro/goblin/releases" rel="noopener">Releases</a></li>
<li><a href="https://github.com/2ro/goblin-nip05d" rel="noopener">Identity service</a></li>
</ul>
</div>
<div>
<h4>Network</h4>
<ul>
<li><a href="https://grin.mw" rel="noopener">GRIN ツ</a></li>
<li><a href="https://github.com/nostr-protocol/nips" rel="noopener">Nostr NIPs</a></li>
<li><a href="https://nym.com" rel="noopener">Nym</a></li>
</ul>
</div>
<div>
<h4>Legal</h4>
<ul>
<li><a href="terms.html">Terms of Use</a></li>
<li><a href="privacy.html">Privacy</a></li>
<li><a href="https://www.apache.org/licenses/LICENSE-2.0" rel="noopener">Apache-2.0</a></li>
</ul>
</div>
</div>
<div class="foot-bottom">
<span>© 2026 the Goblin project · Built on <a href="https://code.gri.mw/GUI/grim" rel="noopener" style="color:inherit">Grim</a> by Ardocrat</span>
<span>Money is a conversation. Keep it between friends. ツ</span>
</div>
</div>
</footer>
</body>
</html>