Update CLAUDE.md with transport system and deployment docs
- Document pluggable Transport interface and how to add transports
- Add relay.orly.dev deployment section (correct: x86_64, not ARM64)
- Document SSH access, build, deploy, and blue-green strategy notes
- Update architecture tree with transport packages
- Add transport/ to interface design list
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Network transports are pluggable via `pkg/interfaces/transport.Transport`:
```go
type Transport interface {
Name() string
Start(ctx context.Context) error
Stop(ctx context.Context) error
Addresses() []string
}
```
**Current transports**: `tcp`, `tls`, `tor`. TCP and TLS are mutually exclusive (TLS replaces TCP when `ORLY_TLS_DOMAINS` is set). Tor runs in parallel.
**Adding a new transport** (e.g., QUIC):
1. Create `pkg/transport/quic/quic.go` implementing the interface
2. Add `l.transportMgr.Add(quicTransport)` in `app/main.go`
The transport manager handles ordered startup (Start fails fast, rolls back) and reverse-order shutdown. Addresses from all transports are aggregated for NIP-11 relay info.
**Future improvements**: Build on VPS directly (git pull + go build) to avoid slow binary transfers. Implement proper blue-green with symlink swap between `/opt/orly/blue/` and `/opt/orly/green/` dirs, with instant rollback via symlink flip.
## Dependencies
## Dependencies
- `github.com/dgraph-io/badger/v4` - Badger DB (LSM, SSD-optimized)
- `github.com/dgraph-io/badger/v4` - Badger DB (LSM, SSD-optimized)