ruvnet/ruflo · error

Device offline: ${deviceId}

Error message

Device offline: ${deviceId}

What it means

Diagnostic from the IoT cognitum plugin's coordinator lifecycle hooks: the device with the given deviceId has gone offline (missed health/heartbeat), transitioning it out of the active fleet. Purely informational — it does not indicate a plugin failure, only device availability state.

Source

Thrown at v3/@claude-flow/plugin-iot-cognitum/src/plugin.ts:69

      fleetRepository: new InMemoryFleetRepository(),
    }, {
      onDeviceRegistered: (device) => {
        context.logger.info(`Device registered: ${device.deviceId} at ${device.endpoint}`);
        context.eventBus.emit('iot:device-registered', device);
      },
      onTrustChange: (deviceId, oldLevel, newLevel) => {
        context.logger.info(`Trust change for ${deviceId}: ${oldLevel} -> ${newLevel}`);
        context.eventBus.emit('iot:trust-change', { deviceId, oldLevel, newLevel });
      },
    });

    context.services.register('iot:coordinator', this.coordinator);

    const healthIntervalMs = (config['healthIntervalMs'] as number) ?? 30_000;
    this.healthProbe = new HealthProbeWorker(this.coordinator, {
      intervalMs: healthIntervalMs,
      onDeviceOffline: (deviceId) => {
        context.logger.warn(`Device offline: ${deviceId}`);
        context.eventBus.emit('iot:device-offline', { deviceId });
      },
      onDeviceOnline: (deviceId) => {
        context.logger.info(`Device back online: ${deviceId}`);
        context.eventBus.emit('iot:device-online', { deviceId });
      },
    });
    this.healthProbe.start();

    const telemetryIntervalMs = (config['telemetryIntervalMs'] as number) ?? 60_000;
    this.telemetryIngest = new TelemetryIngestWorker(this.coordinator, {
      intervalMs: telemetryIntervalMs,
      onIngestionComplete: (deviceId, vectorCount) => {
        context.logger.debug(`Telemetry ingest for ${deviceId}: ${vectorCount} vectors`);
      },
      onIngestionError: (deviceId, error) => {
        context.logger.warn(`Telemetry ingest error for ${deviceId}: ${error.message}`);
      },

View on GitHub (pinned to fa13ee4ad6)

Solutions

  1. Check power/connectivity of the named device; commands will fail until it comes back online.
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at v3/@claude-flow/plugin-iot-cognitum/src/plugin.ts:69 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18). Data as JSON: /api/errors/84b2de45ebd38583. Report an issue: GitHub.