Jure 7f3dafa97a README: link to veganostr.com, refresh signature notes
- Website was never linked from the README. Add a header link line
  (Website / Download / AUR) directly under the tagline and a second
  pointer in the Download section.
- Verify example used vega_0.12.1_amd64.AppImage.tar.gz — AppImage was
  dropped in v0.1.6. Swap in a current .deb example.
- Sig note was stale: .deb and .rpm actually ship with minisign
  signatures now (tauri-action unified installer and updater artifacts).
  Only .dmg is unsigned.
2026-04-23 19:51:11 +02:00
2026-04-23 19:20:37 +02:00
2026-03-30 21:14:02 +02:00
2026-03-08 14:05:56 +01:00

Vega

Wrystr is now Vega. Same project, same developer, new name. If you were using Wrystr, your data migrates automatically on first launch — no action needed. Read more about the rename.

A cross-platform desktop Nostr client built with Tauri 2.0 + React + TypeScript. Polished UI, deep Lightning integration, and first-class support for long-form writing.

Website: veganostr.com · Download: Releases · AUR: vega-nostr-git

Named after Jurij Vega (17541802), a Slovenian mathematician who made knowledge accessible through his pioneering logarithm tables — just as Vega makes writing accessible on Nostr.

Download

Grab the latest release from the Releases page, or visit veganostr.com for screenshots and an introduction.

Platform File Command
Ubuntu / Debian / Mint .deb sudo dpkg -i vega_*.deb
Fedora .rpm sudo rpm -i vega-*.rpm
openSUSE .rpm sudo zypper install vega-*.rpm
Arch / Manjaro AUR yay -S vega-nostr-git
Windows .exe installer run the installer
macOS (Apple Silicon) aarch64.dmg open and drag to Applications

Windows note: The installer is not yet code-signed. Windows SmartScreen will show an "Unknown publisher" warning — click "More info → Run anyway" to install.

Linux note: Video and audio playback requires GStreamer codec packages. The AUR package installs these automatically. For .deb/.rpm installs, you may need:

# Arch / Manjaro
sudo pacman -S gst-plugins-base gst-plugins-good gst-libav

# Ubuntu / Debian
sudo apt install gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-libav

# Fedora
sudo dnf install gstreamer1-plugins-base gstreamer1-plugins-good gstreamer1-libav

Verifying signatures

Release updater artifacts (.tar.gz, .nsis.zip, .app.tar.gz) include .sig files signed with minisign. To verify:

# Save the public key
echo "untrusted comment: minisign public key: F9D2C39297592652
RWRSJlmXksPS+cSpOrnmUpmJSebrbT1gxNeS33X/S7fxBAb/SdvWewNm" > vega.pub

# Verify an artifact
minisign -Vm Vega_0.12.9_amd64.deb -p vega.pub

Note: The macOS .dmg is not yet signed. Linux .deb/.rpm and Windows .exe/.msi ship with minisign .sig files — the same signatures used by the auto-updater.

Features

Identity & accounts

  • In-app key generation with plain-language nsec backup — no browser extension required
  • Create new account from the account switcher — no need to restart or go through onboarding again
  • Login with nsec (full access) or npub (read-only)
  • NIP-46 remote signer — connect via bunker:// URI (nsecBunker, Amber, etc.) with session persistence across restarts
  • Multi-account switcher — save multiple identities, switch instantly from the sidebar
  • OS keychain integration — nsec stored in macOS Keychain / Windows Credential Manager / Linux Secret Service; sessions survive restarts

Feed & content

  • Live streaming feed — persistent relay subscriptions deliver new notes in real-time; no manual refresh needed
  • Global and following feeds with live relay connection
  • Language/script feed filter — filter by writing system (Latin, CJK, Cyrillic, Arabic, Korean, etc.) via dropdown in feed header; uses Unicode detection + NIP-32 language tags
  • Compose notes, inline replies, nested thread trees with reply-to-any-note and multi-level back navigation
  • Image upload with NIP-98 auth — paste from clipboard, drag-drop, or use the file picker; uploads authenticated via NIP-98 HTTP Auth with fallback services
  • Image lightbox — click any image to view full-screen; Escape to close, arrow keys to navigate multi-image posts
  • Feed reply context — replies show "↩ replying to @name"; click to jump to the parent thread or scroll to it in the current thread
  • Reactions (NIP-25) with live network counts
  • Follow / unfollow (NIP-02) with contact list publishing
  • Quote & Repost (NIP-18) — one-click repost or quote with compose modal
  • Bookmarks (NIP-51 kind 10003) — save/unsave notes and articles; Notes/Articles tabs in bookmark view; article bookmarks use a tags for parameterized replaceable events; synced to relays
  • Mute users (NIP-51) — muted list synced to relays, filtered from feed
  • Long-form article experience (NIP-23) — markdown toolbar (bold, italic, heading, link, image, quote, code, list) with keyboard shortcuts (Ctrl+B/I/K); multi-draft management with draft list, resume, delete; cover image file picker; dedicated article feed with Latest/Following tabs; article search by keyword or hashtag; article reader with reading time, bookmark, like, and zap; profile Articles tab
  • Quoted note inline previewnostr:note1… / nostr:nevent1… renders as an inline card
  • naddr clickable linksnostr:naddr1… references resolve to clickable named links (article titles, etc.)
  • Syntax highlighting — code blocks in notes and articles render with syntax highlighting
  • Note rendering: images, video, mentions, hashtags, njump.me link interception
  • External links — all http(s) links open in your system browser via Tauri opener
  • Emoji reactions — reaction picker with common emojis on note cards; emoji insertion in compose and reply boxes via categorized emoji picker
  • Keyword muting — word/phrase mute list with client-side filtering across all views
  • Web of Trust filter — hide notes, reactions, and zaps from people outside your social graph (people you follow + follows-of-follows), powered by Vertex DVM trust scoring; toggleable in Settings
  • Direct Messages (NIP-04 + NIP-17 gift wrap) — conversation list, thread view, per-message decryption; unread badge in sidebar
  • Notifications — background poller (60s) for mentions, zaps, new followers; each type independently toggleable; OS push notifications; 🔔 in sidebar with unread badge
  • New follower badges — recently gained followers marked with a "new" badge and sorted to the top of your follows list

Relay & network

  • Relay status badge — compact "8/12 relays" indicator in feed header with color coding (green/yellow/red by connection ratio); hover shows per-relay connection status
  • Toast notifications — transient status messages for relay events: "Connection lost — reconnecting", "Back online", "Relays reconnected"
  • Relay health checker — NIP-11 info fetch, WebSocket latency probing, online/slow/offline classification; expandable cards show all supported NIPs, software, description; per-relay remove button; "Remove dead" strips offline relays; "Publish list" publishes NIP-65 relay list; auto-checks on mount
  • Relay recommendations — discover relays based on your follows' NIP-65 relay lists; shows follow count, one-click "Add"
  • Embedded Nostr relay — built-in strfry relay with catch-up sync on startup; your notes are always available locally even when remote relays are slow or offline
  • Vega public relaywss://relay2.veganostr.com included by default; custom Go relay with NIP-45/50/77, ensuring data availability when other relays are flaky or down
  • Relay management: add/remove relays, all in one consolidated Relays view
  • NIP-65 outbox model — reads user relay lists (kind 10002) so you see notes from people who publish to their own relays; publish your own relay list to Nostr

Podcasts & Value 4 Value

  • Built-in podcast player — search and play podcasts via Fountain.fm integration with Podcast Index enrichment
  • V4V streaming — stream sats per minute to podcast creators while listening via Lightning (keysend + LNURL-pay)
  • Auto-streaming — enable once, and V4V starts automatically on every supported episode at your chosen rate
  • Per-episode caps & weekly budgets — set spending limits; streaming stops automatically when caps are reached
  • V4V sidebar section — dedicated dashboard with live streaming status, budget bars, stats, settings, and full history
  • Recipient breakdown — see exactly who gets paid and their split percentages
  • V4V nudge — brief non-intrusive tooltip when a V4V-enabled episode starts playing (once per episode per session)
  • V4V badges on episodes V4V pill on episode cards so you know which shows support it

Lightning & zaps

  • Per-account NWC wallet — each account remembers its own Lightning wallet; switching accounts loads the correct one automatically
  • NWC guided wizard — wallet picker (Alby Hub, Alby Extension, Mutiny, Phoenix) with per-wallet setup steps and inline URI validation
  • Send zaps via NWC (NIP-47 + NIP-57) with amount presets, custom amounts, comment
  • Zap counts on notes ( N sats inline)
  • Zap history — Received and Sent tabs with amounts, counterparts, comments, and clickable note previews
  • Support / About page — zap the developer, Lightning + Bitcoin QR codes, Ko-fi and GitHub links

Discovery

  • Trending feed — trending notes and articles from the last 24h, ranked by engagement with time decay scoring
  • Media feed — dedicated "Media" view in sidebar with All/Videos/Images/Audio tab filtering
  • Dedicated hashtag pages — clicking any #tag opens a live feed for that hashtag
  • Trending hashtags — popular hashtags shown as clickable pills on the search idle screen
  • Discover people — "follows of follows" suggestions on the Search page with mutual follow counts and one-click follow; persistent "don't suggest again" per person
  • Advanced searchby:author, mentions:npub, kind:number, is:article, has:image, since:2026-01-01, until:2026-12-31, #hashtag, "exact phrase", boolean OR; NIP-05 resolution for author lookups; client-side content filters for media types; search help panel with modifier reference
  • Search: NIP-50 full-text, #hashtag, people search with inline follow, article search (kind 30023)
  • NIP-05 verification badges — cached verification with green checkmark on note cards

Personalization

  • Color themes — 7 built-in themes: Midnight (default dark), Light, Catppuccin Mocha, Sepia, Gruvbox, Nord Frost, Hackerman; instant switching from Settings
  • Font size — Small / Normal / Large / Extra Large presets; scales the entire UI uniformly

Performance & UX

  • Resilient relay connectivity — all relay queries have timeouts (no more infinite loading); automatic reconnection with NDK instance reset as last resort; toast notifications for connection events; feed diagnostics for debugging
  • Per-tab "last updated" timestamp — relative time indicator in feed header shows how fresh each tab's data is
  • Subscription debug panelCtrl+Shift+D toggles a hidden panel showing NDK uptime, live subscription status, per-relay state, feed timestamps, and recent diagnostics
  • Auto-updater — "Update & restart" banner when a new version is available
  • SQLite note cache — feed loads instantly from local cache on startup; profiles cached for immediate avatar display
  • Data export — export bookmarks, follows, and relay list as JSON via native save dialog
  • Profile media gallery — "Media" tab on profiles shows a grid of the user's images, videos, and audio; images open in lightbox
  • Reading list tracking — read/unread state on bookmarked articles with unread dot indicators and sidebar badge
  • Profile banner polish — hero-height banner with click-to-lightbox, avatar overlaps banner edge with ring
  • System tray — close button hides to tray; "Quit" in tray menu to fully exit
  • Collapsible sidebar (icon-only mode)
  • Keyboard shortcutsn compose, / search, j/k navigate feed, Esc back, ? help overlay
  • Skeleton loading placeholders, view fade transitions
  • Media pause on navigation — video and audio in feed automatically pause when you navigate to another view
  • Accessibility — WCAG AA contrast compliance, ARIA labels, reduced motion support
  • Podcast player stability — 15s loading timeout with user-friendly error messages; automatic V4V stop on audio failure
  • Read-only mode banner — persistent top-of-app warning when not signed in, so you always know you're in read-only mode

Supported NIPs

NIP Description Status
NIP-01 Basic protocol flow Full
NIP-02 Follow list Full
NIP-04 Encrypted direct messages (legacy) Full
NIP-05 DNS-based verification Full (display + live verify in editor)
NIP-10 Reply threading Full (nested trees, root+reply markers)
NIP-11 Relay information Full (health checker)
NIP-17 Private direct messages (gift wrap) Full
NIP-18 Reposts Full
NIP-19 bech32-encoded entities Full (npub, nsec, note, nevent, nprofile, naddr)
NIP-21 nostr: URI scheme Full
NIP-23 Long-form content (articles) Full (editor, reader, feed, search)
NIP-25 Reactions Full (emoji reactions)
NIP-27 Text note references Full
NIP-32 Labeling Partial (language filter via script tags)
NIP-46 Nostr Connect (remote signer) Full (bunker:// login)
NIP-47 Wallet Connect (NWC) Full
NIP-50 Search Full (notes, articles, people)
NIP-51 Lists Partial (bookmarks, mute list)
NIP-57 Zaps Full
NIP-65 Relay list metadata Full (outbox model)
NIP-98 HTTP Auth Full (image uploads)

Stack

Layer Technology
Desktop shell Tauri 2.0 (Rust)
Frontend React 19 + TypeScript + Vite
Nostr protocol NDK 3.x (Nostr Dev Kit)
Styling Tailwind CSS 4
State Zustand
Local storage SQLite (rusqlite, bundled)
Keychain keyring crate (OS-native)

Development

# Prerequisites: Node.js 20+, Rust stable, @tauri-apps/cli
npm install
npm run tauri dev       # full app with hot reload
npm run dev             # browser only (no Tauri window)
npm run tauri build     # production binary

Roadmap

See ROADMAP.md for the full prioritised next steps.

Up next:

  • Custom feeds / lists
  • NIP-96 file storage
  • NIP-58 badges, NIP-72 communities
  • WoT-powered feed ranking

Support

Vega is free and open-source. If it's useful to you:

Method Details
Zap (in-app) Open the support view in Vega's sidebar and zap directly
Lightning jure@getalby.com
₿ Bitcoin bc1qcgaupf80j28ca537xjlcs9dm9s03khezjs7crp
Ko-fi ko-fi.com/jure
♥ GitHub Sponsors github.com/sponsors/hoornet
★ GitHub star Helps with visibility and grant applications

Wrystr is now Vega

In March 2026, Wrystr was renamed to Vega — named after Jurij Vega (17541802), a Slovenian mathematician and artillery officer from the same region as the developer. Vega made knowledge accessible through his pioneering logarithm tables; this project aims to do the same for writing on Nostr.

Why rename? Wrystr was a working title that never rolled off the tongue. With real users arriving, it was time for a name that's easy to say, easy to remember, and carries meaning.

What changed:

  • GitHub repo: hoornet/wrystrhoornet/vega (old URLs redirect)
  • AUR package: wrystr-gitvega-nostr-git
  • Binary name: wrystrvega
  • Database: auto-migrates wrystr.dbvega.db on first launch
  • Settings, keychain, localStorage: preserved automatically, no action needed

What didn't change: The code, the features, the developer, the license. It's the same project.

Acknowledgements

Vega is built on the shoulders of excellent open-source projects:

License

MIT License — Copyright (c) 2026 Jure Sršen — hoornet

Languages
TypeScript 91%
Rust 6.5%
Shell 1.4%
CSS 0.7%
JavaScript 0.3%