From c7fced56eb3f5b0b96f4957caefc06b07ef65940 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 1 Sep 2026 04:15:51 +0000 Subject: [PATCH] Track TUI starts by app server mode (#41974) ## What changed Emit the `codex.tui.start` counter once per TUI launch with an `app_server_mode` label of `in_process`, `local_daemon`, or `remote`. Recording the metric during startup keeps reconnects from counting as additional launches. GitOrigin-RevId: 7527f319b95ae53f5278fa16120120a433a29ae4 --- codex-rs/tui/src/startup_orchestration.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/codex-rs/tui/src/startup_orchestration.rs b/codex-rs/tui/src/startup_orchestration.rs index 3bcb8fea87..0b5cbae183 100644 --- a/codex-rs/tui/src/startup_orchestration.rs +++ b/codex-rs/tui/src/startup_orchestration.rs @@ -400,6 +400,17 @@ pub(super) async fn run_main_inner( }; if let Some(metrics) = otel.as_ref().and_then(codex_otel::OtelProvider::metrics) { let _ = codex_otel::record_process_start_once(metrics, otel_originator.as_str()); + // Count the selected mode once per TUI launch, independently of reconnects. + let app_server_mode = match &app_server_target { + AppServerTarget::Embedded => "in_process", + AppServerTarget::LocalDaemon { .. } => "local_daemon", + AppServerTarget::Remote { .. } => "remote", + }; + let _ = metrics.counter( + "codex.tui.start", + /*inc*/ 1, + &[("app_server_mode", app_server_mode)], + ); let telemetry = codex_rollout::sqlite_telemetry_recorder(metrics.clone(), otel_originator.as_str()); let _ = codex_state::install_process_db_telemetry(telemetry);