Important
PicoForge is an independent, community-developed tool and is not affiliated with or endorsed by the official pico-fido project. This software does not share any code with the official closed-source pico-fido application.
Check application Installation Wiki for installation guide of the PicoForge app on your system.
PicoForge only supports v7.2 of the PICO FIDO series of firmwares. Support to v7.4 and above is WIP.
PicoForge is a modern desktop application for configuring and managing Pico FIDO security keys. Built with Rust and GPUI, it provides an intuitive interface for:
- Reading device information and firmware details
- Configuring USB VID/PID and product names
- Adjusting LED settings (GPIO, brightness, driver)
- Managing security features (secure boot, firmware locking) (WIP)
- Real-time system logging and diagnostics
- Support for multiple hardware variants and vendors
BETA Status: This application is currently under active development and in beta stage. Users should expect bugs and are encouraged to report them. The app has been tested on Linux and Windows 10 with the official Raspberry Pi Pico2 & ESP32-S3 and, currently supports Pico FIDO firmware version 7.2 only.
- Device Configuration - Customize USB identifiers, LED behavior, and hardware settings
- Security Management - Enable secure boot and firmware verification (experimental and WIP)
- Real-time Monitoring - View flash usage, connection status, and system logs
- Modern UI - Clean, responsive interface built with Rust and GPUI
- Multi-Vendor Support - Compatible with multiple hardware variants
- Cross-Platform - Works on Windows, macOS, and Linux
Check the official PicoForge Wiki for installation info of the application.
- Connect your smart card reader
- Insert your Pico FIDO device
- Launch PicoForge
- Click Refresh button at top right corner to detect your key
- Navigate through the sidebar to configure settings:
- Home - Device overview and quick actions
- Configuration - USB settings, LED options
- Security - Secure boot management (experimental)
- Logs - Real-time event monitoring
- About - Application information
To contribute to PicoForge, you'll need:
- Rust - System programming language (1.80+)
- PC/SC Middleware:
- Linux:
pcscd(usually pre-installed) - macOS: Built-in
- Windows: Built-in
- Linux:
git clone https://github.com/librekeys/picoforge.git
cd picoforgeTo run the application in development mode:
cargo runTo build for production:
cargo build --releaseThe compiled binary will be available in target/release/picoforge (Linux/macOS) or target/release/picoforge.exe (Windows).
Nix provides developers with a complete and consistent development environment.
You can use Nix to build and develop picoforge painlessly.
Follow the Installation Guide and NixOS Wiki to install Nix and enable Flakes.
You can build and run PicoForge with a single command:
nix run github:librekeys/picoforgeOr simply build it and link to the current directory:
nix build github:librekeys/picoforgeTip
You can use our binary cache to save build time by allowing Nix to set extra-substitutes.
Download the package definition:
curl -LO https://raw.githubusercontent.com/librekeys/picoforge/main/package.nixRun the following command in the directory containing package.nix:
nix-build -E 'with import <nixpkgs> {}; callPackage ./package.nix { }'The compiled binary will be available at: result/bin/picoforge
You can enter a developement environement with all the required dependencies.
nix develop github:librekeys/picoforgeYou can use the shell.nix file that is at the root of the repository by running:
nix-shellThen you can build from source and run the application with:
cargo runpicoforge/
βββ Cargo.toml # Rust dependencies and project metadata
βββ Cargo.lock # Rust dependency lock file
βββ Packager.toml # Configuration for cargo-packager
βββ src/ # Source code
β βββ main.rs # Application entry point
β βββ logging.rs # Logging infrastructure
β βββ error.rs # Global application error types
β βββ device/ # Device communication logic
β β βββ fido/ # FIDO implementation
β β βββ rescue/ # Rescue mode handling
β β βββ io.rs # IO Utilities
β β βββ mod.rs # Device module declaration
β β βββ types.rs # Device data types
β βββ ui/ # GPUI Frontend
β βββ components/ # Reusable UI components
β βββ views/ # View definitions
β βββ assets.rs # Asset loader
β βββ colors.rs # Color definitions
β βββ rootview.rs # Root view container
β βββ types.rs # UI-specific types
β βββ mod.rs # UI module declaration
βββ data/ # Application data
β βββ in.suyogtandel.picoforge.desktop # Linux desktop entry file
β βββ screenshots/ # Screenshots for documentation
βββ docs/ # Project documentation/wiki files
β βββ Building.md # Instructions for building from source
β βββ Home.md # Wiki home page
β βββ Installation.md # Installation guide
β βββ Troubleshooting.md # Troubleshooting common issues
βββ maintainers/ # Scripts and resources for package maintainers
β βββ scripts/ # Utility scripts for automating maintenance tasks
β βββ update.nix # Nix update script configuration
β βββ update.py # Update script implementation
βββ static/ # Static application assets
β βββ appIcons/ # App icons in various sizes and formats
β βββ icons/ # Internal SVG icons used by the GPUI frontend
βββ themes/ # Application themes
β βββ picoforge-zinc.json # Zinc theme configuration file
βββ flake.nix # Nix flake configuration
βββ flake.lock # Nix flake lock file
βββ default.nix # Nix package definition/shell
βββ shell.nix # Nix development shell
βββ picoforge.spec # RPM Spec file
βββ package.nix # Nix package definition
βββ ci.nix # CI configuration for cachix
βββ rustfmt.toml # Rust formatting configuration
βββ CREDITS.md # Credits
βββ LICENSE # License
Contributions are welcome (REALLY NEEDED, PLEASE HELP US)!
Please check the CONTRIBUTING.md file for the full contribution process and development guidelines.
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0-only).
See LICENSE for full details.
- Suyog Tandel (@lockedmutex)
- Fabrice Bellamy (@Lab-8916100448256)
- JetCookies (@jetcookies): Maintainer of the Nix package.
- Suyog Tandel (@lockedmutex): Maintainer of the RPM package and Fedora Copr repository.
- Matrix: Join our Matrix room
- Discord: Join our Discord server
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Warning
PicoForge is experimental software and still in the Beta stage! The app does contain bugs and is not secure by any means.
It does not support all the features exposed by the pico-fido firmware and pico-hsm.
Caution
USB VID/PID Notice: The vendor presets provided in this software include USB Vendor IDs (VID) and Product IDs (PID) that are the intellectual property of their respective owners. These identifiers are included for testing and educational purposes only. You are NOT authorized to distribute or commercially market devices using VID/PID combinations you do not own or license. Commercial distribution requires obtaining your own VID from the USB Implementers Forum (usb.org) and complying with all applicable trademark and certification requirements. Unauthorized use may violate USB-IF policies and intellectual property laws. The PicoForge developers assume no liability for misuse of USB identifiers.
Made with β€οΈ by the LibreKeys community
Copyright Β© 2026 Suyog Tandel




