Runtime reference
OpenWorker#
OpenWorker is a local-first desktop agent that drives 25-plus SaaS connectors alongside the shell and filesystem. Its stated output is finished work rather than a chat transcript, which makes it the least coding-shaped runtime in the matrix.
| Runtime id | openworker |
| Category | Generalist desktop worker |
| Vendor | Andrew Ng |
| Tier | Paid tier (Starter and up) |
| Upstream | github.com/andrewyng/openworker |
Where the data comes from#
ClawMetry reads these locations, in order, and never writes to any of them.
$COWORKER_STATE_DIR/coworker.db— sessions, workspaces and audit events$COWORKER_STATE_DIR/conversations/<sid>.jsonl— append-only message log- (default %APPDATA%\coworker on Windows, else ~/.config/coworker)
Format. SQLite index plus one JSONL message log per session; assistant messages carry usage and reasoning sidecars.
Environment variables#
| Variable | Effect |
|---|---|
COWORKER_STATE_DIR | OpenWorker's own state dir |
CLAWMETRY_OPENWORKER_STATE_DIR | ClawMetry-side override |
See Environment variables for the variables that apply to every runtime.
Tokens and cost#
Tokens. From the per-message usage sidecar, tagged with the model that produced it — so a session that switched models is priced per model and summed.
Cost. Always derived; OpenWorker writes no dollars anywhere.
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#
- The reviewer-token trap:
audit_eventsalso has token columns, but they meter the Auto-Approve reviewer, a separate and off-by-default LLM. Summing them into session cost reports a number that is both wrong and, by default, roughly zero. ClawMetry takes tokens only from the message sidecar and surfaces audit rows as approval events. coworker.dbholds the session index and the audit log in the same file as two unrelated tables.
Verify it is being read#
# Is this runtime detected, and would this install unlock it?
clawmetry runtimes --json | jq '.runtimes[] | select(.id=="openworker")'
# Why is it locked, if it is?
clawmetry runtimes --why openworker
# 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.