Runtime reference
DeepSeek Harness#
DeepSeek Harness (dsh) keeps everything under one home and compresses its session logs with Zstandard by default — which makes it the one runtime where reading real data may need an optional decoder.
| Runtime id | deepseek_harness |
| Category | Agent harness |
| Vendor | DeepSeek |
| Tier | Paid tier (Starter and up) |
| Upstream | github.com/deepseek-ai/deepseek-harness |
Where the data comes from#
ClawMetry reads these locations, in order, and never writes to any of them.
$DSH_HOME/sessions/--<project-key>--/<encoded-session-id>/session.jsonl[.zstd]$DSH_HOME/sessions/_no-cwd/<encoded-session-id>/session.jsonl[.zstd]
Format. A header line followed by typed events: user/message, assistant/message, tool/call, tool/result, turn/start, turn/end, session/title.
Environment variables#
| Variable | Effect |
|---|---|
DSH_HOME | home override (default ~/.dsh) |
See Environment variables for the variables that apply to every runtime.
Tokens and cost#
Tokens. Inline on each assistant message: input, output, cache read and reasoning tokens, with the provider and model.
Cost. Derived from the inline token split.
Why this section exists
Runtimes differ enormously in what they persist. Rather than showing a plausible number everywhere, ClawMetry reports what the store actually contains and marks the rest unknown. A cost of $0.00 and a cost of unknown mean different things, and the dashboard keeps them different.
Things worth knowing#
- Zstandard is the default encoding and Python does not ship a decoder. ClawMetry treats
zstandardas a detection-gated lazy dependency: it is only installed after real compressed dsh data is found, and until then compressed logs are skipped and the status is reported honestly. - The format is pinned at version 0 and upstream promises breaking changes, so any unknown header version is skipped rather than mis-parsed.
Verify it is being read#
# Is this runtime detected, and would this install unlock it?
clawmetry runtimes --json | jq '.runtimes[] | select(.id=="deepseek_harness")'
# Why is it locked, if it is?
clawmetry runtimes --why deepseek_harness
# Any sessions ingested yet?
curl -s 'http://localhost:8900/api/local/sessions?limit=5' \
| jq '.rows[] | {session_id, agent_id, events, cost_usd}'If detection succeeds but no sessions appear, work through Troubleshooting — the usual causes are a relocated data directory (set the override above), a session limit that is hiding older runs, or a runtime that simply has not written anything yet.