zeroclaw-labs/zeroclaw · warning · DiagItem
no channel components tracked yet
Error message
no channel components tracked yet
What it means
A `zeroclaw doctor` warning from `check_daemon_state`: the daemon state file's `components` object contains no entry whose name starts with `channel:`. Doctor counts channel components by that prefix; zero means it cannot report any channel health — usually because no channels are enabled, the daemon just started, or channel components have not registered yet.
Source
Thrown at crates/zeroclaw-runtime/src/doctor/mod.rs:1706
.and_then(serde_json::Value::as_str)
.and_then(parse_rfc3339)
.map_or(i64::MAX, |dt| {
Utc::now().signed_duration_since(dt).num_seconds()
});
if status_ok && age <= CHANNEL_STALE_SECONDS {
items.push(DiagItem::ok(cat, format!("{name} fresh ({age}s ago)")));
} else {
stale += 1;
items.push(DiagItem::error(
cat,
format!("{name} stale (ok={status_ok}, age={age}s)"),
));
}
}
if channel_count == 0 {
items.push(DiagItem::warn(cat, "no channel components tracked yet"));
} else if stale > 0 {
items.push(DiagItem::warn(
cat,
format!("{channel_count} channels, {stale} stale"),
));
}
}
}
// ── Environment checks ───────────────────────────────────────────
fn check_environment(items: &mut Vec<DiagItem>) {
let cat = "environment";
// git
check_command_available("git", &["--version"], cat, items);
// Shell — Unix uses $SHELL, Windows uses %ComSpec% (path to cmd.exe).View on GitHub (pinned to 88bb9c8533)
Solutions
- Confirm at least one channel is enabled and its token is set (see the channel config warnings doctor reports).
- Give the daemon time to start the channels and write component status, then re-run `zeroclaw doctor`.
- If channels are enabled but never register, check daemon logs for channel startup errors.
Example fix
# before: no channel:* entries in the daemon state file # doctor: no channel components tracked yet # after journalctl --user -u zeroclaw -n 100 # confirm channels started systemctl --user restart zeroclaw && sleep 10 && zeroclaw doctor
Defensive patterns
Strategy: validation
Validate before calling
let has_channels = state
.get("components")
.and_then(|c| c.as_object())
.map(|c| c.keys().any(|k| k.starts_with("channel:")))
.unwrap_or(false); Prevention
- Enable and credential at least one channel before expecting channel health in the state file.
- Treat 'no channel components tracked yet' as a signal to check startup logs, not just to wait.
When it happens
Trigger: Running `zeroclaw doctor` when the daemon is running with zero enabled channels, or before any channel component has written its first status into the state file's `components` map.
Common situations: Doctor run against a fresh daemon before channels connect; all channels disabled in config; channels failing so early they never register components.
Related errors
- {channel_count} channels, {stale} stale
- scheduler component not tracked yet
- no channels configured — run `zeroclaw quickstart` to set on
- channels.telegram.{alias}.bot_token is unset but the channel
- channels.discord.{alias}.bot_token is unset but the channel
AI-assisted analysis of zeroclaw-labs/zeroclaw@88bb9c8533 (2026-08-23).
Data as JSON: /api/errors/f8c95e06bec8bd48.
Report an issue: GitHub.