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);