Skip to content
Kuira · v0.1.0-alpha03Maven Central

Zero-knowledge apps that prove on the phone — no server, no seed phrase.

Kuira is the Android SDK for Midnight: on-device ZK proving, passkey identity, an embedded wallet, and the Compact runtime — the full private-app stack, self-custodial. Built to pair with your coding agent: every recipe ships a one-tap prompt.

Try it now — clone a working dApp

The fastest way in: a complete, runnable app you make your own. Copy the prompt into your coding agent — it clones the repo and walks the setup as a task list you can watch.

Kuira Starter — counter dApp on device

Starter

Kuira Starter

A minimal counter dApp — Sigil identity, embedded wallet, and a 6-line Compact contract you deploy and increment on-chain. ~250 lines, also a GitHub template.

BBoard — on-chain bulletin board on device

Example

BBoard

An on-chain bulletin board — the deploy → call → read flow end-to-end: create a board, post and take down messages, or connect to one someone shared.

Already have an app? Add Kuira with your agent

Integrating Kuira into an existing project, or following a specific recipe? Pick a task and your agent — we generate the prompt; you paste it in, and the agent works the steps as a task list.

What do you want to build?

For your agent

Your prompt

Building prompt…
View raw context bundle

Identity

Passkey-derived sigil

One biometric mints a DID + wallet seed. PRF on the passkey assertion — no seed phrases at onboarding, recoverable on any device that shares the Google account.

Wallet

Embedded, no custodian

Shielded + unshielded balance, transaction balancing, indexer sync, Dust regeneration. The wallet lives in your app's process; you never call out to a separate wallet.

Contracts

Compact runtime + ZK proving

Deploy and call Compact circuits on-device. QuickJS contract runtime, witness packing, per-circuit proving keys, transaction submission — wired by a Gradle plugin.

16 modules · pull dapp-ui, get the graph
dapp-ui midnight-sdk wallet-runtime wallet-seed identity auth crypto compact-engine indexer connector ledger network wallet designsystem testing contract-plugin

Install

// settings.gradle.kts
dependencyResolutionManagement {
    repositories {
        mavenCentral()
    }
}

// app/build.gradle.kts
dependencies {
    implementation("io.github.kuiralabs:dapp-ui:0.1.0-alpha03")
}
// settings.gradle
dependencyResolutionManagement {
    repositories {
        mavenCentral()
    }
}

// app/build.gradle
dependencies {
    implementation 'io.github.kuiralabs:dapp-ui:0.1.0-alpha03'
}

dapp-ui api-exposes the consumer surface, so a single line gives you the complete SDK graph — drop in the prebuilt wallet + sigil pills, or build your own UI on the same public contracts. Need no Compose at all? Use midnight-sdk. → Choose your level

Full integration guide → Security & verification

Working examples — clone, build, read the source: Kuira Starter (minimal counter, also a GitHub template) · BBoard (on-chain bulletin board).


Built for AI-assisted development

The cookbook is the source of truth for both humans and agents. Every recipe is a raw markdown file at a stable URL — agents fetch it directly. A site-root /llms.txt lists every recipe, per the emerging llms.txt convention.

For maintainers: the SDK source lives in a private repository. Source jars ship next to every AAR on Maven Central, so you can read, audit, or step into the implementation through any IDE.


Known limitations · 0.1.0-alpha03

Honest naming of where the SDK doesn't go yet. None of these block the "identity + wallet + contract call" core path; each will close in a future release.

Gap Workaround today Closes in
No Compact authoring deep-dive on the Kuira side — the SDK consumes compiled .compact artifacts but does not teach the full Compact language. Witnesses, ZK patterns, selective-disclosure idioms, multi-party state — all live in the Midnight project's documentation, not Kuira's. Start with the Hello Compact recipe for the minimum-viable counter and the toolchain pin matrix, then follow it to the official Midnight contract examples for everything beyond. Closed by intent — the Kuira SDK is the runtime; Midnight owns the language.
No recovery-phrase export (BIP-39 mnemonic) — Sigil-derived wallets currently have no sovereign exit; recovery rides Google account availability. Keep access to your Google account. PRF derivation is deterministic, so the wallet re-derives from the passkey. alpha03
No session auto-lock — once a Sigil session is unlocked, value-bearing calls don't re-prompt for biometrics until the process is killed. Treat an unlocked session as funds-on-screen. Sign out from the Sigil panel to lock manually. alpha03
SDK source not browsable on GitHub — the Dokka API reference doesn't link to source. A -sources.jar ships next to every artifact on Maven Central; Android Studio / IntelliJ auto-attach it, so you can step into the implementation as usual. By design — sources travel with the artifacts
BLS proving params from Midnight's dev S3 bucketmidnight-s3-fileshare-dev-eu-west-1, a supply-chain assumption labeled "dev." None — this lives at the protocol-team layer; per-contract proving keys are unaffected (each dApp hosts its own). When Midnight publishes a production URL
Android only — no iOS, no React Native bridge, no JS interop. If you need cross-platform, build the same surface twice for now. iOS support is planned

For security-domain gaps — what the threat model does and doesn't cover (compromised devices, malicious co-process dApps, session-cache theft) — see Security § What Kuira does NOT protect against.


What's coming next — Sigil V2

The currently-shipped sigil architecture (Sigil V1) derives the wallet seed deterministically from a passkey PRF assertion. That gives a one-tap onboarding story but binds the sigil to a single WebAuthn rpId — so a user's funds cannot be shared across multiple Kuira apps that ship under different domains, and recovery is gated on the same Google account holding the synced passkey.

Sigil V2 keeps the one-tap-onboarding promise but treats the master seed as portable data: PRF becomes an unlock key for a persisted seed envelope rather than the seed itself. Three properties follow:

  • Cross-app sigil portability via explicit enrollment. A user installs a second Kuira app, taps "Use my Kuira sigil from [Wallet]," and the existing app hands the seed over a secure biometric-gated AIDL channel. Both apps now share the same wallet, same DID, same on-chain history.
  • Cross-device, cross-Google-account recovery. PIN-based recovery via an opaque cloud bucket (Signal SVR2 pattern, no enclave needed); the seed survives device loss and account changes.
  • Midnight Passport plug-in path. Versioned envelope codec + storage-tier interface + frozen HKDF signer namespace reserve a clean integration surface for Midnight's protocol-native account abstraction, universal DID, and verifiable-credential layers when Passport's spec is public.

The same primitive is already shipped in production by Dashlane, Bitwarden, 1Password, Signal SVR2, and WhatsApp E2EE backups — five independent systems that converged on the same shape for the same reason.

Sigil V2 is the next architecture for Kuira, not the next alpha. The master-seed lifecycle, tiered storage, and cross-app enrollment come first; cloud-bucket PIN recovery follows.


License

Apache License 2.0 — see LICENSE.