Sample

Wallet sign-in with a signed challenge

rust
use karoowa_sdk::{NodeClient, Wallet};
// User generates (or recovers) an Ed25519 wallet client-side
let wallet = Wallet::generate();
wallet.save_to("./user.key")?;
// Server issues a signed challenge for wallet sign-in
let challenge = client.identity().issue_challenge(wallet.address()).await?;
let signature = wallet.sign(&challenge.nonce);
// Verify and open a session bound to the wallet address
let session = client
.identity()
.verify(challenge.id, signature)
.await?;
println!("signed in as {}", session.subject);
Capabilities

What you can build with it

Wallet sign-in

Ed25519 keys, signed nonce challenges, session binding to a wallet address.

Recovery (preview)

Threshold recovery flows in build; social recovery on the v1.0 roadmap.

Roles + delegation

Hierarchical roles via karoowa-rbac with time-boxed delegation.

Audit trail

Every auth event signed and indexed by karoowa-audit-log; tamper-evident by construction.

Credentials (roadmap)

W3C verifiable credential issuance and verification post-v1.0.

Federation (roadmap)

Cross-org SSO with verifiable trust roots, behind the same gateway.

Ready to build on decentralised infrastructure?

Tell us about your project. We will come back with an honest assessment of whether DaaS is the right rail for it.