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)