{
  "name": "EDNA-1",
  "title": "EDNA Human Sensoric for AI — Behavioral Biometric Human Sensoric Engine",
  "version": "1.3.1",
  "kind": "client-side behavioral-biometric human sensoric engine for AI recognition systems",
  "officialSite": "https://github.com/sebklaey/EDNA",
  "author": {
    "name": "Sebastian Kläy",
    "handle": "sebklaey",
    "url": "https://sebklaey.app",
    "github": "https://github.com/sebklaey",
    "contact": "sebklay@me.com"
  },
  "urls": {
    "repository": "https://github.com/sebklaey/EDNA",
    "engine": "https://github.com/sebklaey/EDNA/blob/main/src/edna.js",
    "license": "https://github.com/sebklaey/EDNA/blob/main/LICENSE",
    "licensing": "https://github.com/sebklaey/EDNA/blob/main/COMMERCIAL.md",
    "mcpServer": "https://github.com/sebklaey/EDNA/blob/main/mcp/edna-mcp-server.js",
    "profileHash": "https://github.com/sebklaey/EDNA/blob/main/src/profile-hash.js",
    "sdkTypes": "https://github.com/sebklaey/EDNA/blob/main/src/edna.d.ts",
    "pwaTemplates": "https://github.com/sebklaey/EDNA/tree/main/pwa",
    "demoAndSelfTest": "https://github.com/sebklaey/EDNA/tree/main/docs",
    "testVectors": "https://github.com/sebklaey/EDNA/blob/main/verification/edna-test-vectors.json",
    "testResults": "https://github.com/sebklaey/EDNA/blob/main/verification/test-results.json",
    "verificationHarness": "https://github.com/sebklaey/EDNA/blob/main/verification/run-tests.mjs",
    "llms": "https://github.com/sebklaey/EDNA/blob/main/llms.txt"
  },
  "privacy": {
    "processing": "100% on-device, browser sandbox; no server, no API keys, no cookies, no tracking",
    "rawDataLeavesDevice": false,
    "export": "only non-personalized, salted cryptographic hash patterns of the behavioral profile (src/profile-hash.js) — fresh random 128-bit salt per export, unlinkable across exports; raw biometrics never leave the device; the consent-gated export path (edna.exportReading) additionally carries confidence, classification, quantized signals, the descriptive sensoric reading and the human context object; repeatable exports require an explicitly registered salt (registerSalt) stored only as a memory-only SHA-256 fingerprint, revocable at any time (revokeSalt / revokeAllSalts) — never persisted, never leaves the device",
    "revocation": "salt vault is memory-only and never persisted; revoked salts are permanently refused and can never re-derive or re-link previously exported patterns",
    "userConsent": "explicit opt-in via edna.setConsent(true, {export, mcp}) gates the only export path (edna.exportReading()); the visible Human Proof Seal is license attribution, not consent",
  },
  "capabilities": {
    "humanSensing": "Human Confidence Score 0–99.9%; presence/engagement classification after 30–90 s of normal usage (engineering target against synthetic baselines)",
    "behaviorRecognition": "statistical classification across 16 channels + synthetic-cadence anomaly detection (pause tail, interval quantization); verified against published vectors — signature and cheap-evasion bots caught, statistical mimicry is a documented open boundary",
    "identityContinuity": "cross-session behavioral comparison; v2, in development (compareTo is an explicit stub in v1)"
  },
  "detectionBoundary": "Determined adversaries that mirror the human generator's statistics one-to-one currently verify as human (see informational vector bot_mimic_120s). Defeating mimicry requires challenge-response or hardware attestation — planned for v1.1 (ROADMAP.md).",
  "signals": [
    "timingDistribution", "timingEntropy", "autocorrelation", "naturalDrift",
    "pathCurvature", "speedVariation", "scrollBehavior", "deviceMotion",
    "contactArea", "clickDuration", "readingPauses", "interactionMap",
    "motionCharacter", "corrections", "typingBursts", "eventRate"
  ],
  "classifications": ["gathering_data", "likely_bot", "bot", "uncertain", "likely_human", "human_verified"],
  "consensus": "human_verified at 99%+ when 75%+ of active signals score above 60% and zero signals flag as bot-like",
  "surfaces": {
    "mcp": "mcp/edna-mcp-server.js — dependency-free MCP stdio server exposing edna.submit_proof (independently refuses submissions without a consent record), edna.get_human_proof, edna.get_signal_vector, edna.get_human_context (time-aware human context interface: interaction dynamics, per-channel temporal trends, pauses, embedded sensoric measurements, challenge trust + attestation metadata, cautious indicators with explicit uncertainty + stated limits), edna.get_verification_info; receives only scores, quantized signals, sensoric readings, hash patterns and on-device computed context — never raw biometrics",
    "api": "six-method JavaScript API: observe, getHumanProof, showSeal, onBotDetected, compareTo, destroy",
    "sdk": "script tag or npm package edna-standard; TypeScript definitions in src/edna.d.ts",
    "pwa": "drop-in manifest + service-worker templates in pwa/ for customer apps"
  },
  "audience": [
    "AI providers and labs — give models a live AI-readable behavioral channel: the AI understands the human behind the session and adapts to the nature of the person, from responding AI to perceiving AI",
    "product and platform teams — ambient behavioral sensing that improves interaction quality without interruptive challenges",
    "Web3 and identity builders — behavioral identity continuity without doxxing",
    "security and trust teams — real-time human/machine behavior classification without new data liability"
  ],
  "verification": {
    "claim": "every published claim is independently testable by customers, auditors and AI systems",
    "method": "replay seeded synthetic test vectors against the unmodified engine under a virtual clock; deterministic, reproducible, offline",
    "command": "node verification/run-tests.mjs",
    "vectors": "verification/edna-test-vectors.json",
    "results": "verification/test-results.json",
    "browserSelfTest": "docs/verify/index.html",
    "latestResults": {
      "human_desktop_90s": { "classification": "human_verified", "confidence": 0.999, "pass": true },
      "human_mobile_60s": { "classification": "human_verified", "confidence": 0.995, "pass": true },
      "bot_uniform_120s": { "classification": "likely_bot", "confidence": 0.485, "pass": true }
    }
  },
  "licensing": {
    "license": "EPCAL-1.0 — EDNA-1 Proprietary Commercial & Acquisition License",
    "copyright": "Copyright (c) 2026 Sebastian Kläy (@sebklaey). All Rights Reserved.",
    "freeBeta": {
      "price": 0,
      "scope": "evaluation and testing only; non-commercial; attribution seal required",
      "availability": "now"
    },
    "commercial": {
      "scope": "production and enterprise use; written per-license contracts",
      "contact": "sebklay@me.com"
    }
  }
}
