Running locally
Suho is three packages in one repo: contracts (Foundry), guardian (Node), and app (Vite + React). The docs and landing live in docs and site.
Prerequisites
- Node 20+.
- Foundry, for the contracts.
- A
.envat the repo root with testnet-only keys. See.env.example. Never commit it.
Guardian
bash
cd guardian
npm install
npm run dev # http://localhost:8787The guardian serves the app's reads and relays. Recovery codes are emailed to the account's registered address; the old public /issuer code portal is retired (it now returns 410).
App
bash
cd app
npm install
npm run dev # http://localhost:5173A fresh browser profile lands on onboarding. Use the demo account for a quick tour.
Health check
Both should return 200.
bash
curl -s -o /dev/null -w "app %{http_code}\n" http://localhost:5173/
curl -s -o /dev/null -w "guardian %{http_code}\n" http://localhost:8787/healthIf the app shows "Can't reach the guardian service", start the guardian and re-check.
Contracts
bash
cd contracts
forge test --fork-url https://sepolia-rpc.giwa.io -j 1The suite forks GIWA Sepolia and runs serially to avoid RPC rate limits. See The findings.
Docs and landing
bash
cd docs
npm install
npm run docs:build # outputs to ../site/docsThe landing page is static in site. The docs build into site/docs, so both deploy together from site.