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.
For some reason, when running the app on windows, it needs to be ran as administrator or it cannot detect the device, this will be fixed in future. Till then run the app as admin.
PicoForge is a modern desktop application for configuring and managing Pico FIDO security keys. Built with Rust, Tauri, and Svelte, 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
Alpha Status: This application is currently under active development and in alpha 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 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 Svelte and shadcn-svelte
- Multi-Vendor Support - Preset configurations for YubiKey, Nitrokey, SoloKeys, and more
- Cross-Platform - Works on Windows, macOS, and Linux
To contribute to PicoForge, you'll need:
- Node.js - JavaScript/TypeScript runtime
- Deno - JavaScript/TypeScript runtime
- 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 picoforgedeno installdeno task tauri devdeno task tauri buildThe compiled binaries will be available in:
- Linux:
src-tauri/target/release/bundle/ - macOS:
src-tauri/target/release/bundle/dmg/ - Windows:
src-tauri/target/release/bundle/
-
AppImages are preferred way to use the applicatoion, just make sure you have pcsc daemon installed and running before starting the appimage.
-
Flatpaks are planned for future
BETAversions of the apps. -
Install PC/SC dependencies:
sudo apt install libpcsclite-dev pcscd- Start the PC/SC daemon:
sudo systemctl start pcscd
sudo systemctl enable pcscd-
App has not been tested by me on macos and I cannot debug for it ( as I do not have a mac ), if someone is ready to help me, just open an issue or message me on the discord server.
-
No additional setup required. PC/SC framework is built-in.
-
Run the app as
Administratoror it will not work correctly or fail to detect the device. -
Ensure Smart Card service is running:
Get-Service SCardSvr | Start-Service- 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
- VID/PID - Vendor and Product IDs (hex format)
- Product Name - Device name shown to host system
- Vendor Presets - Quick selection for common manufacturers
- GPIO Pin - Hardware pin for LED control
- Brightness - Intensity level (0-15)
- Driver Type - Hardware-specific LED drivers
- Options - Dimmable, steady mode, power cycle behavior
- Touch Timeout - User presence button timeout (seconds)
- Secp256k1 - Enable secp256k1 curve support
- Secure Boot - Firmware signature verification (
⚠️ experimental and WIP)
picoforge/
├── src/ # Svelte frontend
│ ├── lib/ # Reusable components & utilities
│ ├── routes/ # SvelteKit pages
│ ├── app.css # Global styles
│ └── app.html # HTML template
├── src-tauri/ # Rust backend
│ ├── src/ # Rust source code
│ │ └── lib.rs # Tauri commands & PC/SC logic
│ ├── icons/ # Application icons
│ ├── capabilities/ # Tauri permissions
│ ├── Cargo.toml # Rust dependencies
│ ├── tauri.conf.json # Tauri configuration
│ └── build.rs # Build script
├── static/ # Static assets
│ ├── build-configure-symbolic.svg
│ └── favicon.png
├── node_modules/ # Deno node compatibility modules
├── components.json # shadcn-svelte config
├── package.json # Node package manifest
├── deno.lock # Deno lock file
├── svelte.config.js # SvelteKit configuration
├── vite.config.js # Vite bundler config
├── tsconfig.json # TypeScript configuration
└── LICENSE # AGPL-3.0 license
Contributions are welcome (REALLY NEEDED, PLEASE HELP ME)! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow Rust and TypeScript best practices
- Use
deno fmtto format the frontend code - Write clear commit messages
- Update documentation for new features
- Test on multiple platforms when possible
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)
- Pico FIDO - The firmware this tool configures
- Tauri - Desktop application framework
- Svelte - Reactive UI framework
- shadcn-svelte - UI component library
- pcsc-rust - Smart card interface
- Discord: Join our Discord server for community support and interaction
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Warning
PicoForge is experimental software and still in the Alpha 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.
The secure boot feature can permanently lock devices if misconfigured. Always understand the implications before enabling security features.
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 (Yubico, Nitrokey, FSIJ, Raspberry Pi Foundation, and others). 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


