r/uqny is an experimental, self-hosted, peer-to-peer communication project focused on resilient communication across different network transports.
The project explores how messaging and voice communication can work without depending on third-party communication services, while remaining secure, portable, and adaptable to different connectivity conditions.
Status: Early development / Experimental
The long-term goal of r/uqny is to build a communication system that can operate across multiple transport mediums:
- Internet / IP networks
- Bluetooth
- Radio
- Potentially other transports in the future
The application and communication layers should remain as independent as possible from the underlying transport.
Conceptually:
r/uqny
│
Communication Layer
│
Session / Protocol
│
Security Layer
│
Transport Layer
│
┌────────────┼────────────┐
│ │ │
Internet Bluetooth Radio
This architecture is intended to allow r/uqny to eventually use different transports without requiring the communication layer to be fundamentally rewritten.
The project is developed incrementally. Early versions prioritize learning, correctness, interoperability, and stability over feature count.
Establish the core project, node, protocol, identity, transport, peer, and session foundations.
- Create initial protocol design
- Define basic message format
- Create initial test structure
- Create a minimal CLI prototype
- Implement node lifecycle
- Implement configuration system
- Implement cryptographic node identity
- Implement Ed25519 node identity keys
- Derive node IDs from public keys
- Implement protocol message envelope
- Implement JSON message encoding/decoding
- Implement TCP listener
- Implement TCP dialer
- Implement length-prefixed TCP message framing
- Implement transport connection abstraction
- Implement authenticated handshake foundation
- Sign handshake data using node identity
- Verify handshake signatures and node identity
- Validate remote handshakes before establishing sessions
- Define peer and session concepts
- Implement peer management
- Implement session abstraction
- Implement session state management
- Integrate authenticated handshake with sessions
- Connect peers with sessions
- Implement basic logging
- Establish development documentation
- Implement node-level connection/session management
- Define connection lifecycle after handshake
- Implement connection timeout handling
- Implement connection error handling
- Implement challenge-response authentication
- Implement replay protection
Current goal:
Two r/uqny nodes can establish a basic authenticated communication session.
Note: The current handshake is a foundation for peer authentication. It validates the remote handshake signature and node identity, but it is not yet the final production security protocol and does not yet provide full replay protection or connection-specific challenge/response.
Focus on basic communication without depending on third-party communication services.
- Peer discovery on LAN
- P2P connection establishment foundation
- Peer identification
- Text messaging foundation
- Message IDs
- Timestamps
- Basic acknowledgements
- Connection timeout handling
- Connection error handling
- Peer connection state management
- Microphone input
- Audio playback
- Audio encoding/decoding
- Voice packetization
- Basic jitter handling
- Packet-loss handling
- Call establishment
- Call termination
- Mute functionality
- Internet P2P connectivity
- NAT traversal research
- Connection establishment across different networks
- Reconnection
- Network interruption handling
- Connection quality monitoring
- Crash handling
- Invalid packet handling
- Network interruption recovery
- Audio quality improvements
- Stress testing
- Automated tests
- Documentation improvements
- Compatibility testing
v0.1 goal:
Reliable peer-to-peer messaging and voice communication.
Focus on making communication private and authenticated.
The cryptographic node identity and initial authenticated handshake introduced during v0.0 provide the foundation for this phase.
- Cryptographic node identity foundation
- Public/private key pairs
- Node identity verification foundation
- Authenticated handshake foundation
- Key exchange
- Secure session establishment
- Session key management
- E2EE text messages
- Message integrity protection
- Replay protection
- Secure key handling
- Key rotation
- Encrypted voice transport
- Secure session keys
- Authentication
- Integrity protection
- Security testing
v0.2 goal:
Messages and voice communication are protected by end-to-end encryption.
r/uqny will use established cryptographic primitives and protocols rather than implementing cryptographic algorithms from scratch.
Introduce a stronger transport abstraction so the communication protocol is not tightly coupled to IP networking.
The current TCP implementation and Connection abstraction are early foundations for this phase.
- Initial transport abstraction
- TCP transport implementation
- Connection abstraction
- Transport interface
- Connection monitoring
- Automatic transport selection
- Automatic reconnection
- Network quality detection
- Multi-path communication research
Potential transports:
Internet
│
├── Wi-Fi
├── Ethernet
└── Cellular
Future transports:
Bluetooth
Radio
Other experimental transports
v0.3 goal:
r/uqny can intelligently handle different network conditions and transport types.
Add Bluetooth as an alternative transport.
- Bluetooth peer discovery
- Bluetooth connection
- Messaging over Bluetooth
- Encrypted communication over Bluetooth
- Voice communication research
- Automatic fallback
v0.4 goal:
Communication can continue through Bluetooth when IP connectivity is unavailable.
Research and implement radio-based communication.
Because radio can have significantly lower bandwidth and higher packet loss than Internet connections, this phase will focus on adapting the protocol rather than simply replacing the transport.
- Radio transport abstraction
- Peer discovery
- Short messages
- Packet fragmentation
- Packet acknowledgement
- Error recovery
- Store-and-forward research
- Low-bitrate voice research
- Adaptive codecs
- Voice prioritization
v0.5 goal:
Establish a practical foundation for communication over constrained radio links.
Explore communication without relying on centralized infrastructure.
Potential research areas:
- Peer-to-peer discovery
- Peer relay
- Distributed routing
- Store-and-forward messaging
- Mesh networking
- Offline communication
This phase is intentionally exploratory and may change significantly based on earlier experiments.
The first major stable release.
Potential requirements:
- Stable communication protocol
- Reliable messaging
- Reliable voice communication
- Secure communication
- Internet P2P
- Alternative transport support
- Comprehensive documentation
- Installation instructions
- Protocol specification
- Security documentation
- Automated testing
- Release binaries
The exact requirements for v1.0 will be determined as the project develops.
r/uqny is developed around several principles:
Communication should not depend on a third-party communication provider.
The communication protocol should not assume that the underlying connection is always IP-based.
Security should be considered during protocol design rather than added as an afterthought.
r/uqny should not implement cryptographic primitives from scratch when established, audited solutions are available.
The system should be able to adapt to poor connectivity and constrained transports.
Architecture, experiments, limitations, and design decisions should be documented publicly.
Each version should produce a working and testable improvement instead of attempting to build the entire system at once.
r-uqny/
├── README.md
├── LICENSE
├── .gitignore
├── go.mod
├── cmd/
│ └── r-uqny/
└── internal/
├── config/
├── identity/
├── node/
├── peer/
├── protocol/
├── session/
├── transport/
└── version/
The repository structure will evolve as the implementation becomes more mature.
| Component | Status |
|---|---|
| Project foundation | 🟢 Complete |
| Node lifecycle | 🟢 Complete |
| Configuration | 🟢 Complete |
| Node identity | 🟢 Complete |
| Protocol envelope | 🟢 Complete |
| TCP transport | 🟢 Complete |
| Connection abstraction | 🟢 Complete |
| Authenticated handshake foundation | 🟢 Complete |
| Peer abstraction | 🟢 Complete |
| Peer management | 🟢 Complete |
| Session abstraction | 🟢 Complete |
| Session state management | 🟢 Complete |
| Node-to-node session | 🟡 In progress |
| P2P messaging | 🟡 In progress |
| Voice communication | ⚪ Planned |
| Internet P2P | ⚪ Planned |
| End-to-end encryption | ⚪ Planned |
| Transport abstraction | 🟡 Foundation |
| Bluetooth | ⚪ Planned |
| Radio | ⚪ Planned |
| Mesh networking | ⚪ Planned |
- 🟢 Complete — implemented and tested
- 🟡 In progress — actively being developed
- ⚪ Planned — not yet implemented
r/uqny is currently being developed in Go.
Basic checks used during development:
go test ./...
go vet ./...
go test -race ./...The project currently prioritizes small, independently testable components before integrating them into a complete communication system.
r/uqny is an experimental networking and communication project created for educational, research, and development purposes.
Network behavior, connectivity, and compatibility may vary depending on the underlying network, operating system, hardware, and transport medium.
Security-related components should be considered experimental until they have undergone appropriate review and testing.
This project is licensed under the MIT License. See LICENSE for details.