OpenRFID Middleware — Multi-Reader Edge Gateway
Modular, high-performance .NET 8 / 10 LTS RFID edge middleware connecting fixed readers to REST APIs, MQTT brokers, & WebSockets.
Watch Video Walkthrough Before Using
OpenRFID Middleware Tutorial: Edge Gateway & ERP Integration
View Dedicated Video Page & Notes →Learn how to configure multi-vendor fixed reader drivers (Impinj, Zebra), tune sliding-window deduplication, and setup SQLite WAL offline buffers.
Project Overview & Architecture
Enterprise-grade, modular open-source RFID edge middleware engineered in .NET 8/10 LTS to bridge multi-vendor fixed RFID reader hardware with modern cloud and on-premise enterprise applications. Features plug-and-play driver plugins for LLRP, Impinj Octane, Zebra FX Series, Identium, Alien, TCP/UDP sockets, and Serial RS232/RS485. Includes high-throughput tag stream processing (1,000+ tags/sec), configurable sliding-window deduplication (5–15 seconds), shift-based unique tag rules, RSSI power thresholding, and EPC regex filters. Dispatches tag streams via dynamic Liquid/Handlebars templated HTTP payloads (GET, POST, PUT, PATCH), high-speed MQTT pub/sub topics, and real-time WebSockets with persistent offline SQLite WAL disk buffering for zero data loss during network outages.
4-Tier Edge Pipeline Architecture
Hardware Ingestion
Binds multi-vendor readers via LLRP, Octane, Zebra FX SDK, or TCP/Serial sockets to stream raw tag reads.
Stream Normalization
Applies sliding-window deduplication, RSSI signal masks, antenna grouping, and EPC regex validation.
SQLite WAL Queue
Stores validated tag transactions to local disk when network fails; handles tag storms up to 1,000+ tags/sec.
HTTP / MQTT Output
Formats dynamic Liquid/Handlebars JSON/XML envelopes and posts via HTTP Webhooks or publishes to MQTT topics.
Monorepo Packages (8)
NPM MonorepoBase reader abstraction interfaces, pipeline dispatcher, and event loop.
dotnet add package OpenRFID.Core LLRP protocol driver for Impinj Speedway, Zebra FX, and Alien fixed readers.
dotnet add package OpenRFID.Drivers.Llrp Native Zebra RFID3 API driver for FX9600, FX7500, and ATR700 overhead readers.
dotnet add package OpenRFID.Drivers.Zebra Impinj Octane SDK wrapper supporting R700, R420, and xArray spatial antennas.
dotnet add package OpenRFID.Drivers.Impinj Concurrent sliding-window tag deduplication engine with memory recycling.
dotnet add package OpenRFID.Filters.SlidingWindow Liquid/Handlebars templated HTTP POST/PUT webhook dispatcher with retry policies.
dotnet add package OpenRFID.Dispatchers.Http MQTT v5.0 telemetry client with topic partitioning and QoS level 1 guarantees.
dotnet add package OpenRFID.Dispatchers.Mqtt Encrypted SQLite Write-Ahead-Log offline ring buffer for fail-safe transactions.
dotnet add package OpenRFID.Storage.SqliteWal Feature Benchmark: OpenRFID Solution vs. Proprietary Alternatives
| Feature Capability | OpenRFID Solution (MIT) | Commercial Paid Solutions | Hardware Rig / Manual |
|---|---|---|---|
| Licensing Model | 100% Free & Open Source (MIT) | Commercial Tier ($2,500 - $10,000 / Site) | Vendor-locked firmware only |
| Reader Vendor Freedom | ✓ Impinj, Zebra, Alien, Identium, Hopeland | Often restricted to single vendor hardware | 100% proprietary firmware |
| Offline Resiliency | ✓ Embedded SQLite WAL Queue with Auto-Sync | Basic RAM buffer (lost on power loss) | Limited internal flash (drops on overflow) |
| Payload Customization | ✓ Dynamic Liquid/Handlebars JSON/XML Templates | Rigid fixed JSON schema | Fixed binary or raw string |
| Deployment Flexibility | ✓ Docker Container, Windows Service, Linux Daemon | Heavy Windows Server VM requirement | Embedded on-reader only |
CLI Arguments & Configuration Reference
| Parameter / Flag | Type | Default | Description & Action |
|---|---|---|---|
| --urls <url> | string | "http://0.0.0.0:5180" | Kestrel HTTP listening URL for REST API & Swagger UI. |
| --config <path> | filepath | "./config/appsettings.json" | Path to primary reader and dispatcher JSON config. |
| --dedup-window <sec> | integer | 5 | Sliding deduplication window duration in seconds. |
| --db-path <path> | filepath | "./data/queue.db" | SQLite WAL persistent offline buffer storage path. |
| --mqtt-host <url> | string | "mqtt://localhost:1883" | Target MQTT broker connection string. |
Code & Integration Blueprint
Copyable starter templates, CLI flags, and CI/CD pipelines:
Technical Specifications & Runtime Environment
| Target Architecture | C# 12 / .NET 8 & 10 LTS / ASP.NET Core • MIT Open Source License |
| Supported Protocols | REST API, WebSockets, MQTT, TCP Raw Sockets, Serial RS232 |
| Reader Hardware Support | Impinj Speedway R420/R700, Zebra FX9600/FX7500, Identium, Alien ALR-F800 |
| Throughput Capacity | 1,000+ tags/second concurrent sliding-window stream processing |
| Payload Templating | Liquid & Handlebars dynamic JSON, XML, Form-Data & CSV formatting |
| Offline Storage Engine | Encrypted SQLite Write-Ahead-Log (WAL) queue with auto-reconnect sync |
Key Features & Capabilities
- ✓ Unified Multi-Vendor Reader Driver Plugins (LLRP, Impinj Octane, Zebra FX, Identium, Alien)
- ✓ Intelligent Sliding-Window Deduplication (5–15s Debounce, Calendar Day, Shift Unique Rules)
- ✓ Dynamic Liquid & Handlebars HTTP Payload Templating (Custom JSON, XML, Form-Data, CSV)
- ✓ Persistent Offline SQLite WAL Disk Queue with Deterministic Resynchronization
- ✓ High-Speed MQTT Pub/Sub Telemetry Broker Bridge with Topic Partitioning
- ✓ Web-Based Operational Dashboard & Live WebSocket Tag Telemetry Console
- ✓ Full OpenAPI / Swagger REST Management API (http://localhost:5180/swagger)
- ✓ Ready-to-Deploy Docker & Docker Compose Containerized Setup
Related Hardware & Commercial Solutions
Explore compatible RFID readers, pre-built warehouse inventory software, and asset management systems developed by RFID Softwares:
Frequently Asked Questions
How does the sliding-window deduplication engine prevent duplicate ERP transactions? ↓
The middleware implements a concurrent high-performance sliding-window ring buffer. When a tag is read 50 times in 2 seconds under a portal antenna, the filter normalizes the burst into a single deterministic scan event, eliminating phantom transactions and duplicate stock journal bookings in your ERP.
Which fixed RFID reader hardware brands are supported out-of-the-box? ↓
OpenRFID Middleware provides native C# driver plugins for Impinj (Speedway R420, R700, xArray via Octane SDK / LLRP), Zebra (FX9600, FX7500 via RFID3), Identium, Alien ALR-F800, Hopeland, and generic raw TCP/UDP serial bridges.
How does SQLite WAL offline buffering prevent data loss during network drops? ↓
When backend cloud APIs or MQTT brokers become unreachable, the edge daemon instantly diverts incoming tag transactions to an encrypted local SQLite Write-Ahead-Log (WAL) queue. As soon as connectivity restores, an automated background worker flushes the backlog with deterministic SHA-256 idempotency.
Can I customize HTTP POST payloads using Liquid or Handlebars templates? ↓
Yes. OpenRFID Middleware features dynamic payload templating. You can define custom JSON, XML, Form-Data, or CSV body templates with variables like `{{Tag.Epc}}`, `{{Tag.Rssi}}`, `{{Tag.AntennaId}}`, and custom authorization headers.
Can OpenRFID Middleware trigger GPIO portal indicator lights and alarms? ↓
Yes. The middleware includes a GPIO controller service that triggers external 24V relay lights, buzzers, and automated conveyor diverters based on tag validation rules (e.g., green for authorized pallet, red for unauthorized transit).
How do I deploy OpenRFID Middleware on Docker or edge industrial PCs? ↓
You can deploy it via Docker Compose with a single command: `docker compose up -d`. The lightweight containerized ASP.NET Core image consumes < 65 MB RAM and runs smoothly on Raspberry Pi 4, industrial Intel NUCs, or Linux edge servers.
Application & SDK Preview

Tested Hardware Devices
Paid Customization & Free Help
We offer free community help on GitHub issues and discussions. If you need bespoke features, customized mobile apps, or dedicated on-site deployment, contact us for paid enterprise integration services.