Skip to content

TekkadanPlays/cybin

Repository files navigation

Cybin

A lightweight Nostr protocol library for Android/Kotlin. Provides core event types, cryptographic signing, NIP implementations, and a Ktor WebSocket relay client.

Features

  • Core: Event, Filter, TagArray DSL builder, event templates
  • Crypto: secp256k1 key pairs, NIP-01 event hashing, NIP-04 encryption
  • NIP-19: Bech32 encoding/decoding, TLV parsing, npub/nsec/note/nevent/nprofile entities
  • NIP-25: Reaction events (kind 7)
  • NIP-47: Wallet Connect (NWC) payment request/response
  • NIP-55: External signer (Amber) integration
  • NIP-57: Zap request events (kind 9734)
  • Relay: Ktor WebSocket client with auto-reconnect, subscription management, Nostr wire protocol

Installation

Add JitPack to your project-level settings.gradle.kts:

dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()
        maven("https://jitpack.io")
    }
}

Add the dependency to your module build.gradle.kts:

dependencies {
    implementation("com.github.TekkadanPlays:cybin:0.1.0")
}

Usage

Events

import com.example.cybin.core.*
import com.example.cybin.crypto.KeyPair

val keys = KeyPair("your-hex-private-key")
val template = eventTemplate(kind = 1) {
    tag("p", recipientPubkey)
    tag("e", referencedEventId)
    content = "Hello Nostr!"
}

NIP-19 Parsing

import com.example.cybin.nip19.Nip19Parser

val result = Nip19Parser.uriToRoute("nostr:npub1...")

Relay Client

import com.example.cybin.relay.CybinRelayClient

val client = CybinRelayClient(httpClient, scope)
client.connect("wss://relay.example.com")
client.subscribe(filter) { event ->
    // handle incoming events
}

Dependencies

  • secp256k1-kmp v0.20.0 — secp256k1 cryptography
  • Ktor v3.0.0 — WebSocket client
  • Kotlin Coroutines

License

MIT

About

Kotlin Native library for Nostr

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages