CClawMetryDocs

Runtimes

Chat channels#

An OpenClaw-family agent can be reachable from a lot of places at once. Each channel writes its own transcript directory, and ClawMetry reads all of them into the same session and event model as everything else — so a Telegram conversation and a terminal session sit side by side in Conversations, with the same cost accounting.

Supported channels#

All 22 adapters are free; there is no per-adapter gate.

TelegramSignalWhatsAppDiscord
SlackIRCiMessageWebChat
Google ChatMicrosoft TeamsBlueBubblesMatrix
MattermostLINENostrTwitch
FeishuZaloTlonSynology Chat
Nextcloud TalkClickClack

Where the data comes from#

One directory per adapter under the workspace root:

text
~/.openclaw/telegram/*.jsonl
~/.openclaw/signal/*.jsonl
~/.openclaw/whatsapp/*.jsonl
~/.openclaw/discord/*.jsonl
…

The daemon walks each directory it finds and ingests the transcripts. Files that are adapter bookkeeping rather than conversation — offset trackers, schema manifests — are skipped by name, so a JSON-object-per-file layout does not turn into noise in the event table.

The concurrent-channel cap#

The channels axis is capacity-scoped: every adapter is free, but the number you may run concurrently is what the tier bounds.

TierConcurrent channels
OSS / Free3
Starter and aboveUnlimited
bash
clawmetry channels                # list adapters and the current cap
clawmetry channels --json         # {tier, grace, enforced, channel_limit, channels[]}
clawmetry channels --why 8        # what tier 8 concurrent channels would need

Note that --why takes a count, not an adapter id — because the constraint is capacity, not which adapter you picked.

What you see per channel#

The Conversations tab groups by channel and thread. Per channel you get:

  • Message volume and thread count over time
  • Delivery health — whether messages are actually getting through
  • Per-thread transcripts with the same tool-call and cost detail as any session
  • Which agent handled which conversation

The API surface mirrors this:

bash
curl -s localhost:8900/api/channels/status | jq
curl -s localhost:8900/api/channels/telegram/threads | jq '.threads[:5]'
curl -s localhost:8900/api/channel-delivery-health | jq

Adding a channel directory#

If your agent writes a channel transcript directory ClawMetry does not know about, the daemon needs its directory name added to the channel list — that is the only wiring required, and it is picked up on the next cycle. Open an issue with the directory name and a sample line.

Cookie preferences