<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>passkeys on SpartanAuth Blog</title>
    <link>https://blog.spartanauth.com/tags/passkeys/</link>
    <description>SpartanAuth Blog (passkeys)</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 22 Jul 2026 00:20:00 -0600</lastBuildDate>
    
    <atom:link href="https://blog.spartanauth.com/tags/passkeys/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>SpartanAuth is live</title>
      <link>https://blog.spartanauth.com/posts/spartanauth-is-live/</link>
      <pubDate>Wed, 22 Jul 2026 00:20:00 -0600</pubDate>
      
      <guid>https://blog.spartanauth.com/posts/spartanauth-is-live/</guid>
      <description>&lt;p&gt;For a long time this blog was me writing about auth while the product was still finding its legs. That chapter is over.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SpartanAuth is live.&lt;/strong&gt; Not a slide deck. Not a private prototype I only demo on good days. It is running in real applications — including several of my own — and other people are shipping with it too.&lt;/p&gt;
&lt;p&gt;The point of SpartanAuth was never &amp;ldquo;another identity platform with a 40-page pricing grid.&amp;rdquo; It was simpler: give developers a path to solid auth without turning the front door of their app into a multi-month side quest. The &lt;a href=&#34;https://blog.spartanauth.com/posts/login-widget/&#34;&gt;login widget&lt;/a&gt; was always part of that bet. Drop it in, brand it, and let users sign in without you hand-rolling every edge case.&lt;/p&gt;
&lt;p&gt;Here is what that looks like in the wild.&lt;/p&gt;
&lt;h2 id=&#34;real-apps-real-front-doors&#34; &gt;Real apps, real front doors
&lt;span&gt;
    &lt;a href=&#34;#real-apps-real-front-doors&#34;&gt;
        &lt;svg viewBox=&#34;0 0 28 23&#34; height=&#34;100%&#34; width=&#34;19&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;&lt;path d=&#34;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-miterlimit=&#34;10&#34; stroke-width=&#34;2&#34;/&gt;&lt;path d=&#34;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-miterlimit=&#34;10&#34; stroke-width=&#34;2&#34;/&gt;&lt;/svg&gt;
    &lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;&lt;p&gt;Same widget family. Different products. Different brands.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://blog.spartanauth.com/img/lagom-supply-login.png&#34;/&gt;&lt;figcaption&gt;
            &lt;h4&gt;Lagom Supply CRM — password login and reset, styled for the product.&lt;/h4&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;img src=&#34;https://blog.spartanauth.com/img/book-club-login.png&#34;/&gt;&lt;figcaption&gt;
            &lt;h4&gt;Book Club — password auth plus Continue with Google.&lt;/h4&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;img src=&#34;https://blog.spartanauth.com/img/spartanauth-dashboard-login.png&#34;/&gt;&lt;figcaption&gt;
            &lt;h4&gt;SpartanAuth&amp;#39;s own dashboard login — the dogfooding never stops.&lt;/h4&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;I care about this more than feature checklists. A login screen is the handshake before anyone trusts your app. If it feels bolted on, everything downstream feels a little worse. If it feels native, people stop thinking about auth and start using the product.&lt;/p&gt;
&lt;div class=&#34;stat-row&#34;&gt;

&lt;figure class=&#34;stat-card stat-card--compact&#34;&gt;
  &lt;div class=&#34;stat-card-value&#34;&gt;Live&lt;/div&gt;
  &lt;figcaption class=&#34;stat-card-label&#34;&gt;Running in real deployed applications&lt;/figcaption&gt;&lt;/figure&gt;

&lt;figure class=&#34;stat-card stat-card--compact&#34;&gt;
  &lt;div class=&#34;stat-card-value&#34;&gt;Branded&lt;/div&gt;
  &lt;figcaption class=&#34;stat-card-label&#34;&gt;Same widget, different product skins&lt;/figcaption&gt;&lt;/figure&gt;

&lt;figure class=&#34;stat-card stat-card--compact&#34;&gt;
  &lt;div class=&#34;stat-card-value&#34;&gt;Mine &amp;#43; others&lt;/div&gt;
  &lt;figcaption class=&#34;stat-card-label&#34;&gt;Apps I run, and apps other people are shipping&lt;/figcaption&gt;&lt;/figure&gt;


&lt;/div&gt;

&lt;h2 id=&#34;what-the-widget-can-do-today&#34; &gt;What the widget can do today
&lt;span&gt;
    &lt;a href=&#34;#what-the-widget-can-do-today&#34;&gt;
        &lt;svg viewBox=&#34;0 0 28 23&#34; height=&#34;100%&#34; width=&#34;19&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;&lt;path d=&#34;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-miterlimit=&#34;10&#34; stroke-width=&#34;2&#34;/&gt;&lt;path d=&#34;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-miterlimit=&#34;10&#34; stroke-width=&#34;2&#34;/&gt;&lt;/svg&gt;
    &lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;&lt;p&gt;If you last checked in during the early prototype posts, the surface area has grown up.&lt;/p&gt;
&lt;p&gt;The login widget, backed by SpartanAuth, currently supports:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;OAuth2 / social sign-in&lt;/strong&gt; — Google, Apple, GitHub, and generic OIDC&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Self sign-up&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Password reset&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MFA via email&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Passkeys&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;stat-row&#34;&gt;

&lt;figure class=&#34;stat-card&#34;&gt;
  &lt;div class=&#34;stat-card-value&#34;&gt;4&lt;/div&gt;
  &lt;figcaption class=&#34;stat-card-label&#34;&gt;OAuth paths: Google, Apple, GitHub, generic OIDC&lt;/figcaption&gt;&lt;/figure&gt;

&lt;figure class=&#34;stat-card stat-card--compact&#34;&gt;
  &lt;div class=&#34;stat-card-value&#34;&gt;Passkeys&lt;/div&gt;
  &lt;figcaption class=&#34;stat-card-label&#34;&gt;Modern passwordless when you want it&lt;/figcaption&gt;&lt;/figure&gt;

&lt;figure class=&#34;stat-card stat-card--compact&#34;&gt;
  &lt;div class=&#34;stat-card-value&#34;&gt;Email MFA&lt;/div&gt;
  &lt;figcaption class=&#34;stat-card-label&#34;&gt;A second factor without SIM-swap theater&lt;/figcaption&gt;&lt;/figure&gt;


&lt;/div&gt;

&lt;p&gt;That mix matters. Some apps want &amp;ldquo;Continue with Google&amp;rdquo; on day one. Some need boring email + password with a reset flow that does not shame the user. Some are ready for passkeys. A few want all of the above without maintaining four half-finished auth codepaths.&lt;/p&gt;
&lt;p&gt;I am still opinionated about SMS OTP — I wrote about &lt;a href=&#34;https://blog.spartanauth.com/posts/sms-otp/&#34;&gt;why I will not pretend it is a strong factor&lt;/a&gt; — but I am not opinionated about whether &lt;em&gt;your&lt;/em&gt; users should start on OAuth, passwords, or passkeys. The widget is there to make the good options easy to offer.&lt;/p&gt;
&lt;h2 id=&#34;one-more-from-the-wild&#34; &gt;One more from the wild
&lt;span&gt;
    &lt;a href=&#34;#one-more-from-the-wild&#34;&gt;
        &lt;svg viewBox=&#34;0 0 28 23&#34; height=&#34;100%&#34; width=&#34;19&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;&lt;path d=&#34;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-miterlimit=&#34;10&#34; stroke-width=&#34;2&#34;/&gt;&lt;path d=&#34;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-miterlimit=&#34;10&#34; stroke-width=&#34;2&#34;/&gt;&lt;/svg&gt;
    &lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;&lt;p&gt;Screenshots are useful. This one needed motion — another live SpartanAuth integration, with a background animation I thought was too pretty not to include.&lt;/p&gt;
&lt;figure class=&#34;post-video&#34;&gt;
  &lt;video controls playsinline preload=&#34;metadata&#34;&gt;
    &lt;source src=&#34;https://blog.spartanauth.com/img/spartanauth-demo.mp4&#34; type=&#34;video/mp4&#34;&gt;
    Sorry — your browser does not support embedded video.
  &lt;/video&gt;&lt;figcaption&gt;Another live SpartanAuth integration — mostly here because the background animation is gorgeous.&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;If you have ever integrated auth the hard way, you know the invisible work: redirects, error states, &amp;ldquo;forgot password&amp;rdquo; loops, MFA handoffs, provider quirks. The goal here is that most of that complexity lives behind a small embed and a service that already knows how to do it.&lt;/p&gt;
&lt;h2 id=&#34;docs-skills-mcp-and-shipping-with-ai&#34; &gt;Docs, skills, MCP, and shipping with AI
&lt;span&gt;
    &lt;a href=&#34;#docs-skills-mcp-and-shipping-with-ai&#34;&gt;
        &lt;svg viewBox=&#34;0 0 28 23&#34; height=&#34;100%&#34; width=&#34;19&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;&lt;path d=&#34;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-miterlimit=&#34;10&#34; stroke-width=&#34;2&#34;/&gt;&lt;path d=&#34;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-miterlimit=&#34;10&#34; stroke-width=&#34;2&#34;/&gt;&lt;/svg&gt;
    &lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;&lt;p&gt;Something I did not fully expect when I started: people are not only reading docs — they are pointing coding agents at them.&lt;/p&gt;
&lt;p&gt;The docs live at &lt;a href=&#34;https://docs.spartanauth.com&#34;&gt;docs.spartanauth.com&lt;/a&gt;. Alongside the usual reference material, there are skills and guidance meant to help humans &lt;em&gt;and&lt;/em&gt; AI assistants wire SpartanAuth up without inventing a snowflake architecture every time.&lt;/p&gt;
&lt;p&gt;Next up is an &lt;strong&gt;MCP server&lt;/strong&gt; integration. That matters once an agent is past &amp;ldquo;read the docs&amp;rdquo; and into actually building. Instead of only generating code that &lt;em&gt;hopes&lt;/em&gt; it matches your tenant setup, an agent will be able to apply SpartanAuth settings and manage &lt;strong&gt;Sectors&lt;/strong&gt; as it implements — configure the thing it is integrating, not just describe it. It is not available yet, but it is on the way.&lt;/p&gt;
&lt;p&gt;That is a big deal in 2026. A lot of apps are getting scaffolded at unnatural speed. Auth is still one of the places where &amp;ldquo;move fast&amp;rdquo; turns into &amp;ldquo;accidentally store passwords wrong&amp;rdquo; or &amp;ldquo;ship a login page that only works on the author&amp;rsquo;s laptop.&amp;rdquo; If good docs, skills, and (soon) MCP tools make the secure, boring path the default path for an agent, I will take that win every day of the week.&lt;/p&gt;
&lt;div class=&#34;stat-row&#34;&gt;

&lt;figure class=&#34;stat-card stat-card--compact&#34;&gt;
  &lt;div class=&#34;stat-card-value&#34;&gt;Docs &amp;#43; skills&lt;/div&gt;
  &lt;figcaption class=&#34;stat-card-label&#34;&gt;Available now for humans and agents&lt;/figcaption&gt;&lt;/figure&gt;

&lt;figure class=&#34;stat-card stat-card--compact&#34;&gt;
  &lt;div class=&#34;stat-card-value&#34;&gt;MCP&lt;/div&gt;
  &lt;figcaption class=&#34;stat-card-label&#34;&gt;Coming soon — apply settings and manage Sectors&lt;/figcaption&gt;&lt;/figure&gt;


&lt;/div&gt;

&lt;h2 id=&#34;what-i-want-you-to-do-with-this&#34; &gt;What I want you to do with this
&lt;span&gt;
    &lt;a href=&#34;#what-i-want-you-to-do-with-this&#34;&gt;
        &lt;svg viewBox=&#34;0 0 28 23&#34; height=&#34;100%&#34; width=&#34;19&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;&lt;path d=&#34;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-miterlimit=&#34;10&#34; stroke-width=&#34;2&#34;/&gt;&lt;path d=&#34;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-miterlimit=&#34;10&#34; stroke-width=&#34;2&#34;/&gt;&lt;/svg&gt;
    &lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;&lt;p&gt;If you have been waiting for SpartanAuth to feel real: it is.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Browse the product: &lt;a href=&#34;https://www.spartanauth.com&#34;&gt;spartanauth.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Read / point your agent at the docs: &lt;a href=&#34;https://docs.spartanauth.com&#34;&gt;docs.spartanauth.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;If you want updates as more ships, &lt;a href=&#34;https://lc.spartanauth.com/q/waitlist-sa/start&#34;&gt;get on the list&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I will keep writing here the way I have been — practical notes, honest boundaries, fewer buzzwords than the category usually deserves. The difference is that now the screenshots are not mockups. They are front doors on software people already use.&lt;/p&gt;
&lt;aside class=&#34;waitlist-cta&#34; aria-label=&#34;SpartanAuth updates&#34;&gt;
  &lt;p class=&#34;waitlist-cta-kicker&#34;&gt;Stay in the loop&lt;/p&gt;
  &lt;p class=&#34;waitlist-cta-text&#34;&gt;
    Get occasional notes from me on authentication and SpartanAuth — plus early access as new things ship.
  &lt;/p&gt;
  &lt;p class=&#34;waitlist-cta-action&#34;&gt;
    &lt;a class=&#34;waitlist-cta-button&#34; href=&#34;https://lc.spartanauth.com/q/waitlist-sa/start&#34; rel=&#34;noopener&#34;&gt;Get updates&lt;/a&gt;
  &lt;/p&gt;
  &lt;p class=&#34;waitlist-cta-note&#34;&gt;Low volume. No spam. Unsubscribe anytime.&lt;/p&gt;
&lt;/aside&gt;</description>
    </item>
    
  </channel>
</rss>
