3.7 KiB
🕊️ Eve Lite
A lightweight, encrypted Nostr relay that puts your community's privacy first
Eve Lite is your personal gateway to secure, decentralized communities It creates encrypted "Closed Community Networks" (CCNs) where your messages stay truly private, from everyone.
✨ What makes Eve Lite special?
Privacy by Design: Unlike traditional Nostr relays where your messages are visible to everyone, Eve Lite encrypts everything. If someone gains access to the data, they'll only see encrypted gibberish.
Extensible with Arxlets: Think of Arxlets as mini-apps that run within your CCN. Want custom functionality? Write an Arxlet. Need to share functionality? Publish it for others to use.
Dead Simple Setup: No complex configurations or database management. Eve Lite handles the heavy lifting so you can focus on communicating.
Invite-Only Networks: Create closed communities with your friends, family, or team. Share invite codes to bring people into your private space.
🏗️ How it works
Closed Community Networks (CCNs)
A CCN is like your own private island in the Nostr ocean. Each CCN has:
- Unique encryption keys - Messages are encrypted with network-specific keys
- Local relay instance - Each member's own strfry relay runs locally on port 6942
- Persistent storage - All messages are stored locally on each member's device and encrypted
The Magic Behind the Scenes
- Encrypted Message Flow: When you send a message, Eve Lite encrypts it before sending to remote relays
- Smart Decryption: Incoming encrypted messages are automatically decrypted and stored locally
- Dual Relay System: Remote encrypted storage + local decrypted access = best of both worlds
- Event Deduplication: Smart caching prevents processing the same event twice
Arxlets: Your Extensibility Layer
Arxlets are JavaScript-based apps that add functionality to your CCN:
- Stored as Nostr events (kind 30420)
- Compressed with Brotli for efficiency
- Can be shared across networks
- Perfect for custom UI components, utilities, or integrations
🔧 API Reference
Eve Lite exposes a RESTful API for building applications:
CCN Management
GET /api/ccns
- List all CCNsPOST /api/ccns/new
- Create a new CCNPOST /api/ccns/join
- Join an existing CCNGET /api/ccns/active
- Get the active CCNPOST /api/ccns/active
- Switch active CCN
Events & Messages
POST /api/events
- Query events with filtersPUT /api/events
- Publish a new eventGET /api/events/:id
- Get specific eventPOST /api/sign
- Sign an event with your key
Profiles & Identity
GET /api/avatars/:pubkey
- Get user avatarGET /api/profile/:pubkey
- Get user profileGET /api/pubkey
- Get your public key
Arxlets
GET /api/arxlets
- List installed ArxletsGET /api/arxlets/:id
- Get specific ArxletGET /api/arxlets-available
- Browse available Arxlets
🛠️ Development
Running Tests
bun test
bun test --watch # Watch mode
Code Quality
This project uses Biome for linting and formatting:
bunx @biomejs/biome check
bunx @biomejs/biome format --write
🤝 Contributing
Found a bug? Have a feature idea? Contributions are welcome!
- Fork the repository
- Create a feature branch:
git checkout -b my-cool-feature
- Make your changes and add tests
- Submit a pull request
📝 License
AGPLv3. See LICENSE.md for details.
🙋♀️ Questions?
- Check out the Arxlet documentation for extending functionality
- Browse the source code - it's well-documented and approachable
- Open an issue if you find bugs or have suggestions
Built with ❤️ for privacy-conscious humans who believe communication should be truly private.