Skip to content

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 ​

bash
owt usage [--days N] [--json]

Options ​

OptionDefaultDescription
--days N30Window in days to count over
--json—Emit the counts as JSON instead of a table

Example ​

bash
$ owt usage
Usage (last 30d):
  worktrees started : 18
  native workflows  : 5
  control-plane launches : 42

Over a longer window:

bash
owt usage --days 90

JSON output for scripting:

bash
$ owt usage --json
{
  "days": 30,
  "counts": {
    "new": 18,
    "workflow": 5,
    "control_plane": 42
  }
}

What gets recorded ​

EventCounterRecorded when
control_planecontrol-plane launchesYou run owt with no subcommand
newworktrees startedA worktree is created with owt new
workflownative workflowsA 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 --workflow
  • owt db -- Database maintenance (purge old usage events)
  • The Control Plane -- the board whose launches are counted