The usage command prints a small set of local-only counters: how many times you launched the Control Plane, how many worktrees you started, and how many native plan-first workflows you ran. It is a keep-or-archive gauge for your own use -- nothing leaves the machine.
The counts are backed by a usage_events table in Open Orchestrator's local SQLite database. There is no telemetry, no network call, and no identifier of any kind.
Usage
owt usage [--days N] [--json]Options
| Option | Default | Description |
|---|---|---|
--days N | 30 | Window in days to count over |
--json | — | Emit the counts as JSON instead of a table |
Example
$ owt usage
Usage (last 30d):
worktrees started : 18
native workflows : 5
control-plane launches : 42Over a longer window:
owt usage --days 90JSON output for scripting:
$ owt usage --json
{
"days": 30,
"counts": {
"new": 18,
"workflow": 5,
"control_plane": 42
}
}What gets recorded
| Event | Counter | Recorded when |
|---|---|---|
control_plane | control-plane launches | You run owt with no subcommand |
new | worktrees started | A worktree is created with owt new |
workflow | native workflows | A worktree is created with owt new --workflow |
owt <subcommand> invocations never count toward "control-plane launches" -- only the no-subcommand launch path records that event, which keeps the metric honest.
Recording is failure-isolated: it never blocks a launch or a worktree creation.
Pruning
Usage events are transient rows. owt db purge removes old usage events (and peer messages) to keep the database compact.
See Also
owt new-- Create worktrees, including--workflowowt db-- Database maintenance (purge old usage events)- The Control Plane -- the board whose launches are counted