Skip to content

Commit 435d3aa

Browse files
Codexclaude
andcommitted
addresses: rotate Tor + I2P endpoints to real kyccli-prefix vanity
Previously advertised onion/b32 strings were placeholders — no hidden service was actually provisioned on the box, so connecting resolved to nothing. Operator mined matching vanity-prefix keys (both `kyccli`, 6 chars) and they're now live in /var/lib/tor + /var/lib/i2pd. Updated in: - README.md - SECURITY.md - internal/tui/model.go (TUI About tab, split across continuation lines) - deploy/swap.kyc.rip.conf (embedded landing HTML) - CHANGELOG.md (new 0.1.40 entry; historical 0.1.x entries kept as-is) Companion change in kyc.rip UI (ui/src/pages/CliLanding.tsx) committed separately in the kyc-rip/kyc-rip repo. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 4023f3d commit 435d3aa

5 files changed

Lines changed: 23 additions & 9 deletions

File tree

CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,20 @@ All notable changes to **kyc-cli** and **sshwap** are documented here.
44
The format is loosely [Keep a Changelog](https://keepachangelog.com/);
55
versioning follows [SemVer](https://semver.org/).
66

7+
## [0.1.40] — 2026-05-18
8+
9+
### Changed
10+
- **Tor + I2P endpoints rotated to real vanity-prefix addresses.** The
11+
previously advertised onion / b32.i2p strings were placeholders — no
12+
hidden-service infra had been provisioned, so connecting to them
13+
resolved to nothing. New endpoints (both `kyccli` vanity-prefix):
14+
`kyccli2b6y3iwxhkpoetzfyozmmrwipaakznyvhgl7a264l7tflvzqad.onion` /
15+
`kyccliymrfjyumorhpfujsqfvbb2vakajklhw5kfomec7umwhpgq.b32.i2p`.
16+
Updated in README, SECURITY, the TUI About tab, the `swap.kyc.rip`
17+
landing HTML, and the `kyc.rip/cli` website. Server-side setup scripts
18+
in `deploy/` (hidden-services-install, vanity-mine, vanity-swap,
19+
publish-hostnames).
20+
721
## [0.1.37] — 2026-05-11
822

923
### Fixed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ not proceed** — that's a man-in-the-middle.
4545
| Channel | Connect |
4646
|---|---|
4747
| clearnet | `ssh swap.kyc.rip` |
48-
| Tor | `torsocks ssh ozz6kgrbp6epsxhrid456udvwj3vzecb4f7jz5orxcrpxn4f2bejuyid.onion` |
49-
| I2P | `ssh -o ProxyCommand='nc -X 5 -x 127.0.0.1:4447 %h %p' r4ziaqaec7w73x7ltpz5pi5kswclgjdw6ioyz25mbtrisprneqhq.b32.i2p` |
48+
| Tor | `torsocks ssh kyccli2b6y3iwxhkpoetzfyozmmrwipaakznyvhgl7a264l7tflvzqad.onion` |
49+
| I2P | `ssh -o ProxyCommand='nc -X 5 -x 127.0.0.1:4447 %h %p' kyccliymrfjyumorhpfujsqfvbb2vakajklhw5kfomec7umwhpgq.b32.i2p` |
5050

5151
All three channels go to the same SSH server with the same host key.
5252

SECURITY.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ The hardening we apply:
5858
## Channels
5959

6060
- **clearnet**: `ssh swap.kyc.rip`
61-
- **tor**: `torsocks ssh ozz6kgrbp6epsxhrid456udvwj3vzecb4f7jz5orxcrpxn4f2bejuyid.onion`
62-
- **i2p**: `ssh r4ziaqaec7w73x7ltpz5pi5kswclgjdw6ioyz25mbtrisprneqhq.b32.i2p` (via i2pd SOCKS proxy)
61+
- **tor**: `torsocks ssh kyccli2b6y3iwxhkpoetzfyozmmrwipaakznyvhgl7a264l7tflvzqad.onion`
62+
- **i2p**: `ssh kyccliymrfjyumorhpfujsqfvbb2vakajklhw5kfomec7umwhpgq.b32.i2p` (via i2pd SOCKS proxy)
6363

6464
All three channels go to the same SSH server with the same host key —
6565
verify the fingerprint regardless of which channel you choose.

deploy/swap.kyc.rip.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ server {
4545
charset utf-8;
4646
add_header Cache-Control "public, max-age=300";
4747
return 200 '<!doctype html>
48-
<html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>swap.kyc.rip — terminal-only swap</title><meta name="description" content="A privacy-first crypto swap aggregator, accessible only over SSH."><meta property="og:title" content="ssh swap.kyc.rip — terminal-only crypto swap"><meta property="og:description" content="Open your shell. No browser. No JS. No fingerprint."><meta name="theme-color" content="#0a0a0a"><style>:root{--bg:#0a0a0a;--fg:#cccccc;--accent:#00d7af;--warn:#ffaf00;--muted:#7a7a7a}*,*::before,*::after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--fg);font-family:ui-monospace,SFMono-Regular,"JetBrains Mono","Fira Code",Menlo,Consolas,monospace;line-height:1.55;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem 1.25rem}main{max-width:760px;width:100%}h1{font-size:1.05rem;font-weight:500;color:var(--muted);margin:0 0 .5rem}.section-h{color:var(--warn);font-size:.8rem;margin:1.6rem 0 .5rem;letter-spacing:.04em;text-transform:uppercase}.cmd{background:#111;color:var(--accent);padding:1rem 1.25rem;border-radius:8px;font-size:clamp(1rem,4vw,1.5rem);font-weight:600;user-select:all;border:1px solid #1f1f1f}.cmd.small{font-size:clamp(.85rem,2.6vw,1rem);padding:.7rem 1rem}.cmd .prompt{color:var(--muted);user-select:none}.copy-hint{color:var(--muted);font-size:.8rem;margin-top:.4rem}.blurb{color:var(--fg);margin:1.2rem 0}.blurb p{margin:0 0 .8rem}.meta{color:var(--muted);font-size:.85rem;margin-top:2rem;padding-top:1rem;border-top:1px dashed #1f1f1f}.meta .label{color:var(--warn)}.grid{display:grid;gap:.4rem;grid-template-columns:max-content 1fr}.grid .k{color:var(--muted)}.grid .v{word-break:break-all}a{color:var(--accent);text-decoration:none;border-bottom:1px dotted #00d7af}a:hover{color:#fff}</style></head><body><main><h1>kyc.rip · terminal-only swap</h1><div class="cmd"><span class="prompt">&#10095;</span>ssh swap.kyc.rip</div><div class="copy-hint">click the line to copy · paste into your terminal</div><div class="blurb"><p>An interactive crypto swap served over SSH. No JavaScript, no cookies, no browser fingerprint.</p><p>Backed by the <a href="https://kyc.rip">kyc.rip</a> aggregator. Type assets, amount, destination. Get a quote. Confirm. Done.</p></div><div class="section-h">Or run it locally</div><div class="cmd small"><span class="prompt">&#10095;</span>brew install kyc-rip/tap/kyc-cli</div><div class="copy-hint">macOS / linux via Homebrew</div><div class="cmd small" style="margin-top:.5rem"><span class="prompt">&#10095;</span>curl -fsSL cli.kyc.rip/install.sh | sh</div><div class="copy-hint">linux / macOS one-liner — verifies sha256, drops binary in PATH</div><div class="cmd small" style="margin-top:.5rem"><span class="prompt">&#10095;</span>scoop bucket add kyc-rip https://github.com/kyc-rip/scoop-bucket &amp;&amp; scoop install kyc-cli</div><div class="copy-hint">Windows (Scoop bucket coming soon — for now grab a tarball from <a href="https://github.com/kyc-rip/cli/releases">github releases</a>)</div><div class="section-h">Encrypted channels</div><div class="meta"><div class="grid"><span class="k">tor</span><span class="v">ozz6kgrbp6epsxhrid456udvwj3vzecb4f7jz5orxcrpxn4f2bejuyid.onion</span><span class="k">i2p</span><span class="v">r4ziaqaec7w73x7ltpz5pi5kswclgjdw6ioyz25mbtrisprneqhq.b32.i2p</span></div></div><div class="meta"><div class="grid"><span class="k label">host key</span><span class="v">SHA256:wavvotTfJrgK/kY3qG3rdA3OY7Qs9sRXYXCi2tO8KYY</span><span class="k">website</span><span class="v"><a href="https://kyc.rip">kyc.rip</a></span><span class="k">source</span><span class="v"><a href="https://github.com/kyc-rip/cli">github.com/kyc-rip/cli</a></span></div><p style="margin-top:1.2rem;">Verify the host key fingerprint the first time you connect. Anything else is not us.</p></div></main></body></html>';
48+
<html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>swap.kyc.rip — terminal-only swap</title><meta name="description" content="A privacy-first crypto swap aggregator, accessible only over SSH."><meta property="og:title" content="ssh swap.kyc.rip — terminal-only crypto swap"><meta property="og:description" content="Open your shell. No browser. No JS. No fingerprint."><meta name="theme-color" content="#0a0a0a"><style>:root{--bg:#0a0a0a;--fg:#cccccc;--accent:#00d7af;--warn:#ffaf00;--muted:#7a7a7a}*,*::before,*::after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--fg);font-family:ui-monospace,SFMono-Regular,"JetBrains Mono","Fira Code",Menlo,Consolas,monospace;line-height:1.55;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem 1.25rem}main{max-width:760px;width:100%}h1{font-size:1.05rem;font-weight:500;color:var(--muted);margin:0 0 .5rem}.section-h{color:var(--warn);font-size:.8rem;margin:1.6rem 0 .5rem;letter-spacing:.04em;text-transform:uppercase}.cmd{background:#111;color:var(--accent);padding:1rem 1.25rem;border-radius:8px;font-size:clamp(1rem,4vw,1.5rem);font-weight:600;user-select:all;border:1px solid #1f1f1f}.cmd.small{font-size:clamp(.85rem,2.6vw,1rem);padding:.7rem 1rem}.cmd .prompt{color:var(--muted);user-select:none}.copy-hint{color:var(--muted);font-size:.8rem;margin-top:.4rem}.blurb{color:var(--fg);margin:1.2rem 0}.blurb p{margin:0 0 .8rem}.meta{color:var(--muted);font-size:.85rem;margin-top:2rem;padding-top:1rem;border-top:1px dashed #1f1f1f}.meta .label{color:var(--warn)}.grid{display:grid;gap:.4rem;grid-template-columns:max-content 1fr}.grid .k{color:var(--muted)}.grid .v{word-break:break-all}a{color:var(--accent);text-decoration:none;border-bottom:1px dotted #00d7af}a:hover{color:#fff}</style></head><body><main><h1>kyc.rip · terminal-only swap</h1><div class="cmd"><span class="prompt">&#10095;</span>ssh swap.kyc.rip</div><div class="copy-hint">click the line to copy · paste into your terminal</div><div class="blurb"><p>An interactive crypto swap served over SSH. No JavaScript, no cookies, no browser fingerprint.</p><p>Backed by the <a href="https://kyc.rip">kyc.rip</a> aggregator. Type assets, amount, destination. Get a quote. Confirm. Done.</p></div><div class="section-h">Or run it locally</div><div class="cmd small"><span class="prompt">&#10095;</span>brew install kyc-rip/tap/kyc-cli</div><div class="copy-hint">macOS / linux via Homebrew</div><div class="cmd small" style="margin-top:.5rem"><span class="prompt">&#10095;</span>curl -fsSL cli.kyc.rip/install.sh | sh</div><div class="copy-hint">linux / macOS one-liner — verifies sha256, drops binary in PATH</div><div class="cmd small" style="margin-top:.5rem"><span class="prompt">&#10095;</span>scoop bucket add kyc-rip https://github.com/kyc-rip/scoop-bucket &amp;&amp; scoop install kyc-cli</div><div class="copy-hint">Windows (Scoop bucket coming soon — for now grab a tarball from <a href="https://github.com/kyc-rip/cli/releases">github releases</a>)</div><div class="section-h">Encrypted channels</div><div class="meta"><div class="grid"><span class="k">tor</span><span class="v">kyccli2b6y3iwxhkpoetzfyozmmrwipaakznyvhgl7a264l7tflvzqad.onion</span><span class="k">i2p</span><span class="v">kyccliymrfjyumorhpfujsqfvbb2vakajklhw5kfomec7umwhpgq.b32.i2p</span></div></div><div class="meta"><div class="grid"><span class="k label">host key</span><span class="v">SHA256:wavvotTfJrgK/kY3qG3rdA3OY7Qs9sRXYXCi2tO8KYY</span><span class="k">website</span><span class="v"><a href="https://kyc.rip">kyc.rip</a></span><span class="k">source</span><span class="v"><a href="https://github.com/kyc-rip/cli">github.com/kyc-rip/cli</a></span></div><p style="margin-top:1.2rem;">Verify the host key fingerprint the first time you connect. Anything else is not us.</p></div></main></body></html>';
4949
}
5050

5151
# Serve the install.sh from the repo so the curl|sh one-liner is short.

internal/tui/model.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1267,11 +1267,11 @@ func (m Model) renderAbout() string {
12671267
styleAccent.Render("Channels"),
12681268
" clearnet ssh swap.kyc.rip",
12691269
" https https://swap.kyc.rip (landing only)",
1270-
" tor torsocks ssh ozz6kgrbp6epsxhrid456",
1271-
" udvwj3vzecb4f7jz5orxcrpxn4f2bejuyid.onion",
1270+
" tor torsocks ssh kyccli2b6y3iwxhkpoetzf",
1271+
" yozmmrwipaakznyvhgl7a264l7tflvzqad.onion",
12721272
" i2p ssh -o ProxyCommand='nc -X 5 -x 127.0.0.1:4447 %h %p' \\",
1273-
" r4ziaqaec7w73x7ltpz5pi5kswclgjdw6",
1274-
" ioyz25mbtrisprneqhq.b32.i2p",
1273+
" kyccliymrfjyumorhpfujsqfvbb2vakaj",
1274+
" klhw5kfomec7umwhpgq.b32.i2p",
12751275
"",
12761276
styleAccent.Render("Verify host key before connecting"),
12771277
" " + fp,

0 commit comments

Comments
 (0)