Identity for humans and their agents.

    Authiun logs people in without passwords and gives their AI agents narrow, revocable authority to act. All rooted in one passkey.

    How MFA-Brain™ scores a request

    Signals like location, IP, device and behaviour feed the engine in real time. It returns a trust score, then issues the right challenge for a person, or scoped authority for an agent.

    Location
    IP reputation
    Device binding
    Network / ASN
    Time of day
    Behaviour

    MFA-Brain™

    Risk score · person

    Challenge issued:
    Face
    Fingerprint
    Passkey
    Iris scan
    Palm vein
    Voice match
    Device push
    Security key
    Device PIN
    Behaviour re-check

    Passwords are broken

    • Phishing kits capture credentials in real time.
    • Reuse turns one breach into many.
    • Resets cost support hours and open social-engineering paths.
    • Breach fallout lands on users long after the leak.

    Agents are worse

    People hand AI assistants their actual passwords, API keys, and full account access, with no scope, no expiry, and no way to revoke.

    Authiun fixes both with the same foundation.

    Log in with a tap, not a password.

    Your users approve sign-in from their phone with a fingerprint or face. No passwords to steal, phish, or reset. Built on passkeys and device biometrics, with risk signals on every attempt.

    Biometric approval

    Sign-in is approved on the phone with a fingerprint or face. The key never leaves the device.

    Phishing-resistant by design

    Passkeys are bound to your origin. There is no code, link, or secret an attacker can relay.

    Drop-in SDK for web & mobile

    A few lines to replace your password form, with risk signals returned on every attempt.

    Give your AI agents authority, not your credentials.

    Authiun issues agents capability tokens: signed grants that say exactly what an agent may do, for how long, on which services, and nothing else. Delegate to an agent, let it sub-delegate to a tool, and revoke the whole chain in one click. Agents act on your behalf without ever seeing your passwords or API keys.

    Scoped by default

    Read one inbox label, not the whole account.

    Delegation chains

    Grant and sub-delegate. Never widen.

    Instant revocation

    Kill a token or a whole chain the moment you want.

    Secrets stay in the vault

    The agent gets a scoped token, never the key.

    Delegation chain

    Human passkeyAll permissions

    Root of trust · device-bound

    Agent capabilityNarrowed

    read_email · gmail · 1h

    Tool capabilityNarrowed again

    read_email:label/receipts · 10m

    Each grant is narrower than its parent. Revoking a link kills everything below it, immediately.

    A wallet for your agents.

    Create agents, set their limits, connect services, and revoke access, from a web app that installs on your phone. Every token is a real signed credential you can see and control.

    Open the wallet
    Authiun wallet
    3 agents
    • Research agent

      read_email, read_calendar · 24h

      manage
    • Invoice bot

      stripe:read_invoices · 1h

      manage
    • Deploy helper

      github:read_repo · revoked

      manage

    One grant, 122+ services.

    Connect the accounts you already use. Authiun holds the credential and hands your agents a scoped token per service: read-only, time-boxed, revocable, and logged.

    Email & calendar

    • Gmail logoGmail
    • Outlook logoOutlook
    • Google Calendar logoGoogle Calendar
    • Fastmail logoFastmail
    • Proton logoProton

    Storage & docs

    • Google Drive logoGoogle Drive
    • Dropbox logoDropbox
    • Notion logoNotion
    • OneDrive logoOneDrive
    • Box logoBox

    Developer

    • GitHub logoGitHub
    • GitLab logoGitLab
    • Linear logoLinear
    • Jira logoJira
    • Vercel logoVercel
    • AWS logoAWS

    Comms

    • Slack logoSlack
    • Discord logoDiscord
    • Twilio logoTwilio
    • Zoom logoZoom
    • Intercom logoIntercom

    Commerce & finance

    • Stripe logoStripe
    • Shopify logoShopify
    • QuickBooks logoQuickBooks
    • Xero logoXero
    • Plaid logoPlaid

    CRM & data

    • Salesforce logoSalesforce
    • HubSpot logoHubSpot
    • Airtable logoAirtable
    • Snowflake logoSnowflake
    • Postgres logoPostgres

    Plus 90 more, and a generic OAuth 2.0 / API-key connector for anything else you run.

    Built so a compromised agent stays a small problem.

    Authiun's model assumes something will go wrong. Narrow scopes, short lifetimes, and one-click revocation keep the blast radius contained.

    Keys stay on device

    Passkey private keys never leave the phone's secure enclave. Authiun stores public keys only.

    Agents never see secrets

    Connector credentials sit in an encrypted vault. Agents receive short-lived, scoped tokens instead.

    Short-lived by default

    Every grant carries an expiry. Long-running authority has to be renewed, not assumed.

    Attenuation only

    A sub-delegated token can narrow permissions. It can never widen them beyond its parent.

    Full audit trail

    Every issue, use, and revoke event is recorded with the actor, scope, and service.

    Encrypted end to end

    TLS in transit, envelope encryption at rest, with per-tenant key separation.

    We publish how the system works rather than badges we haven't earned. Compliance certifications are on the roadmap; we'll say so plainly when they land.

    Three calls: verify, grant, act.

    Typed SDKs for TypeScript, Python, and Go, plus a plain REST API. No agent framework lock-in: if it can send an HTTP header, it can carry an Authiun token.

    Read the docs
    agent.ts
    import { Authiun } from "@authiun/sdk";
    
    const authiun = new Authiun({ apiKey: process.env.AUTHIUN_KEY });
    
    // 1. Passwordless sign-in for a human
    const session = await authiun.passkeys.verify({ assertion });
    
    // 2. Issue scoped, revocable authority to their agent
    const grant = await authiun.grants.issue({
      subject: session.userId,
      agent: "inbox-triage-bot",
      scopes: ["gmail:labels.read", "gmail:messages.read"],
      expiresIn: "1h",
    });
    
    // 3. The agent calls the service with a token, never a credential
    await authiun.connectors.call(grant.token, "gmail", {
      method: "GET",
      path: "/messages?label=support",
    });

    Questions we hear most

    Everything you need to know about how Authiun works.

    A passkey for you. Scoped authority for your agents.

    Start free, wire up your first connector in an afternoon, and revoke anything the moment you change your mind.

    Read the docs