Documentation

Welcome to the AuthGrid documentation. Here you’ll find guides for getting started, technical specifications, and advanced configuration options.

Getting Started

New to KeyForge? Start here:

  1. Hardware Requirements - What you need to build a KeyForge
  2. Building the Firmware - Compile from source
  3. Flashing Your Device - Initial setup and OTA updates
  4. First Use - Registering your first credential

Hardware

KeyForge is built on the Seeed XIAO ESP32-S3. This board provides:

FeatureSpecification
MCUESP32-S3 (dual-core Xtensa LX7, 240 MHz)
USBNative USB OTG
Flash8MB
TouchCapacitive touch capable GPIO
Form Factor21 x 17.5mm

Purchase the board from Seeed Studio or other electronics retailers.

Building the Firmware

Prerequisites

Clone and Build

git clone https://github.com/authgrid-io/keyforge
cd keyforge

# Development build
pio run -e seeed_xiao_esp32s3

# Secure build (recommended for production)
pio run -e seeed_xiao_esp32s3_secure

Flashing Your Device

Initial Setup (New Device)

cd tools/keyforge-flash
./keyforge-flash --setup

This flashes the bootloader, partition table, and firmware. On first boot, the device will:

  • Generate a random master seed
  • Burn security eFuses (Secure Boot, NVS encryption key)
  • Initialize the credential store

OTA Updates (Existing Device)

cd tools/keyforge-flash
./keyforge-flash

No disassembly required. Updates are verified and can roll back automatically if they fail.

First Use

  1. Plug in your KeyForge device
  2. Navigate to a WebAuthn-enabled site (e.g., webauthn.io)
  3. Click Register
  4. When prompted, set a PIN (4+ characters)
  5. Touch the capacitive pad on the device to approve
  6. Your credential is now stored on the device

Advanced Topics

  • Backup and Restore - Export your master seed for recovery
  • NVS Encryption - Hardware-backed data-at-rest encryption
  • Secure Boot - Firmware signature verification
  • SSH Authentication - Using KeyForge for SSH keys

API Reference

KeyForge implements the CTAP2 specification with the following commands:

CommandDescription
authenticatorGetInfoDevice capabilities and configuration
authenticatorMakeCredentialCreate a new credential
authenticatorGetAssertionAuthenticate with an existing credential
authenticatorGetNextAssertionIterate multiple credentials
authenticatorClientPINPIN management
authenticatorCredentialManagementList and delete credentials
authenticatorResetFactory reset

Need Help?

  • GitHub Issues - Bug reports and feature requests
  • GitHub Discussions - Community Q&A
  • Email - support@authgrid.io

Getting Started

Build your first KeyForge security key from scratch.

Learn More