Your process data, device credentials, and control systems are protected end-to-end — from the Pi on your floor to the cloud dashboard in your browser.
Firebase Authentication with email/password and Google OAuth. Role-based access control (owner, editor, viewer) with per-device permissions and team invites.
All data is encrypted in transit via TLS and at rest in Firebase RTDB and Firestore. Per-user data isolation enforced by Firebase Security Rules — no shared data paths.
Pi devices connect to the cloud via Tailscale VPN mesh tunnels — no open ports, no exposed SSH. Device management traffic never touches the public internet.
Data stored on Google Cloud infrastructure with SOC 2 compliance. Stripe handles all payment processing — LoopString never stores card data.
Each Raspberry Pi connects to your Tailscale network automatically during provisioning. Management traffic — flow deployments, OTA updates, remote shell — routes through the encrypted WireGuard tunnel, never over the open internet.
Where every LoopString component sits in the standard ISA-95 / IEC 62443 control hierarchy. The load-bearing safety gate is the Pi-side command-path RBAC at L1 — every cloud-issued actuator command is enforced against per-actuator bounds (maxOnTimeMs, maxDutyCycle, faultBehavior) before it can touch the L0 hardware. For the full cross-level conduit with auth checkpoints, see the diagram below.
| Level | Layer | LoopString components | RBAC / enforcement |
|---|---|---|---|
| L0 | Physical process | Sensors (temp, RH, CO₂, flow, current, distance, color, vibration), actuators (relays, valves, dose pumps, heaters, fans, motors, linear actuators). | Physical-access trust boundary. Manual override docs (per actuator class) document the 30-second technician procedure for when cloud is unreachable. |
| L1 | Local control | Node-RED on the Pi: PID loops, hysteresis controllers, scheduled automation, anomaly detection, per-channel actuator command handlers. | Pi command-path RBAC checkpoint — the load-bearing safety gate. Per-channel bounds enforcement (maxOnTimeMs / maxDutyCycle / faultBehavior) runs here on every cloud-issued command. |
| L2 | Supervisory control (HMI/SCADA) | Edge-WS HTTP API on the Pi + React dashboard. Operator actions: acknowledge alerts, change setpoints, toggle actuators, view rooms. | Firebase Auth (per-user identity) + role-based UI gating (owner / editor / viewer / public share). |
| L3 | MES / Site operations | Recipe execution, schedule orchestration, compliance reporting (HACCP / FDA / USDA exports), duty-cycle statistics, alert escalation chains. | Per-device team-membership ACL; recipe owner permissions; compliance-report signer attribution. |
| DMZ | IT/OT boundary | Tailscale mesh (WireGuard tunnel). Cross-level conduit for cloud↔Pi traffic — no open inbound ports on the Pi. | WireGuard per-device identity key issued at provisioning. Tunnel termination is the cross-level firewall. |
| L4 | Site IT (Firebase RTDB) | Real-time command paths, per-device meta (online status, agentVersion, ownerUid), alert state, snapshot warm-start hydration. | Firebase Security Rules — `auth.token.deviceId == $deviceId` writers; `meta.ownerUid == auth.uid` readers. |
| L5 | Enterprise (Firestore + Cloud Functions) | Parts library, device registry, alert configs, audit trail, Stripe billing, OTA queue, Firebase Auth identity provider. | Firestore Security Rules per collection; Cloud Function service-account auth via Firebase Admin SDK. |
Every command that crosses a level boundary passes a named auth checkpoint. The most important is the Pi command-path safety gate at L1 — even if everything upstream is compromised, an out-of-bounds command (over duty cycle, over time, malformed) is rejected and audit-logged before the relay state changes.
Operator-issued cloud commands flow L4 (RTDB) → L1 (Pi firebase-on listener) via the authenticated Pi-side subscription — they don't loop through L2 sequentially. The dashboard at L2 is the HMI/SCADA view; the safety enforcement is the Pi-side gate at L1. This is by design — defense-in-depth lives at the lowest authoritative level, not in a chain of upstream relays.
Cloud-issued actuator commands traverse the safety gate at L1 (highlighted)
Invite team members with owner, editor, or viewer roles, scoped per device. Owners control device settings and billing. Editors deploy flows and adjust setpoints. Viewers have read-only access to dashboards and analytics — perfect for inspectors, auditors, or external stakeholders. For one-off sharing without an account, use a public dashboard share link.
Every role change, deploy, setpoint update, and acknowledgement is captured in the per-device activity log — meets the recording requirements for HACCP, FDA, USDA inspection. For compliance regimes requiring an independent tamper-evident audit store, see Audit trail — current limits and roadmap below.
LoopString writes audit entries for every actuator command (bounds enforcement, rejections), role change, flow deploy, setpoint change, alert acknowledgement, and recipe execution. These land in Firestore under users/{uid}/devices/{deviceId}/activityLog,alertEvents, and complianceReports.
The audit log currently lives in the same Firebase trust domain as the controlled system. A determined cloud-side attacker with project-admin credentials could rewrite history. For regulated industries that require an independent tamper-evident audit store (HACCP recall-evidence, 21 CFR Part 11, certain SOC 2 controls), this is a known gap.
Roadmap: independent audit store — write-only mirror to Google Cloud Storage or BigQuery hosted in a separate billing project with separate project-admin keys — is planned. Email security@loopstring.io if your compliance regime needs this before public rollout.
Firebase RTDB and Firestore run on Google Cloud infrastructure, which maintains SOC 2 Type II compliance and independent security audits.
All payment processing is handled by Stripe, a PCI DSS Level 1 certified provider. LoopString never stores, processes, or transmits cardholder data.
Firebase Security Rules enforce strict per-user data boundaries. No user can access another user's devices, sensor data, or configurations.
Start with a single device and scale to a fleet — the same security model applies throughout.