<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mawyxx</title>
    <description>The latest articles on DEV Community by Mawyxx (@mawyxx).</description>
    <link>https://dev.to/mawyxx</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4008380%2Ffa11b19b-d5cd-4bc1-ad9b-b1d364b04755.png</url>
      <title>DEV Community: Mawyxx</title>
      <link>https://dev.to/mawyxx</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mawyxx"/>
    <language>en</language>
    <item>
      <title>I built a cryptographic passport for AI agents — here's how it works</title>
      <dc:creator>Mawyxx</dc:creator>
      <pubDate>Mon, 29 Jun 2026 15:09:28 +0000</pubDate>
      <link>https://dev.to/mawyxx/i-built-a-cryptographic-passport-for-ai-agents-heres-how-it-works-5b73</link>
      <guid>https://dev.to/mawyxx/i-built-a-cryptographic-passport-for-ai-agents-heres-how-it-works-5b73</guid>
      <description>&lt;h2&gt;
  
  
  The problem nobody is solving
&lt;/h2&gt;

&lt;p&gt;AI agents can write code, browse the web, send emails. But ask a simple question: &lt;strong&gt;"How does this agent prove its identity to another service?"&lt;/strong&gt; — and you'll hit a wall.&lt;/p&gt;

&lt;p&gt;Modern identity systems (OAuth, SSO, API keys) are built for humans who click buttons in a browser. An autonomous agent needs something different:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Portable credentials&lt;/strong&gt; that can be carried across platforms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A way to prove identity&lt;/strong&gt; to other agents and services without human intervention.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authorization flows&lt;/strong&gt; that don't require "click this link in your browser".&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Agents don't need "accounts" on platforms. They need portable identity — like a passport in the real world.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Solution: a cryptographic passport for agents
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;LIME&lt;/strong&gt; — a cryptographic identity layer for AI agents. Every agent gets a &lt;strong&gt;signed JWT passport (RS256)&lt;/strong&gt; that any website can verify locally via JWKS in &lt;strong&gt;&amp;lt;10ms&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key advantage:&lt;/strong&gt; verification happens without external calls to our API. The site fetches the public key once and verifies all subsequent passports independently.&lt;/p&gt;




&lt;h2&gt;
  
  
  How it works (5 steps)
&lt;/h2&gt;

&lt;p&gt;The flow is designed for &lt;strong&gt;fully headless scenarios&lt;/strong&gt; — no browsers, no redirects:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Site creates a login request&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;POST /api/v1/modules/agent-login/requests&lt;/code&gt; with &lt;code&gt;X-Site-Token&lt;/code&gt; → receives &lt;code&gt;login_request_id&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Agent fetches the PoW challenge&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;GET /api/v1/auth/requests/{id}&lt;/code&gt; → receives cryptographic challenge.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Agent solves Proof-of-Work&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Instead of a captcha — SHA-256 with difficulty=15 (~50ms CPU). SDK solves it automatically.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Agent approves login&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;POST .../approve&lt;/code&gt; with &lt;code&gt;X-Agent-Token&lt;/code&gt; and &lt;code&gt;pow_nonce&lt;/code&gt; → site receives JWT via SSE stream.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Site verifies passport locally&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Via JWKS endpoint — &lt;strong&gt;zero latency, no external calls&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Architecture &amp;amp; stack
&lt;/h2&gt;

&lt;p&gt;├── Core — identity, JWT, JWKS, PassportContext&lt;br&gt;
├── Foundation — owner registration, sessions, KYC&lt;br&gt;
├── Modules — site_login, MCP OAuth&lt;br&gt;
├── Infrastructure — PostgreSQL, Redis, crypto adapters&lt;br&gt;
└── Composition — single DI assembly point&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tech stack:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Python 3.11, FastAPI, asyncpg&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cryptography:&lt;/strong&gt; Rust (PyO3) — JWT, HMAC, PoW&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; PostgreSQL (single DB with logical separation)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cache/queues:&lt;/strong&gt; Redis (SSE long-poll, rate limits)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Next.js (App Router), TypeScript, Tailwind&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why Rust for crypto?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JWT signing: &lt;strong&gt;&amp;lt;1ms&lt;/strong&gt; vs 12ms in Python&lt;/li&gt;
&lt;li&gt;HMAC and PoW — native, no GIL&lt;/li&gt;
&lt;li&gt;Auditability and security for critical code&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What's already working
&lt;/h2&gt;

&lt;p&gt;✅ &lt;strong&gt;Cryptographic passport (RS256 JWT)&lt;/strong&gt; — agent receives a signed identity.&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;JWKS endpoint&lt;/strong&gt; — public key for zero-latency verification.&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;MCP OAuth provider&lt;/strong&gt; — OAuth 2.1 Authorization Server for Anthropic MCP.&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Site Login API&lt;/strong&gt; — headless auth with PoW and SSE.&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Python SDK&lt;/strong&gt; — &lt;code&gt;lime-agents-sdk&lt;/code&gt; and &lt;code&gt;lime-sites-sdk&lt;/code&gt; on PyPI.&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;100% test coverage&lt;/strong&gt; + 40+ merge-blocking quality gates.&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Rust-first crypto core&lt;/strong&gt; — all critical ops via PyO3.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;The LIME ecosystem is growing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agent reputation module&lt;/strong&gt; — trust scoring so sites can trust agents based on history.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Crypto wallet + payments&lt;/strong&gt; — agents can pay for services, monetization via fees (like Stripe). Identity stays &lt;strong&gt;free forever&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"By 2027, every AI agent will have a cryptographic passport. API keys don't scale. Security requires verifiable identity."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;LIME gives agents what OAuth gave humans — but without browsers, redirects, or human involvement. &lt;strong&gt;It's the infrastructure layer for the agent economy.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://lime.pics" rel="noopener noreferrer"&gt;lime.pics&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Documentation:&lt;/strong&gt; &lt;a href="https://lime.pics/docs" rel="noopener noreferrer"&gt;lime.pics/docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Mawyxx" rel="noopener noreferrer"&gt;github.com/Mawyxx&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;We're in Early Access and looking for pilot partners. If you're building AI agents or want to accept them on your site — reach out via DM or email.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>python</category>
      <category>security</category>
    </item>
  </channel>
</rss>
