InferaDB is a distributed, Google Zanzibar‑inspired authorization engine that replaces ad‑hoc database lookups and scattered logic with a unified, millisecond‑latency source of truth. With this SDK, you define permissions as policy‑as‑code and wire up a type‑safe client in just a few lines.
- Rust‑Native & Async: Fully integrated with the ecosystem (Tokio, Tracing) so you don't have to adapt generic policy engines to your runtime.
- Compile‑Time Safety: Catch permission model mistakes in your build pipeline and tests, preventing surprises in production.
- Standards‑Based & Audit‑Ready: Built on AuthZen with automatic multi‑tenant isolation and cryptographically verifiable audit trails out of the box.
Quick Start
Add the inferadb crate to your Cargo.toml:
[]
= "0.1"
Sign up for an account at InferaDB and create a new organization and vault. With these credentials, you can create a new client instance:
use *;
async
Authorization API
let vault = client.organization.vault;
Permission Checks
let allowed = vault.check.await?;
Relationships
vault.relationships
.write
.await?;
Lookups
let docs = vault.resources
.accessible_by
.with_permission
.collect
.await?;
See the Authorization API Guide for ABAC context, batch checks, explain, simulate, watch, and more.
Management API
let org = client.organization;
Vaults
let vault = org.vaults
.create
.await?;
Schemas
vault.schemas.push.await?;
Members & Teams
org.members
.invite
.await?;
org.teams
.create
.await?;
Audit Logs
let events = org.audit.list.collect.await?;
See the Management API Guide for organizations, API clients, schema versioning, and more.
Local Development
Deploy a local instance of InferaDB, then configure your client to connect to it.
let client = builder
.url
.insecure // Disables TLS verification for local development
.credentials
.build
.await?;
Testing
Use MockClient for unit tests:
use ;
async
See the Testing Guide for InMemoryClient (full policy evaluation) and integration testing patterns.
Documentation
- API Reference - Full rustdoc documentation
Guides
| Topic | Description |
|---|---|
| Installation | Feature flags, optimized builds, TLS, MSRV |
| Authentication | Client credentials, bearer tokens, key management |
| Authorization API | Permission checks, relationships, lookups, watch |
| Integration Patterns | Axum, Actix-web, GraphQL, gRPC middleware |
| Error Handling | Error types, retries, graceful degradation |
| Testing | MockClient, InMemoryClient, TestVault |
| Schema Design | ReBAC patterns, role hierarchy, anti-patterns |
| Production Checklist | Deployment readiness |
| Troubleshooting | Common issues and solutions |
See docs/README.md for the complete documentation index.
Examples
Contributing
See CONTRIBUTING.md for development setup and guidelines.
License
Licensed under the Apache License, Version 2.0. See LICENSE for details.