Skip to content

AI Passports

An AI Passport is a cryptographically signed certificate that proves an AI application is running in a verified secure environment with active safety auditors.

What's in an AI Passport?

Field Description
Application Name The AI application being verified
TEE Type Hardware security environment (SGX, SEV-SNP, TDX, Nitro)
Active Auditors Safety auditors monitoring the application
SLSA Level Supply chain security level (0-4)
Container Digest Cryptographic hash of the running container
Valid Until Passport expiration timestamp
Signature Ed25519 signature from Lucid Verifier
Attestation Quote Hardware-level proof from the TEE

Why AI Passports Matter

AI Passports provide end-user transparency about AI safety:

  • Users can verify the AI they're interacting with has active safety measures
  • Enterprises can demonstrate compliance with AI regulations
  • Developers can prove their applications meet security standards
  • Regulators can audit AI deployments with cryptographic proof

Display Options

When deploying an AI application with Lucid, you can choose how the AI Passport is displayed to end users.

Top Banner

A persistent banner at the top of the application showing verification status.

block-beta
    columns 1
    block:banner["✓ Lucid Verified • TEE: SGX • 3 Auditors Active"]
    end
    block:content
        space
        A["Your Application Content"]
        space
    end

Best for: Applications where trust is critical (healthcare, finance, legal)

Configuration:

spec:
  passport:
    display:
      mode: banner
      position: top
      theme: auto  # light, dark, or auto
      collapsedDefault: false

Bottom Banner

Same as top banner but fixed to the bottom of the viewport.

Best for: Applications where top space is valuable (chat interfaces, dashboards)

Configuration:

spec:
  passport:
    display:
      mode: banner
      position: bottom

Floating Widget

A small badge in the corner that expands on click to show full passport details.

block-beta
    columns 3
    block:content:3
        space:2
        space:2
        A["Your Application Content"]:2
        widget["✓"]
    end

Best for: Applications where visual real estate is limited

Configuration:

spec:
  passport:
    display:
      mode: floating
      position: bottom-right  # bottom-left, top-right, top-left

Dedicated Page

No in-app UI. Users visit a dedicated URL to view the passport.

URL: https://yourapp.com/.lucid/passport

Best for: API-first applications, minimal UI disruption

Configuration:

spec:
  passport:
    display:
      mode: page_only

Browser Extension

No in-app UI. Users install the Lucid Passport Verifier browser extension to see verification status in their browser toolbar.

flowchart TB
    subgraph Browser["Browser Window"]
        direction TB
        Toolbar["← → ↻ | yourapp.com | 🛡️ ✓ | ⋮"]
        Content["Your Application Content"]
    end

    Toolbar --> Popup

    subgraph Popup["Extension Popup"]
        P1["✓ AI Passport Verified"]
        P2["TEE: SGX"]
        P3["Auditors: 3"]
        P4["SLSA: Level 2"]
    end

Best for: Technical users, API services, minimal application changes

Configuration:

spec:
  passport:
    display:
      mode: browser_extension


Browser Extension

The Lucid AI Passport Verifier browser extension automatically detects and verifies AI Passports on any website.

Installation

Browser Installation
Chrome / Edge / Brave Coming soon
Firefox Coming soon
Safari Coming soon

How It Works

  1. Detection: The extension scans pages for AI Passports via:
  2. <meta name="lucid-passport"> tags
  3. <link rel="ai-passport"> elements
  4. /.lucid/passport endpoint
  5. Response headers (X-Lucid-Passport)

  6. Verification: When found, the extension:

  7. Validates the cryptographic signature
  8. Checks attestation quotes against hardware roots of trust
  9. Verifies the passport hasn't expired

  10. Display: Shows status in the toolbar:

  11. ✓ Green badge: Verified AI Passport
  12. ! Red badge: Verification failed
  13. No badge: No passport detected

For Developers

To make your application compatible with the browser extension, expose the AI Passport in at least one of these ways:

<!-- Option 1: Meta tag -->
<meta name="lucid-passport" content='{"appName":"MyApp",...}'>

<!-- Option 2: Link to endpoint -->
<link rel="ai-passport" href="/.lucid/passport">

<!-- Option 3: JSON-LD script -->
<script type="application/lucid-passport+json">
{
  "appName": "MyApp",
  "tee": {"type": "SGX"},
  "auditors": ["injection", "toxicity"],
  ...
}
</script>

The Lucid sidecar automatically serves the passport at /.lucid/passport when deployed.


Passport Configuration

Validity Period

Control how long passports remain valid:

spec:
  passport:
    validityDays: 30  # Default: 30 days

Shorter validity periods provide fresher attestations but require more frequent renewals.

Minimum SLSA Level

Require a minimum supply chain security level:

spec:
  passport:
    minSlsaLevel: 2  # 0-4, default: 0
Level Requirements
0 No requirements
1 Basic provenance (build logs exist)
2 Signed provenance (builds are signed)
3 Hardened builds (isolated build environment)
4 Hermetic builds (fully reproducible)

Evidence Included

Control what information appears in the passport:

spec:
  passport:
    evidence:
      teeAttestation: true      # Hardware attestation quote
      auditorClaims: true       # Safety auditor results
      routingProofs: true       # Request routing verification
      containerInfo: true       # Container digest and metadata
      slsaProvenance: true      # Supply chain provenance
      modelFingerprint: false   # Model hash (optional)

Verifying Passports Programmatically

CLI

# List passports for an environment
lucid passport list

# Show passport details
lucid passport show pass-abc123

# Verify a passport
lucid passport verify pass-abc123

API

# Fetch passport for an endpoint
curl https://yourapp.com/.lucid/passport

# Verify via Lucid API
curl -X POST https://api.lucid.ai/v1/passports/verify \
  -H "Authorization: Bearer $LUCID_API_KEY" \
  -d '{"passport": "..."}'

SDK

from lucid import LucidClient

client = LucidClient()

# Get passport for a URL
passport = client.get_passport("https://yourapp.com")

# Verify it
result = client.verify_passport(passport)
print(f"Valid: {result.valid}")
print(f"TEE: {result.tee_type}")
print(f"Auditors: {result.auditors}")

Passport Schema

Full JSON schema for AI Passports:

{
  "$schema": "https://lucid.ai/schemas/passport/v1",
  "passportId": "pass-abc123def456",
  "appName": "My AI Application",
  "version": "1.0.0",
  "issuedAt": "2024-01-15T10:30:00Z",
  "expiresAt": "2024-02-14T10:30:00Z",
  "tee": {
    "type": "AMD_SEV_SNP",
    "attestationQuote": "base64...",
    "measurementHash": "sha256:abc123..."
  },
  "auditors": [
    {
      "id": "injection-detector",
      "name": "Injection Detection",
      "status": "active",
      "lastCheck": "2024-01-15T10:29:00Z"
    }
  ],
  "container": {
    "digest": "sha256:abc123...",
    "registry": "gcr.io/my-project/my-app"
  },
  "slsa": {
    "level": 2,
    "provenanceUri": "https://..."
  },
  "signature": {
    "algorithm": "Ed25519",
    "publicKey": "base64...",
    "value": "base64..."
  }
}

Next Steps