Launch on 01/01/2027Licenses available from 01/01/2027
PreviewThis page documents the release that launches on 01/01/2027. Packages, images and sign-up open then, and details may change before it.
Docs / Reference / SDKs

SDKs

Ready
TL;DR

Two families. Eight backend SDKs — Go, Python, TypeScript, Java, .NET, Rust, Ruby, PHP — each an idiomatic native library over the relying-party IdentityService, held to mechanical parity so the same call behaves identically in every language. And two device SDKs — Swift and Kotlin — for embedding the authenticator into your own mobile app. All of it is Apache 2.0; the source and each library publish at general availability, the libraries to their language’s usual registry.

Who this is for: anyone choosing how to integrate. If you are wiring a backend to Ydentifi, you want a backend SDK (or raw gRPC). If you are putting the authenticator inside your own app, you want a device SDK — start at When to embed. If you just want the standalone app, you need no SDK at all.

Two families#

They sit on opposite sides of the ceremony, and you rarely need both.

Open source, free, and licensedThree positions. The middle one is where the commercial logic sits.OPEN SOURCEThe eight relying-partylibrariesThe Swift device libraryThe Kotlin device libraryEverything somebody would need inorder to replace us.FREEThe phone applicationsThe operator’s command-line toolEverything they need in order touse us. Source not published.LICENSEDThe serverThe product. The only thinganybody pays for.The app is free so nobody has to buy it. The libraries beneath it are openso nobody has to use it.A customer who wants this authentication inside their own application takes the device libraries and builds one. They need nopermission, and the application we give away is a reference implementation rather than a dependency.
What is open source, what is free, and what is licensed.
Backend SDKs · 8 languages
Your server talks to the deployment

An idiomatic library over the relying-party gRPC surface — create users, issue challenges, verify approvals, manage devices. This is what your application backend calls.

Go · Python · TypeScript · Java · .NET · Rust · Ruby · PHP. See the API reference for every method.

Device SDKs · Swift & Kotlin
Your app becomes the authenticator

Embed enrollment, hardware-backed signing, and the approval UI directly in your own iOS or Android app, instead of sending users to the standalone Ydentifi app.

Only needed if you embed — the decision, and its trade-offs, are laid out in When to embed.

The backend SDKs#

Eight languages, each a real native library rather than a thin gRPC stub — idiomatic types, idiomatic errors (the typed error detail surfaces the same reason in each), mTLS wired for you. You install the one for your stack from its normal registry; there is nothing Ydentifi-specific about how you add it. The coordinates below are the published names — the registry artifacts and the source are published at general availability.

LanguageInstall asPublic repo
Gogithub.com/ydentifi/gogithub.com/ydentifi/go
Pythonydentifi · PyPIgithub.com/ydentifi/python
TypeScript@ydentifi/client · npmgithub.com/ydentifi/typescript
Javacom.ydentifi:client · Maven Centralgithub.com/ydentifi/java
.NETYdentifi.Client · NuGetgithub.com/ydentifi/dotnet
Rustydentifi · crates.iogithub.com/ydentifi/rust
Rubyydentifi · RubyGemsgithub.com/ydentifi/ruby
PHPydentifi/client · Packagistgithub.com/ydentifi/php
ⓘ Prefer no dependency at all?

Every backend SDK wraps the same gRPC service, and that service is the real contract — you can generate a client from the published proto and call it directly. The SDKs exist because idiomatic beats generated, not because gRPC is off-limits. The API reference shows the raw-gRPC path alongside each language.

The same call, three ways

Idiomatic means idiomatic — the shape of a call belongs to its language, not to gRPC:

Go
// create an opaque user
id, err := c.CreateUser(ctx,
  ydentifi.User{})
Python
# create an opaque user
uid = client.create_user()
TypeScript
// create an opaque user
const id =
  await client.createUser();

Every RPC, every language#

The promise is not “most of the API in most languages.” It is every RPC, as a method, on every SDK — and it is mechanically enforced, not maintained by hand.

Holding phone code to the server’s standardThe mirrors exist so that phone libraries can be tested the same way everything else is.One recorded inputa request, a user, an outcome, a moment in timeheld as a test vector in the repositoryGothe server’s owncomputes the digest, signs itSwiftthrough a mirror programcomputes the digest, signs itKotlinthrough a mirror programcomputes the digest, signs itAll three must produce the same bytes, or the build failsNot the same meaning, not an equivalent result — the identical digest and a signature the others can verify.A phone that disagreed by one byte would produce approvals the server rejects, and nobody would know why.
One recorded input fanning out to the Go, Swift and Kotlin implementations, which must all agree byte for byte.

Two guarantees hold the family together:

  • Full coverage. A reflection test walks the service and fails the build if any RPC is missing a method in any SDK. The list of intentional exceptions is empty, and stays empty — there is no “that one is only in the Go client.”
  • Identical behavior. One shared scenario suite runs against all eight SDKs; if any SDK returns a different verdict for the same scenario, the divergence blocks merge. A bug that made one language behave subtly differently would be caught before it shipped, because that is exactly the failure this is built to prevent.

So the language you pick is a matter of your stack, never of what you can do. The reference behavior is the API; the SDKs are eight faithful renderings of it.

The device SDKs#

Swift and Kotlin are a different job: they put the authenticator inside your app — the hardware-bound key in the Secure Enclave or Keystore, the enrollment handshake, the approval behind a biometric check — so your users never leave your product to approve. iOS-first, both Apache 2.0.

PlatformInstall viaGuide · reference
iOS — SwiftSwift Package ManagerSwift SDK · reference
Android — KotlinMaven CentralKotlin SDK · reference

Under the SDK is the device-facing gRPC surface — the same one the standalone app speaks. If you would rather drive it directly, it is documented at Device-facing gRPC.

Which one you want#

You are…Reach for
integrating a backend / relying partya backend SDK in your language — or raw gRPC. Start at Quickstart.
building auth into your own mobile appa device SDK (Swift / Kotlin). Start at When to embed.
happy to use the standalone appno SDK — users install the Ydentifi authenticator and enroll against your deployment.
ⓘ Open by design

Every SDK is Apache 2.0 and public, under github.com/ydentifi. The client code is meant to be read — there is no obligation to trust a black box you embed in your product. Registry artifacts publish at general availability; until then the sources are the reference.

Opens on 01/01/2027

Available at launch

Until then, you can try the whole ceremony on your own phone.