A soft, clean Stellar wallet. Nyx starts as a simple wallet — create or import a key, see balances, send and receive XLM and custom assets, manage trustlines, and review your transaction history — and is structured so bill payments and fiat off-ramping (via Stellar anchors) can plug in later without a rewrite.
Currently targets Stellar testnet; switching to mainnet is a one-line config change.
Nyx is self-custody and needs no browser extension. On Create wallet it generates a keypair in your browser and shows the secret key exactly once for backup; Import wallet accepts an existing secret key. Either way the key is encrypted with your password — AES-256-GCM with a PBKDF2-SHA256-derived key, 600,000 iterations, and a random salt and IV — and only the encrypted blob is stored, in localStorage. The decrypted key lives in memory while unlocked and is destroyed after 5 minutes of inactivity, when the tab closes, when you press Lock, and entirely when you Log out (which deletes the stored wallet). Transactions are signed locally, only after you confirm the review screen. Read more in docs/security.md.
Nyx has not yet had a professional security review. Treat it as experimental and use testnet only until one has happened.
Requirements: Node.js 18.17+.
npm ci
cp .env.example .env.local # defaults are already in .env; override if needed
npm run devOpen http://localhost:3000. With no wallet stored yet you'll land on /create: generate a keypair (or import a secret key), save the one-time secret key backup, and set an unlock password.
- Create your wallet as above (testnet is the default network).
- Copy your public key from Nyx's Receive page.
- Fund it with Friendbot — the dashboard links directly when it detects an unfunded account.
Set NEXT_PUBLIC_STELLAR_NETWORK=mainnet (env var at deploy time, or in
.env.local). All Horizon URLs, passphrases, and explorer links live in one
file: lib/stellar/config.ts.
npm run lint # ESLint (next/core-web-vitals)
npm run typecheck # strict TypeScript, no emit
npm test # Vitest unit tests for lib/
npm run build # production buildPre-commit hooks (Husky + lint-staged) run the same checks on staged files.
CI runs lint, typecheck, tests, npm audit, and build on every push and PR.
Any Node host or static export that supports Next.js 14 works — the app is
fully client-side against public Horizon endpoints, so there are no secrets
to configure. Set NEXT_PUBLIC_STELLAR_NETWORK as a build/deploy variable.
| Doc | What's inside |
|---|---|
| Architecture | Layers, data flow, where phases 2–3 plug in |
| Security | Key handling, threat model, out of scope |
| Testing checklist | Manual testnet walkthrough |
| Roadmap | Bill payments and anchor off-ramping |
| Contributor backlog | Scoped issues ready to pick up |
| Contributing | Setup, conventions, PR checklist |
| Changelog | Release notes (Keep a Changelog) |
MIT — see LICENSE.