[{"data":1,"prerenderedAt":831},["ShallowReactive",2],{"docs-nav":3,"doc-\u002Fdocs\u002Fintroduction":79,"content-query-YCM4SJdIaq":505},[4,10,15,19,23,28,34,38,43,47,52,57,61,66,70,74],{"_path":5,"title":6,"description":7,"order":8,"category":9},"\u002Fdocs\u002Fapi-reference","API Reference","Overview of the Vaultaris REST API — endpoints, authentication, response conventions, and rate limiting.",1,"Reference",{"_path":11,"title":12,"description":13,"order":14,"category":9},"\u002Fdocs\u002Farchitecture","Architecture","System design overview — components, request lifecycle, background workers, and data flow in Vaultaris.",4,{"_path":16,"title":17,"description":18,"order":8,"category":17},"\u002Fdocs\u002Fconcepts","Core Concepts","Understand the building blocks of Vaultaris — tenants, users, roles, groups, applications, sessions, and the security primitives that connect them.",{"_path":20,"title":21,"description":22,"order":8,"category":21},"\u002Fdocs\u002Fconfiguration","Configuration","Complete reference for all Vaultaris environment variables.",{"_path":24,"title":25,"description":26,"order":8,"category":27},"\u002Fdocs\u002Fdeployment","Deployment Guide","Deploy Vaultaris to production using Docker Compose, bare metal, or a managed container platform.","Deployment",{"_path":29,"title":30,"description":31,"order":32,"category":33},"\u002Fdocs\u002Finstallation","Installation","Install Vaultaris using Docker, a pre-built binary, or by compiling from source.",3,"Getting Started",{"_path":35,"title":36,"description":37,"order":8,"category":33},"\u002Fdocs\u002Fintroduction","Introduction","Vaultaris is an open-source, enterprise-grade Identity and Access Management platform written in Rust — a self-hostable alternative to Keycloak and Auth0.",{"_path":39,"title":40,"description":41,"order":42,"category":27},"\u002Fdocs\u002Fkubernetes","Kubernetes","Deploy Vaultaris on Kubernetes using the official Helm chart or plain manifests.",2,{"_path":44,"title":45,"description":46,"order":42,"category":17},"\u002Fdocs\u002Fmulti-tenancy","Multi-Tenancy","How Vaultaris isolates organizations, supports SaaS use cases, and manages license-driven resource freezing.",{"_path":48,"title":49,"description":50,"order":8,"category":51},"\u002Fdocs\u002Foauth-oidc","OAuth 2.0 & OpenID Connect","How to integrate Vaultaris as an authorization server — authorization code, client credentials, password flows, DPoP sender-constrained tokens, and hosted login.","Authentication & Authorization",{"_path":53,"title":54,"description":55,"order":8,"category":56},"\u002Fdocs\u002Fplugins","Plugin Development","Extend Vaultaris with type-safe native Rust plugins.","Plugins",{"_path":58,"title":59,"description":60,"order":42,"category":33},"\u002Fdocs\u002Fquickstart","Quickstart","Run Vaultaris locally in under five minutes using Docker Compose.",{"_path":62,"title":63,"description":64,"order":42,"category":65},"\u002Fdocs\u002Fsdk-nodejs","Node.js SDK","Use the vaultaris-sdk package to integrate Vaultaris into your Node.js or TypeScript applications. Includes transparent DPoP support.","SDKs",{"_path":67,"title":68,"description":69,"order":8,"category":65},"\u002Fdocs\u002Fsdk-rust","Rust SDK","Use the vaultaris-sdk crate to interact with Vaultaris from your Rust applications. Includes transparent DPoP support.",{"_path":71,"title":72,"description":73,"order":32,"category":9},"\u002Fdocs\u002Fsecurity","Security","Security architecture, cryptographic choices, and hardening recommendations for Vaultaris.",{"_path":75,"title":76,"description":77,"order":78,"category":51},"\u002Fdocs\u002Fwebauthn","WebAuthn \u002F Passkeys \u002F FIDO2","Complete guide to integrating WebAuthn passwordless authentication and passkeys with Vaultaris.",5,{"_path":35,"_dir":80,"_draft":81,"_partial":81,"_locale":82,"title":36,"description":37,"order":8,"category":33,"body":83,"_type":499,"_id":500,"_source":501,"_file":502,"_stem":503,"_extension":504},"docs",false,"",{"type":84,"children":85,"toc":491},"root",[86,95,120,125,131,275,281,290,296,438,444,463,469],{"type":87,"tag":88,"props":89,"children":91},"element","h2",{"id":90},"what-is-vaultaris",[92],{"type":93,"value":94},"text","What is Vaultaris?",{"type":87,"tag":96,"props":97,"children":98},"p",{},[99,101,107,109,118],{"type":93,"value":100},"Vaultaris is a ",{"type":87,"tag":102,"props":103,"children":104},"strong",{},[105],{"type":93,"value":106},"self-hosted IAM platform",{"type":93,"value":108}," built in Rust by ",{"type":87,"tag":110,"props":111,"children":115},"a",{"href":112,"rel":113},"https:\u002F\u002Fgithub.com\u002FVaultaris",[114],"nofollow",[116],{"type":93,"value":117},"Vaultaris",{"type":93,"value":119},". It gives your organization full control over authentication and authorization without depending on third-party SaaS providers.",{"type":87,"tag":96,"props":121,"children":122},{},[123],{"type":93,"value":124},"Think of it as the Rust-native alternative to Keycloak, Auth0, or Okta — but smaller, faster, and fully auditable.",{"type":87,"tag":88,"props":126,"children":128},{"id":127},"key-features",[129],{"type":93,"value":130},"Key features",{"type":87,"tag":132,"props":133,"children":134},"ul",{},[135,145,155,165,175,185,195,205,215,225,235,245,255,265],{"type":87,"tag":136,"props":137,"children":138},"li",{},[139,143],{"type":87,"tag":102,"props":140,"children":141},{},[142],{"type":93,"value":49},{"type":93,"value":144}," — full spec-compliant authorization server with authorization code + PKCE, client credentials, and password flows",{"type":87,"tag":136,"props":146,"children":147},{},[148,153],{"type":87,"tag":102,"props":149,"children":150},{},[151],{"type":93,"value":152},"DPoP sender-constrained tokens",{"type":93,"value":154}," — RFC 9449 support; tokens are cryptographically bound to the client's key pair, preventing token replay attacks",{"type":87,"tag":136,"props":156,"children":157},{},[158,163],{"type":87,"tag":102,"props":159,"children":160},{},[161],{"type":93,"value":162},"Multi-tenancy",{"type":93,"value":164}," — isolate organizations within a single deployment; each tenant has its own users, roles, groups, applications, and email templates",{"type":87,"tag":136,"props":166,"children":167},{},[168,173],{"type":87,"tag":102,"props":169,"children":170},{},[171],{"type":93,"value":172},"Fine-grained permissions",{"type":93,"value":174}," — role-based access control (RBAC) with composite roles and group-scoped overrides, plus attribute-based access control (ABAC) policies with deny-override",{"type":87,"tag":136,"props":176,"children":177},{},[178,183],{"type":87,"tag":102,"props":179,"children":180},{},[181],{"type":93,"value":182},"WebAuthn \u002F Passkeys",{"type":93,"value":184}," — full FIDO2 registration and authentication flows with sign-counter validation and credential management",{"type":87,"tag":136,"props":186,"children":187},{},[188,193],{"type":87,"tag":102,"props":189,"children":190},{},[191],{"type":93,"value":192},"Email templates",{"type":93,"value":194}," — per-tenant and per-application transactional email templates (password reset, MFA, invite, freeze notifications) editable from the dashboard; five email providers supported (SMTP, SendGrid, Mailgun, AWS SES, Brevo)",{"type":87,"tag":136,"props":196,"children":197},{},[198,203],{"type":87,"tag":102,"props":199,"children":200},{},[201],{"type":93,"value":202},"Device fingerprinting",{"type":93,"value":204}," — browser fingerprint + user-agent tracking for every device; trust, revoke, and inspect session history per device from the dashboard",{"type":87,"tag":136,"props":206,"children":207},{},[208,213],{"type":87,"tag":102,"props":209,"children":210},{},[211],{"type":93,"value":212},"Freeze \u002F Unfreeze system",{"type":93,"value":214}," — LIFO resource freeze on license downgrade or expiry with email notifications; FIFO unfreeze on upgrade",{"type":87,"tag":136,"props":216,"children":217},{},[218,223],{"type":87,"tag":102,"props":219,"children":220},{},[221],{"type":93,"value":222},"Global sessions",{"type":93,"value":224}," — cross-domain single sign-on without third-party cookies",{"type":87,"tag":136,"props":226,"children":227},{},[228,233],{"type":87,"tag":102,"props":229,"children":230},{},[231],{"type":93,"value":232},"Audit log",{"type":93,"value":234}," — every action produces a tamper-evident audit record with granular time-series analytics",{"type":87,"tag":136,"props":236,"children":237},{},[238,243],{"type":87,"tag":102,"props":239,"children":240},{},[241],{"type":93,"value":242},"Plugin system",{"type":93,"value":244}," — extend Vaultaris with native Rust dynamic library plugins across 12 trait categories",{"type":87,"tag":136,"props":246,"children":247},{},[248,253],{"type":87,"tag":102,"props":249,"children":250},{},[251],{"type":93,"value":252},"Cloud billing automation",{"type":93,"value":254}," — Polar.sh-native webhooks auto-provision a workload tenant on payment, link users, and sync license limits via heartbeat; non-payment triggers grace-period emails and eventual auto-freeze",{"type":87,"tag":136,"props":256,"children":257},{},[258,263],{"type":87,"tag":102,"props":259,"children":260},{},[261],{"type":93,"value":262},"Federated deployment",{"type":93,"value":264}," — multiple Vaultaris instances register with a control plane for centralized license and telemetry management; license parameters update remotely without restarts",{"type":87,"tag":136,"props":266,"children":267},{},[268,273],{"type":87,"tag":102,"props":269,"children":270},{},[271],{"type":93,"value":272},"Production-grade defaults",{"type":93,"value":274}," — rate limiting (per-IP, Redis-backed for multi-node), connection pooling, graceful shutdown, structured tracing",{"type":87,"tag":88,"props":276,"children":278},{"id":277},"architecture-in-one-sentence",[279],{"type":93,"value":280},"Architecture in one sentence",{"type":87,"tag":282,"props":283,"children":284},"blockquote",{},[285],{"type":87,"tag":96,"props":286,"children":287},{},[288],{"type":93,"value":289},"An Axum HTTP server backed by PostgreSQL, optionally Redis for distributed rate limiting, with JWT-based tokens, Argon2 password hashing, and AES-256-GCM encryption at rest.",{"type":87,"tag":88,"props":291,"children":293},{"id":292},"when-to-use-vaultaris",[294],{"type":93,"value":295},"When to use Vaultaris",{"type":87,"tag":297,"props":298,"children":299},"table",{},[300,319],{"type":87,"tag":301,"props":302,"children":303},"thead",{},[304],{"type":87,"tag":305,"props":306,"children":307},"tr",{},[308,314],{"type":87,"tag":309,"props":310,"children":311},"th",{},[312],{"type":93,"value":313},"Use case",{"type":87,"tag":309,"props":315,"children":316},{},[317],{"type":93,"value":318},"Fits?",{"type":87,"tag":320,"props":321,"children":322},"tbody",{},[323,342,356,370,384,398,412,425],{"type":87,"tag":305,"props":324,"children":325},{},[326,332],{"type":87,"tag":327,"props":328,"children":329},"td",{},[330],{"type":93,"value":331},"Self-hosted SSO for internal tools",{"type":87,"tag":327,"props":333,"children":334},{},[335],{"type":87,"tag":336,"props":337,"children":341},"img",{"src":338,"width":339,"height":339,"alt":340},"\u002Fcheck-mint.svg",18,"yes",[],{"type":87,"tag":305,"props":343,"children":344},{},[345,350],{"type":87,"tag":327,"props":346,"children":347},{},[348],{"type":93,"value":349},"Per-tenant auth for a SaaS product",{"type":87,"tag":327,"props":351,"children":352},{},[353],{"type":87,"tag":336,"props":354,"children":355},{"src":338,"width":339,"height":339,"alt":340},[],{"type":87,"tag":305,"props":357,"children":358},{},[359,364],{"type":87,"tag":327,"props":360,"children":361},{},[362],{"type":93,"value":363},"Replacing Auth0 \u002F Okta to reduce cost",{"type":87,"tag":327,"props":365,"children":366},{},[367],{"type":87,"tag":336,"props":368,"children":369},{"src":338,"width":339,"height":339,"alt":340},[],{"type":87,"tag":305,"props":371,"children":372},{},[373,378],{"type":87,"tag":327,"props":374,"children":375},{},[376],{"type":93,"value":377},"GDPR \u002F data-residency requirements",{"type":87,"tag":327,"props":379,"children":380},{},[381],{"type":87,"tag":336,"props":382,"children":383},{"src":338,"width":339,"height":339,"alt":340},[],{"type":87,"tag":305,"props":385,"children":386},{},[387,392],{"type":87,"tag":327,"props":388,"children":389},{},[390],{"type":93,"value":391},"Custom transactional emails per tenant",{"type":87,"tag":327,"props":393,"children":394},{},[395],{"type":87,"tag":336,"props":396,"children":397},{"src":338,"width":339,"height":339,"alt":340},[],{"type":87,"tag":305,"props":399,"children":400},{},[401,406],{"type":87,"tag":327,"props":402,"children":403},{},[404],{"type":93,"value":405},"Device-aware session management",{"type":87,"tag":327,"props":407,"children":408},{},[409],{"type":87,"tag":336,"props":410,"children":411},{"src":338,"width":339,"height":339,"alt":340},[],{"type":87,"tag":305,"props":413,"children":414},{},[415,420],{"type":87,"tag":327,"props":416,"children":417},{},[418],{"type":93,"value":419},"Public cloud-managed identity (Cognito, Firebase Auth)",{"type":87,"tag":327,"props":421,"children":422},{},[423],{"type":93,"value":424},"—",{"type":87,"tag":305,"props":426,"children":427},{},[428,433],{"type":87,"tag":327,"props":429,"children":430},{},[431],{"type":93,"value":432},"Hardware security module integration",{"type":87,"tag":327,"props":434,"children":435},{},[436],{"type":93,"value":437},"Roadmap",{"type":87,"tag":88,"props":439,"children":441},{"id":440},"getting-started",[442],{"type":93,"value":443},"Getting started",{"type":87,"tag":96,"props":445,"children":446},{},[447,449,454,456,461],{"type":93,"value":448},"The fastest path to a running server is ",{"type":87,"tag":110,"props":450,"children":451},{"href":58},[452],{"type":93,"value":453},"Docker Compose",{"type":93,"value":455},". For a production setup read the ",{"type":87,"tag":110,"props":457,"children":458},{"href":24},[459],{"type":93,"value":460},"Deployment guide",{"type":93,"value":462},".",{"type":87,"tag":88,"props":464,"children":466},{"id":465},"versioning",[467],{"type":93,"value":468},"Versioning",{"type":87,"tag":96,"props":470,"children":471},{},[472,474,481,483,490],{"type":93,"value":473},"Vaultaris follows ",{"type":87,"tag":110,"props":475,"children":478},{"href":476,"rel":477},"https:\u002F\u002Fsemver.org",[114],[479],{"type":93,"value":480},"SemVer",{"type":93,"value":482},". The HTTP API is versioned under ",{"type":87,"tag":484,"props":485,"children":487},"code",{"className":486},[],[488],{"type":93,"value":489},"\u002Fapi\u002Fv1\u002F",{"type":93,"value":462},{"title":82,"searchDepth":32,"depth":32,"links":492},[493,494,495,496,497,498],{"id":90,"depth":42,"text":94},{"id":127,"depth":42,"text":130},{"id":277,"depth":42,"text":280},{"id":292,"depth":42,"text":295},{"id":440,"depth":42,"text":443},{"id":465,"depth":42,"text":468},"markdown","content:docs:introduction.md","content","docs\u002Fintroduction.md","docs\u002Fintroduction","md",{"_path":35,"_dir":80,"_draft":81,"_partial":81,"_locale":82,"title":36,"description":37,"order":8,"category":33,"body":506,"_type":499,"_id":500,"_source":501,"_file":502,"_stem":503,"_extension":504},{"type":84,"children":507,"toc":823},[508,512,527,531,535,650,654,661,665,785,789,803,807],{"type":87,"tag":88,"props":509,"children":510},{"id":90},[511],{"type":93,"value":94},{"type":87,"tag":96,"props":513,"children":514},{},[515,516,520,521,526],{"type":93,"value":100},{"type":87,"tag":102,"props":517,"children":518},{},[519],{"type":93,"value":106},{"type":93,"value":108},{"type":87,"tag":110,"props":522,"children":524},{"href":112,"rel":523},[114],[525],{"type":93,"value":117},{"type":93,"value":119},{"type":87,"tag":96,"props":528,"children":529},{},[530],{"type":93,"value":124},{"type":87,"tag":88,"props":532,"children":533},{"id":127},[534],{"type":93,"value":130},{"type":87,"tag":132,"props":536,"children":537},{},[538,546,554,562,570,578,586,594,602,610,618,626,634,642],{"type":87,"tag":136,"props":539,"children":540},{},[541,545],{"type":87,"tag":102,"props":542,"children":543},{},[544],{"type":93,"value":49},{"type":93,"value":144},{"type":87,"tag":136,"props":547,"children":548},{},[549,553],{"type":87,"tag":102,"props":550,"children":551},{},[552],{"type":93,"value":152},{"type":93,"value":154},{"type":87,"tag":136,"props":555,"children":556},{},[557,561],{"type":87,"tag":102,"props":558,"children":559},{},[560],{"type":93,"value":162},{"type":93,"value":164},{"type":87,"tag":136,"props":563,"children":564},{},[565,569],{"type":87,"tag":102,"props":566,"children":567},{},[568],{"type":93,"value":172},{"type":93,"value":174},{"type":87,"tag":136,"props":571,"children":572},{},[573,577],{"type":87,"tag":102,"props":574,"children":575},{},[576],{"type":93,"value":182},{"type":93,"value":184},{"type":87,"tag":136,"props":579,"children":580},{},[581,585],{"type":87,"tag":102,"props":582,"children":583},{},[584],{"type":93,"value":192},{"type":93,"value":194},{"type":87,"tag":136,"props":587,"children":588},{},[589,593],{"type":87,"tag":102,"props":590,"children":591},{},[592],{"type":93,"value":202},{"type":93,"value":204},{"type":87,"tag":136,"props":595,"children":596},{},[597,601],{"type":87,"tag":102,"props":598,"children":599},{},[600],{"type":93,"value":212},{"type":93,"value":214},{"type":87,"tag":136,"props":603,"children":604},{},[605,609],{"type":87,"tag":102,"props":606,"children":607},{},[608],{"type":93,"value":222},{"type":93,"value":224},{"type":87,"tag":136,"props":611,"children":612},{},[613,617],{"type":87,"tag":102,"props":614,"children":615},{},[616],{"type":93,"value":232},{"type":93,"value":234},{"type":87,"tag":136,"props":619,"children":620},{},[621,625],{"type":87,"tag":102,"props":622,"children":623},{},[624],{"type":93,"value":242},{"type":93,"value":244},{"type":87,"tag":136,"props":627,"children":628},{},[629,633],{"type":87,"tag":102,"props":630,"children":631},{},[632],{"type":93,"value":252},{"type":93,"value":254},{"type":87,"tag":136,"props":635,"children":636},{},[637,641],{"type":87,"tag":102,"props":638,"children":639},{},[640],{"type":93,"value":262},{"type":93,"value":264},{"type":87,"tag":136,"props":643,"children":644},{},[645,649],{"type":87,"tag":102,"props":646,"children":647},{},[648],{"type":93,"value":272},{"type":93,"value":274},{"type":87,"tag":88,"props":651,"children":652},{"id":277},[653],{"type":93,"value":280},{"type":87,"tag":282,"props":655,"children":656},{},[657],{"type":87,"tag":96,"props":658,"children":659},{},[660],{"type":93,"value":289},{"type":87,"tag":88,"props":662,"children":663},{"id":292},[664],{"type":93,"value":295},{"type":87,"tag":297,"props":666,"children":667},{},[668,682],{"type":87,"tag":301,"props":669,"children":670},{},[671],{"type":87,"tag":305,"props":672,"children":673},{},[674,678],{"type":87,"tag":309,"props":675,"children":676},{},[677],{"type":93,"value":313},{"type":87,"tag":309,"props":679,"children":680},{},[681],{"type":93,"value":318},{"type":87,"tag":320,"props":683,"children":684},{},[685,698,711,724,737,750,763,774],{"type":87,"tag":305,"props":686,"children":687},{},[688,692],{"type":87,"tag":327,"props":689,"children":690},{},[691],{"type":93,"value":331},{"type":87,"tag":327,"props":693,"children":694},{},[695],{"type":87,"tag":336,"props":696,"children":697},{"src":338,"width":339,"height":339,"alt":340},[],{"type":87,"tag":305,"props":699,"children":700},{},[701,705],{"type":87,"tag":327,"props":702,"children":703},{},[704],{"type":93,"value":349},{"type":87,"tag":327,"props":706,"children":707},{},[708],{"type":87,"tag":336,"props":709,"children":710},{"src":338,"width":339,"height":339,"alt":340},[],{"type":87,"tag":305,"props":712,"children":713},{},[714,718],{"type":87,"tag":327,"props":715,"children":716},{},[717],{"type":93,"value":363},{"type":87,"tag":327,"props":719,"children":720},{},[721],{"type":87,"tag":336,"props":722,"children":723},{"src":338,"width":339,"height":339,"alt":340},[],{"type":87,"tag":305,"props":725,"children":726},{},[727,731],{"type":87,"tag":327,"props":728,"children":729},{},[730],{"type":93,"value":377},{"type":87,"tag":327,"props":732,"children":733},{},[734],{"type":87,"tag":336,"props":735,"children":736},{"src":338,"width":339,"height":339,"alt":340},[],{"type":87,"tag":305,"props":738,"children":739},{},[740,744],{"type":87,"tag":327,"props":741,"children":742},{},[743],{"type":93,"value":391},{"type":87,"tag":327,"props":745,"children":746},{},[747],{"type":87,"tag":336,"props":748,"children":749},{"src":338,"width":339,"height":339,"alt":340},[],{"type":87,"tag":305,"props":751,"children":752},{},[753,757],{"type":87,"tag":327,"props":754,"children":755},{},[756],{"type":93,"value":405},{"type":87,"tag":327,"props":758,"children":759},{},[760],{"type":87,"tag":336,"props":761,"children":762},{"src":338,"width":339,"height":339,"alt":340},[],{"type":87,"tag":305,"props":764,"children":765},{},[766,770],{"type":87,"tag":327,"props":767,"children":768},{},[769],{"type":93,"value":419},{"type":87,"tag":327,"props":771,"children":772},{},[773],{"type":93,"value":424},{"type":87,"tag":305,"props":775,"children":776},{},[777,781],{"type":87,"tag":327,"props":778,"children":779},{},[780],{"type":93,"value":432},{"type":87,"tag":327,"props":782,"children":783},{},[784],{"type":93,"value":437},{"type":87,"tag":88,"props":786,"children":787},{"id":440},[788],{"type":93,"value":443},{"type":87,"tag":96,"props":790,"children":791},{},[792,793,797,798,802],{"type":93,"value":448},{"type":87,"tag":110,"props":794,"children":795},{"href":58},[796],{"type":93,"value":453},{"type":93,"value":455},{"type":87,"tag":110,"props":799,"children":800},{"href":24},[801],{"type":93,"value":460},{"type":93,"value":462},{"type":87,"tag":88,"props":804,"children":805},{"id":465},[806],{"type":93,"value":468},{"type":87,"tag":96,"props":808,"children":809},{},[810,811,816,817,822],{"type":93,"value":473},{"type":87,"tag":110,"props":812,"children":814},{"href":476,"rel":813},[114],[815],{"type":93,"value":480},{"type":93,"value":482},{"type":87,"tag":484,"props":818,"children":820},{"className":819},[],[821],{"type":93,"value":489},{"type":93,"value":462},{"title":82,"searchDepth":32,"depth":32,"links":824},[825,826,827,828,829,830],{"id":90,"depth":42,"text":94},{"id":127,"depth":42,"text":130},{"id":277,"depth":42,"text":280},{"id":292,"depth":42,"text":295},{"id":440,"depth":42,"text":443},{"id":465,"depth":42,"text":468},1780603561415]