upstream

Start

Quickstart

Look up an account, get a code, check a page. Three commands.

Setup

You need Node 20 or newer. The CLI has no dependencies beyond the engine in this repo.

git clone <the repo>
cd upstream
node cli/upstream.mjs help

1. Look up an account

node cli/upstream.mjs lookup twitch.tv/twitch
Twitch  Twitch (twitch)
  id         12826
  url        https://www.twitch.tv/twitch
  live       offline
  followers  2470241
  proof text "Twitch is where thousands of communities come together for whatever, every day. "

This is a real read of the public page. The id is what a vault would be bound to.

2. Get the code for a wallet

node cli/upstream.mjs code --mint <mint> --wallet <your wallet> twitch.tv/yourname

It prints the code and where to paste it. The code only works for that wallet and that coin.

3. Check the page

node cli/upstream.mjs verify --mint <mint> --wallet <your wallet> twitch.tv/yourname

If the code is on the page you get VERIFIED and a signed attestation as JSON. If not, you get CODE NOT FOUND and the exit code is 2, so it works in scripts.

Watch the whole life of a vault

node cli/upstream.mjs demo

Runs a vault from launch to claim with real Ed25519 signatures and a stand-in bio. Output on the Examples page.

In the browser

The app does the same three steps with a form. GitHub and Twitch are read live from the page. YouTube needs an API key in config.js because YouTube does not allow reads from other sites; the CLI has no such limit.

Run the tests

npm test                     # 34 tests, no network
node tests-js/live.mjs       # reads real profiles on all four platforms
npm run verify               # everything, including the on-chain program (needs the toolchain, see On-chain program)