Skip to main content

Getting Started with Titan RFID

Titan is RAIN RFID tracking software for warehouse and industrial operations. It turns Impinj R700 reader tag reads into inventory, location, asset state, and movement history.

What Titan Does​

Input: Raw RFID tag reads (EPCs) from R700 readers via MQTT
Output: Inventory state, location tracking, asset state, movement history

Titan never writes tags. It attaches your own data to each EPC and tracks where tags are, when they moved, and what happened to them.

Core Features​

  • Tag Data - Spreadsheet-like interface: rows are EPCs, columns are whatever you want to track (SKU, Bin, Price, Status)
  • Location Tracking - Map reader antennas to physical zones; know where every tag is in real-time
  • History - Full audit trail of every tag's movements, data changes, and events
  • Multi-Reader - Coordinate fleets of readers; handle overlapping read zones; merge presence sessions

Two Editions, One Codebase​

Titan CloudTitan On-Prem
DeploymentMulti-tenant SaaS at hub.titanrfid.comSelf-hosted (3 Docker containers)
InfrastructureWonder-managedCustomer-managed
Reader ConnectionDirect to cloud over internet (TLS)LAN (readers reach broker on local network)
IdentityOIDC (Pocket ID) + local accountsLocal email/password (OIDC optional)
UpdatesAutomaticManual (./upgrade.sh)
LicenseYearly licenceYearly licence (online check-in, or signed offline licence)

Both editions share 95% of their code. The difference is deployment model, not feature set.

Architecture​

┌─────────────┐
│ R700 Reader │─── Tag reads (MQTT/TLS) ─────┐
└─────────────┘ │
▼
┌─────────────────┐
│ Mosquitto MQTT │
└────────┬────────┘
│
┌────────▼────────┐
│ titand │
│ (ingest, API) │
└────────┬────────┘
│
┌────────▼────────┐
│ Postgres DB │
└─────────────────┘
▲
│
Browser (React)

Data Flow:

  1. Reader publishes every tag read to titan/v1/{serial}/events (MQTT)
  2. titand subscribes, deduplicates, and collapses reads into presence sessions
  3. Sessions trigger processors: inventory, assets, location
  4. Results stored in Postgres; live updates pushed to browser via SSE
  5. Hub UI sends commands back to readers via titan/v1/{serial}/commands

How Readers Connect​

Titan Cloud (Internet-Connected)​

Readers connect out to mqtt.titanrfid.com:8883 (TLS). No inbound ports, no VPN, no edge box required.

Identity: Each reader gets a client certificate whose CN is the reader serial number (device identity). MQTT topics enforce per-reader isolation.

Provisioning Models:

  • Wonder-Shipped (current): Reader arrives configured; customer plugs it in and it appears in their account
  • BYO (Bring-Your-Own) (designed, not built): Customer installs CAP, claims reader via hub UI, pulls identity over internet

See Provisioning for details.

Titan On-Prem (LAN-Only)​

Readers connect to broker on same network (default: tcp://<server-lan-ip>:1883).

Identity: Per-reader MQTT username/password, generated at registration. titand writes broker passwd and acl files; broker reloads them automatically.

Configuration: Push via reader's REST API (https://<reader-ip>/api/v1/mqtt). On-prem has bidirectional network reach.

R700 CAP: Why It's Needed​

Stock R700 firmware can publish MQTT but cannot subscribe. That means:

  • Tag reads reach Titan automatically
  • Hub Start/Stop buttons do nothing (no path from cloud to reader)

CAP (Custom Application Program) is the subscriber. It runs on the reader, listens for commands on titan/v1/{serial}/commands, and applies them via the reader's local REST API.

CAP 0.1.6.0 Status (current): Tested end to end on a lab reader; not yet deployed at a customer site. Requires identity in /cust/rw_dir/ (ca.crt, client.crt, client.key, titan.json).

See CAP Overview for installation and operations.

What You Can Do Without CAP​

  • Real-time tag reads
  • Location tracking, inventory, assets
  • Tag data editing, CSV import, history

Requires CAP (or manual reader UI):

  • Hub Start/Stop buttons (reader must be started manually via reader's own web UI without CAP)
  • Remote configuration push

Stock MQTT is publish-only. CAP unlocks commands.

Typical Deployment​

For a warehouse with 3 readers:

  1. Mount readers - Receiving, goods-in, goods-out (integrator or customer)
  2. Power readers - PoE (switch must support 802.3at or 802.3bt)
  3. Install CAP (if using commands) - Titan Cloud requires CAP for Start/Stop; On-Prem can push config via REST
  4. Provision identity:
    • Cloud: Wonder-shipped (arrives configured) or BYO claim-and-pull (when implemented)
    • On-Prem: Register via hub UI → titand pushes config to reader via REST
  5. Map antennas to zones - Goods In 1 Antenna 1 = "Receiving", etc.
  6. Import tag data - CSV with epc,name,SKU,... columns
  7. Start readers - Via hub UI (if CAP installed) or reader's web UI (stock firmware)

Reads begin appearing within seconds. Location updates in real-time as tags move between zones.

Next Steps​