We don't have anything written down at the moment. I guess it depends on what you do need done.. a Nostr Client, Nostr relay, database, etc. There is probably too many things going on in that lib :)
If it is just a client, take a look on how Amethyst and Amber set up the Nostr Client class. You want to have just one NostrCliend and control it by opening and closing subscriptions.
On Amethyst, we create it in the Application class:
```kt
// Provides a relay pool
val client: NostrClient = NostrClient(websocketBuilder, applicationIOScope)
// Watches for changes on Tor and Connectivity and reconnects the client
val relayProxyClientConnector = RelayProxyClientConnector(torProxySettingsAnchor, okHttpClients, connManager, client, applicationIOScope)
// Verifies and inserts in the cache from all relays, all subscriptions
val cacheClientConnector = CacheClientConnector(client, cache)
// Show messages from the Relay and controls their dismissal
val notifyCoordinator = NotifyCoordinator(client)
// Authenticates with relays.
val authCoordinator = AuthCoordinator(client, applicationIOScope)
val logger = if (isDebug) RelaySpeedLogger(client) else null
// Coordinates all subscriptions for the Nostr Client
val sources: RelaySubscriptionsCoordinator = RelaySubscriptionsCoordinator(LocalCache, client, applicationIOScope)
```