docs(omo-codex): document session_start telemetry source
Spell out that omo_codex_daily_active now fires from two sources - install_completed (CLI installer) and session_start (Codex plugin SessionStart hook) - so readers understand DAU/WAU/MAU reflects real Codex usage and not just install events. Opt-out env vars are unchanged. - README.md (root + packages/omo-codex/): both reasons listed. - docs/legal/privacy-policy.md: discloses session_start as a second trigger for the same event, same opt-out posture. - docs/reference/cli.md: telemetry section now describes both PostHog streams (omo_daily_active vs omo_codex_daily_active) and both Codex reasons. - CHANGELOG.md: adds the plugin-runtime wiring under Unreleased.
This commit is contained in:
@@ -25,6 +25,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
- Codex harness adapter (`omo-codex`): one-command install via `bunx omo install --codex=yes` or the new `lazycodex` bin entry. Vendored Codex plugin namespace `omo` with rules, comment-checker, LSP, ultrawork, and ultragoal components. Plugin lands in `~/.codex/plugins/cache/code-yeongyu-codex-plugins/omo/` and is enabled in `~/.codex/config.toml`. Idempotent installer (re-running is safe).
|
||||
- Three new bin entries: `omo` (short alias) and `lazycodex` (auto-defaults `--codex=yes`). Existing `oh-my-opencode` and `oh-my-openagent` continue to work unchanged.
|
||||
- New PostHog telemetry stream `omo_codex_daily_active` distinguishing omo-codex installations from omo-opencode. Independent opt-out via `OMO_CODEX_DISABLE_POSTHOG=1` or `OMO_CODEX_SEND_ANONYMOUS_TELEMETRY=0`; global `OMO_DISABLE_POSTHOG` and `OMO_SEND_ANONYMOUS_TELEMETRY` still suppress both products.
|
||||
- omo-codex now reports true daily-active usage (DAU/WAU/MAU). A new Codex plugin component `telemetry` (`packages/omo-codex/plugin/components/telemetry/`) fires a single `omo_codex_daily_active` event with `reason: "session_start"` from every Codex `SessionStart` hook, with the same UTC-day deduplication, hashed installation identifier, and opt-out env vars as the install-time event. Identity constants stay byte-equivalent across the CLI installer and the plugin runtime via `packages/omo-codex/src/telemetry/cross-package-equivalence.test.ts`.
|
||||
- Triple-publish to npm: `oh-my-opencode`, `oh-my-openagent`, and the new `lazycodex` package with the same compiled CLI and four bin commands. See `docs/reference/lazycodex-npm-reservation.md` for the first-publish playbook.
|
||||
|
||||
### Changed
|
||||
|
||||
@@ -124,7 +124,7 @@ curl -s https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/refs/head
|
||||
|
||||
Anonymous telemetry is enabled by default to track active installations (DAU/WAU/MAU). A single event is sent at most once per UTC day per machine using a hashed installation identifier, never the raw hostname, and PostHog person profiles are not created. Disable with `OMO_SEND_ANONYMOUS_TELEMETRY=0` or `OMO_DISABLE_POSTHOG=1`. See [Privacy Policy](docs/legal/privacy-policy.md) and [Terms of Service](docs/legal/terms-of-service.md).
|
||||
|
||||
If you also use OpenAI Codex CLI, add the optional Codex adapter with `bunx omo install --codex=yes` or the shortcut `bunx lazycodex install`. Codex-only telemetry can be disabled with `OMO_CODEX_DISABLE_POSTHOG=1` or `OMO_CODEX_SEND_ANONYMOUS_TELEMETRY=0`.
|
||||
If you also use OpenAI Codex CLI, add the optional Codex adapter with `bunx omo install --codex=yes` or the shortcut `bunx lazycodex install`. The Codex adapter emits `omo_codex_daily_active` at most once per UTC day per machine from two sources - the installer (`install_completed`) and the Codex plugin runtime on every session start (`session_start`) - using the same hashed installation identifier and PostHog person-profile suppression as the main plugin. Codex-only telemetry can be disabled with `OMO_CODEX_DISABLE_POSTHOG=1` or `OMO_CODEX_SEND_ANONYMOUS_TELEMETRY=0`.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ We collect limited non-personal information needed to operate and improve the Se
|
||||
When anonymous telemetry is enabled, the Application may collect a single anonymous usage event:
|
||||
|
||||
- `omo_daily_active`, sent at most once per UTC day per machine when the plugin loads or when the `run` CLI is invoked, used to estimate daily, weekly, and monthly active installations
|
||||
- `omo_codex_daily_active`, sent at most once per UTC day per machine when the `omo-codex` adapter is installed or used, with the same opt-out posture as `omo_daily_active`
|
||||
- `omo_codex_daily_active`, sent at most once per UTC day per machine when the `omo-codex` adapter is installed (`reason: "install_completed"`) or when its Codex plugin runtime fires on a Codex `SessionStart` hook (`reason: "session_start"`), with the same opt-out posture as `omo_daily_active`
|
||||
- Anonymous machine metadata bundled with that event, such as package version, plugin name, runtime, OS family, locale, and timezone
|
||||
- A pseudonymous installation identifier derived from a one-way hash of the local hostname
|
||||
|
||||
|
||||
@@ -72,7 +72,12 @@ When using the `lazycodex` bin alias, `install` defaults to `--codex=yes`.
|
||||
|
||||
### Telemetry and opt-out
|
||||
|
||||
Anonymous telemetry uses PostHog with a hashed installation identifier.
|
||||
Anonymous telemetry uses PostHog with a hashed installation identifier. Two streams exist:
|
||||
|
||||
- `omo_daily_active`: fired by the main plugin and `oh-my-openagent run`.
|
||||
- `omo_codex_daily_active`: fired by `omo install --codex=yes` (`reason: "install_completed"`) and by the Codex plugin's `SessionStart` hook on every Codex session (`reason: "session_start"`). Both sources share the same UTC-day deduplication, so daily/weekly/monthly active counts reflect real Codex usage, not just install events.
|
||||
|
||||
Opt-out env vars:
|
||||
|
||||
- Global opt-out for oh-my-openagent and omo-codex: `OMO_SEND_ANONYMOUS_TELEMETRY=0` or `OMO_DISABLE_POSTHOG=1`
|
||||
- Codex-only opt-out for `omo_codex_daily_active`: `OMO_CODEX_SEND_ANONYMOUS_TELEMETRY=0` or `OMO_CODEX_DISABLE_POSTHOG=1`
|
||||
|
||||
@@ -35,14 +35,29 @@ The installer copies the built plugin into `~/.codex/plugins/cache/code-yeongyu-
|
||||
|
||||
## Telemetry
|
||||
|
||||
Anonymous telemetry uses the same PostHog project as oh-my-openagent but emits the distinct event `omo_codex_daily_active`. Opt out with:
|
||||
Anonymous telemetry uses the same PostHog project as oh-my-openagent but emits the distinct event `omo_codex_daily_active`. The event is sent at most once per UTC day per machine from two sources:
|
||||
|
||||
| Source | Reason | Trigger |
|
||||
|--------|--------|---------|
|
||||
| `install` | `install_completed` | `bunx omo install --codex=yes` finishes (handled by `src/cli/install-codex/install-codex.ts`) |
|
||||
| `plugin` | `session_start` | Codex plugin `SessionStart` hook fires (handled by `plugin/components/telemetry/`) |
|
||||
|
||||
Both sources share the same SHA256-hashed installation identifier (`sha256("omo-codex:" + hostname)`), suppress PostHog person profiles, and write the daily dedup state to `~/.local/share/omo-codex/posthog-activity.json`.
|
||||
|
||||
Opt out with:
|
||||
|
||||
```bash
|
||||
# Codex-only
|
||||
export OMO_CODEX_DISABLE_POSTHOG=1
|
||||
# or globally for every OMO product:
|
||||
export OMO_CODEX_SEND_ANONYMOUS_TELEMETRY=0
|
||||
|
||||
# Globally (also disables oh-my-openagent telemetry)
|
||||
export OMO_DISABLE_POSTHOG=1
|
||||
export OMO_SEND_ANONYMOUS_TELEMETRY=0
|
||||
```
|
||||
|
||||
The identity constants and opt-out behavior are pinned across both sources by `src/telemetry/cross-package-equivalence.test.ts`.
|
||||
|
||||
See `/Users/yeongyu/local-workspaces/omodex/docs/legal/privacy-policy.md` for the full disclosure.
|
||||
|
||||
## Provenance
|
||||
|
||||
Reference in New Issue
Block a user