# AGENTS.md — Vega This file guides AI coding agents working on this codebase. **See `CLAUDE.md` for the authoritative, up-to-date architecture and conventions.** --- ## What is Vega? Vega is a cross-platform desktop Nostr client built for Mac, Windows, and Linux. Named after Jurij Vega (1754–1802), Slovenian mathematician. The goal: best Nostr desktop experience — polished UI, deep Lightning integration, full NIP coverage, performance that feels native. --- ## Tech Stack | Layer | Technology | |---|---| | Desktop shell | Tauri 2.0 (Rust backend) | | Frontend | React 19 + TypeScript (Vite 7) | | Nostr protocol | NDK (Nostr Dev Kit) | | Lightning | Nostr Wallet Connect (NIP-47) | | Styling | Tailwind CSS 4 | | State management | Zustand | | Local storage | SQLite via `rusqlite` (bundled) | | Key storage | OS keychain via `keyring` crate | --- ## Coding Conventions ### TypeScript / React - Functional components only, no class components - Zustand stores per domain (`src/stores/`) - Types in `src/types/` — never use `any` - NDK interactions only through `src/lib/nostr/` wrapper - Lightning/NWC only through `src/lib/lightning/` wrapper - Tailwind classes only — no inline styles (except unavoidable WebkitUserSelect) ### Rust - Commands return `Result` - Private keys only in OS keychain via `keyring` crate - No secrets logged in production ### General - No secrets, keys, or credentials committed to git - Private docs (drafts, specs, research) go in `private_docs/` (gitignored) - Prefer explicit over clever --- ## What to Avoid - Do NOT add dependencies without checking if the existing stack covers it - Do NOT store private keys anywhere except the OS keychain - Do NOT expose Lightning credentials to the frontend/JS layer - Do NOT use inline styles — use Tailwind classes - Do NOT add paywalls to core social/protocol features --- ## Monetization Open source client (MIT) + closed source server-side premium services. Core social features stay fully free. Revenue at the edges (PRO relay, NIP-05, analytics).