Skip to main content

Modern Python CLI for Nostr interactions - key generation, event creation, and relay management

Project description

⚡ Nostress

Nostress Banner

PyPI - Downloads Python Version CI Tests Documentation Status Test Coverage Lightning

A modern, secure, and lightning-fast CLI for Nostr protocol interactions

Nostress empowers developers and Nostr enthusiasts with a powerful command-line interface for seamless key management, event creation, and relay interactions. Built with security-first principles and modern Python practices, it's the tool you've been waiting for to dive deeper into the decentralized web.

✨ Why Nostress?

🔐 Security First: Cryptographically secure key generation using industry-standard secp256k1 elliptic curve cryptography

⚡ Lightning Fast: Built with modern Python and optimized for performance with rich terminal interfaces

🛠️ Developer Friendly: Intuitive CLI with comprehensive help, JSON output, and scripting support

🔄 Format Flexible: Seamless conversion between hex and bech32 formats (nsec/npub)

🎨 Beautiful Output: Rich terminal formatting with tables, colors, and verbose modes

🚀 Quick Start

Installation

# Install via pip
pip install nostress

# Or using uv (recommended for development)
uv pip install nostress

# Verify installation
nostress --help

Your First Keypair

# Generate a new keypair (hex format)
nostress keys generate

# Generate in bech32 format with verbose output
nostress keys generate --format bech32 --verbose

# Generate both formats and save to file
nostress keys generate --format both --output my-keypair.txt

# JSON output for scripting
nostress keys generate --json

🔑 Core Features

Key Management Made Simple

Generate Secure Keypairs

# Basic generation
nostress keys generate

# Multiple formats
nostress keys generate --format both --verbose

# Encrypted storage
nostress keys generate --encrypt --output secure-key.txt

Validate Any Key

# Validate hex keys
nostress keys validate abc123...def

# Validate bech32 keys with type checking
nostress keys validate nsec1... --type nsec
nostress keys validate npub1... --type npub

Format Conversion

# Convert between hex and bech32 formats
nostress keys convert nsec1... --to hex
nostress keys convert abc123... --to bech32 --type private

Advanced Features

  • 🔒 Encryption Support: Password-protected key storage
  • 📊 Rich Output: Beautiful tables and formatted displays
  • 🤖 JSON Mode: Perfect for automation and scripting
  • 🔍 Verbose Logging: Detailed operation insights
  • 📁 File Operations: Save and load keys securely

🏗️ Architecture & Design

Nostress is built with a clean, modular architecture:

  • CLI Layer: Intuitive command interface with Typer
  • Core Logic: Cryptographic operations with the cryptography library
  • Utilities: Validation, formatting, and configuration management
  • Rich Integration: Beautiful terminal output with colors and tables

Tech Stack

  • Python 3.12+: Modern Python with type hints
  • Typer: Powerful CLI framework with auto-completion
  • Rich: Beautiful terminal formatting
  • Cryptography: Industry-standard cryptographic operations
  • Pydantic: Data validation and models

📖 Documentation

📚 For comprehensive documentation, tutorials, and API reference, visit our ReadTheDocs site

Quick Command Reference

# Main help
nostress --help

# Key management commands
nostress keys --help

# Specific command help
nostress keys generate --help
nostress keys validate --help

Configuration

Nostress follows XDG Base Directory standards for configuration:

  • Config: ~/.config/nostress/
  • Data: ~/.local/share/nostress/
  • Cache: ~/.cache/nostress/

🛣️ Roadmap

Current Features (v0.1.x)

  • ✅ Secure key generation (hex/bech32)
  • ✅ Key validation and verification
  • ✅ Format conversion between hex/bech32
  • ✅ Rich terminal output and JSON support
  • ✅ Encrypted key storage

Coming Soon (v0.2.x)

  • 📝 Event creation and signing
  • 🔗 Relay connection management
  • 🏪 Event publishing and querying

Future Plans (v1.0+)

  • 📊 Advanced event filtering and search
  • 🔐 Multi-signature support
  • ⚡ Lightning integration
  • 🕸️ Web interface companion

💖 Support the Project

Love Nostress? Support its development by sending some sats or connecting on Nostr!

⚡ Lightning Payments

Lightning Address: hberaud@nostrcheck.me

Lightning QR Code

Scan to send lightning payments

Your support helps maintain and improve Nostress, ensuring it remains free and open-source for the entire Nostr community.

🫂 Follow on Nostr

Nostr Public Key: npub1azaaxhlx3v8lex2gnyxzq8ws9nxsh8ga30d64jeaqxw4e75vxufqm434ty

Nostr QR Code

Scan to follow me on Nostr

Other Ways to Contribute

  • 🌟 Star the repository to show your support
  • 🐛 Report bugs and suggest features
  • 💻 Contribute code via pull requests
  • 📖 Improve documentation and examples
  • 🗣️ Spread the word in the Nostr community

📄 License

Nostress is open-source software. Check the LICENSE file for details.

🤝 Contributing

We welcome contributions from the community! Whether it's:

  • Bug fixes and improvements
  • New features and commands
  • Documentation updates
  • Test coverage improvements

Please see our contribution guidelines and feel free to open issues and pull requests.

🔗 Connect


Built with ❤️ for the Nostr community

Nostress - Where cryptographic security meets developer experience

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nostress-0.2.0.tar.gz (707.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nostress-0.2.0-py3-none-any.whl (28.2 kB view details)

Uploaded Python 3

File details

Details for the file nostress-0.2.0.tar.gz.

File metadata

  • Download URL: nostress-0.2.0.tar.gz
  • Upload date:
  • Size: 707.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for nostress-0.2.0.tar.gz
Algorithm Hash digest
SHA256 2e8c302a73c19704e0a6d96de15cadc2b66a19b83ea2ca1bae0b251b9dd8d4e1
MD5 79fd8a6ddbe9556917885574a96da37a
BLAKE2b-256 6fa29f4ddd4e5327911cfdbb12715e129f1fff683bcab6c1f2e7cbb850abaa5d

See more details on using hashes here.

Provenance

The following attestation bundles were made for nostress-0.2.0.tar.gz:

Publisher: ci.yml on 4383/nostress

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nostress-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: nostress-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 28.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for nostress-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4d89ea85eed980a2b82f81bc607114d88ced1489756bceadf4c07336862362e4
MD5 33c30cb7f29e643de43d28d730a97a47
BLAKE2b-256 28ead3b13a03f5527ee4d214348449ab3b79a1b06e65effbb7f3b52d2de49e72

See more details on using hashes here.

Provenance

The following attestation bundles were made for nostress-0.2.0-py3-none-any.whl:

Publisher: ci.yml on 4383/nostress

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page