{"slug": "show-hn-opentrust-browser-trust-signals-for-the-ai-era", "title": "Show HN: OpenTrust – Browser trust signals for the AI era", "summary": "OpenTrust, an open-source SDK for privacy-preserving browser trust signals, has been released on GitHub. The tool detects browser automation, virtual cameras, and replay attacks while processing all data client-side, with raw frames never leaving the device. It provides confidence scores for fraud prevention and bot mitigation but is not a replacement for KYC or server-side verification.", "body_md": "**Privacy-first browser trust signals for modern web applications.**\n\nOpenTrust is an open-source SDK that collects privacy-preserving browser signals to help developers estimate the trustworthiness of a browser interaction. It provides signals — not decisions — designed to be combined with authentication, device reputation, and server-side verification systems.\n\nOpenTrust exposes browser-side trust signals through a clean TypeScript API:\n\n**Browser automation detection**— webdriver flags, headless browsers, abnormal properties** Webcam integrity checks**— virtual camera detection, static/replayed video analysis** Passive liveness analysis**— face presence, motion, blink detection** Microphone integrity**— virtual mic detection, audio signal analysis\n\nAll processing is client-side. Raw frames never leave the device.\n\nOpenTrust is designed to provide **additional signals** for:\n\n- Fraud prevention workflows\n- Risk scoring and trust estimation\n- Bot mitigation systems\n- Browser integrity checks\n- Research and experimentation\n- Developer tooling and prototypes\n\nOpenTrust is **not** a replacement for:\n\n- KYC (Know Your Customer)\n- Identity verification\n- Enterprise liveness detection\n- Device attestation\n- Server-side fraud detection\n\nSecurity is built from multiple layers. OpenTrust intentionally focuses on browser-side trust signals and should be combined with server-side verification and authentication systems. The SDK returns confidence signals — not binary \"human/bot\" judgments.\n\n```\nnpm install opentrust-sdk\njs\nimport { OpenTrust } from 'opentrust-sdk';\n\nconst result = await OpenTrust.verify({\n  camera: true,\n});\n\nconsole.log(result.trustScore);     // 0.85\nconsole.log(result.signals);\n// {\n//   faceDetected: true,\n//   livenessScore: 0.72,\n//   virtualCameraDetected: false,\n//   browserAutomationDetected: false,\n//   replayRisk: 0.12,\n//   audioScore: 0.0,\n//   virtualMicDetected: false\n// }\n```\n\n| Option | Type | Default | Description |\n|---|---|---|---|\n`camera` |\n`boolean` |\n`false` |\nEnable webcam checks |\n`microphone` |\n`boolean` |\n`false` |\nEnable microphone checks |\n`timeout` |\n`number` |\n`15000` |\nMax time in ms |\n\n```\n{\n  trustScore: number,         // 0.0 - 1.0\n  signals: {\n    faceDetected: boolean,\n    livenessScore: number,\n    virtualCameraDetected: boolean,\n    browserAutomationDetected: boolean,\n    replayRisk: number,\n    audioScore: number,\n    virtualMicDetected: boolean,\n  },\n  timestamp: number\n}\nnpm install opentrust-react\njs\nimport { useOpenTrust } from 'opentrust-react';\n\nfunction VerificationButton() {\n  const { result, loading, verify } = useOpenTrust();\n\n  return (\n    <button onClick={() => verify({ camera: true })} disabled={loading}>\n      {loading ? 'Analyzing...' : 'Collect Trust Signals'}\n    </button>\n  );\n}\n<script src=\"https://cdn.jsdelivr.net/npm/opentrust-sdk@0.1.0/dist-browser/opentrust.umd.js\"></script>\n<script>\n  const r = await OpenTrust.verify({ camera: true });\n</script>\ngit clone https://github.com/rafaelEt/opentrust.git\ncd opentrust\nnpm install\nnpm run dev\n```\n\nOr with Docker:\n\n```\ndocker compose up\n```\n\nVisit [http://localhost:3000](http://localhost:3000).\n\nOr try the live demo: [https://open--trust.vercel.app](https://open--trust.vercel.app)\n\nOpenTrust never uploads raw camera frames or microphone audio. All processing is client-side. See [docs/privacy.md](/rafaelEt/opentrust/blob/main/docs/privacy.md).\n\nMIT — see [LICENSE](/rafaelEt/opentrust/blob/main/LICENSE).", "url": "https://wpnews.pro/news/show-hn-opentrust-browser-trust-signals-for-the-ai-era", "canonical_source": "https://github.com/rafaelEt/opentrust", "published_at": "2026-07-23 20:37:47+00:00", "updated_at": "2026-07-23 20:52:26.505504+00:00", "lang": "en", "topics": ["developer-tools", "ai-safety", "computer-vision", "ai-products"], "entities": ["OpenTrust", "GitHub", "TypeScript", "Docker"], "alternates": {"html": "https://wpnews.pro/news/show-hn-opentrust-browser-trust-signals-for-the-ai-era", "markdown": "https://wpnews.pro/news/show-hn-opentrust-browser-trust-signals-for-the-ai-era.md", "text": "https://wpnews.pro/news/show-hn-opentrust-browser-trust-signals-for-the-ai-era.txt", "jsonld": "https://wpnews.pro/news/show-hn-opentrust-browser-trust-signals-for-the-ai-era.jsonld"}}