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
- 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.