cli

module
v0.1.33 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 10, 2026 License: MIT

README

kyc-rip / cli

release ci go report license brew

A privacy-first crypto swap aggregator, served as a TUI over SSH.

$ ssh swap.kyc.rip

That's it. No browser, no JS, no cookies, no fingerprint. The kyc.rip aggregator (≈10 exchange engines, all major chains) rendered in your terminal.

Also runs as a downloadable local CLI — same code, same flow, same colours.


Quick start

Use the hosted SSH server
ssh swap.kyc.rip

Verify the host key fingerprint the first time you connect:

SHA256:wavvotTfJrgK/kY3qG3rdA3OY7Qs9sRXYXCi2tO8KYY

It is also published on https://swap.kyc.rip and inside the TUI's About tab. If your ssh client shows a different fingerprint, do not proceed — that's a man-in-the-middle.

Encrypted channels
Channel Connect
clearnet ssh swap.kyc.rip
Tor torsocks ssh ozz6kgrbp6epsxhrid456udvwj3vzecb4f7jz5orxcrpxn4f2bejuyid.onion
I2P ssh -o ProxyCommand='nc -X 5 -x 127.0.0.1:4447 %h %p' r4ziaqaec7w73x7ltpz5pi5kswclgjdw6ioyz25mbtrisprneqhq.b32.i2p

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

Install the local CLI
# macOS / linux via Homebrew
brew install kyc-rip/tap/kyc-cli

# linux / macOS one-liner (verifies sha256, drops binary in PATH)
curl -fsSL https://cli.kyc.rip/install.sh | sh

# Windows / arbitrary unix
# Grab a tarball/zip from the GitHub Releases page:
#   https://github.com/kyc-rip/cli/releases

Then run:

kyc-cli

The local CLI talks to api.kyc.rip directly — no SSH layer involved.


How it works

The wizard walks you through:

PickFrom → PickTo → Amount → Address → Memo
   ↓         ↓        ↓        ↓        ↓
        Quote (best route across all engines)
                       ↓
                   Confirm
                       ↓
              Deposit address + QR
                       ↓
            Auto-poll status (5s) → Done
  • Numbered shortcuts (19) on the asset pickers, plus free-text ticker entry (e.g. USDT-TRC20).
  • Mouse support — click tabs, asset rows, buttons.
  • Pre-flight address validation for BTC, ETH/EVM, XMR, SOL, TRX, LTC, DOGE, BCH, ZEC. Catches typos before they cost you money.
  • Track tab — paste a trade ID, watch the status auto-refresh.

Repo layout

cmd/sshwap          SSH server entry point  (server-side, runs the host)
cmd/kyc-cli         Local CLI entry point   (client-side, what users install)

internal/tui        Bubble Tea model + Lip Gloss styles + bubblezone (mouse)
internal/api        REST client for /v2/exchange/{currencies,estimate,create,status}
internal/sshhost    gliderlabs/ssh wrapper, hardening, /healthz + /metrics

deploy/             nginx vhost, systemd unit, install.sh
scripts/install.sh  curl|sh installer (verifies sha256)
.goreleaser.yml     cross-build pipeline (linux/macos/windows × amd64/arm64)

The two binaries share internal/tui and internal/api 1:1.


Build from source

Requires Go 1.25+.

git clone https://github.com/kyc-rip/cli
cd cli
make build           # → ./bin/sshwap and ./bin/kyc-cli
make test            # go test -race ./...

Or directly:

go install github.com/kyc-rip/cli/cmd/kyc-cli@latest

Self-host your own SSH server

The SSH host is a single static binary; the systemd unit and an installer helper are in deploy/.

make sshwap                                            # build
scp ./bin/sshwap deploy/sshwap.service user@vps:/tmp/  # ship
ssh user@vps sudo bash -s < deploy/install.sh          # install

Defaults: binds :22 (or :2222 if you keep OpenSSH on 22), runs as a non-root sshwap user with CAP_NET_BIND_SERVICE, persists the host key at /var/lib/sshwap/host_ed25519, exposes /healthz and /metrics on 127.0.0.1:9090.

Hardening baked in: PTY-only, no exec / forward / subsystem / agent forwarding; per-IP and global session caps; idle + handshake timeouts.


Security

See SECURITY.md for the threat model and responsible- disclosure contact.

TL;DR: sshwap holds no funds, no accounts, and no persistent state. It's a thin client over the kyc.rip aggregator REST API; orders settle directly between the upstream exchange engine and your destination wallet.


License

MIT — see LICENSE.


Directories

Path Synopsis
cmd
kyc-cli command
sshwap command
internal
api
tui
update
Package update implements self-update for the kyc-cli binary.
Package update implements self-update for the kyc-cli binary.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL