From 456deb2b110e12cc09dd1953f52a44f1441e19f4 Mon Sep 17 00:00:00 2001 From: archandatta <35818003+archandatta@users.noreply.github.com> Date: Fri, 25 Sep 2026 14:04:31 +0000 Subject: [PATCH] Describe OTLP destinations as organization-scoped Co-Authored-By: Claude Opus 5.5 --- README.md | 4 ++-- cmd/telemetry_destinations.go | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index dd0968c4..9641813d 100644 --- a/README.md +++ b/README.md @@ -763,7 +763,7 @@ Export is bound at session creation, so it is available on `browsers create` and #### Telemetry destinations -Destinations are the OTLP/HTTP endpoints sessions export to, managed per project. +Destinations are the OTLP/HTTP endpoints sessions export to. They belong to the organization, so sessions in any project can export to them. Creating, updating, or deleting one requires organization-scoped authentication; a project-scoped API key can list, get, and select destinations but not change them. - `kernel telemetry destinations list` - List OTLP destinations - `--page ` / `--per-page ` - Page number (1-based) and items per page (default 20) @@ -772,7 +772,7 @@ Destinations are the OTLP/HTTP endpoints sessions export to, managed per project - `kernel telemetry destinations get ` - Get an OTLP destination - `kernel telemetry destinations create --name --endpoint ` - Create an OTLP destination - `--endpoint ` - Base OTLP/HTTP endpoint without a signal path: pass `https://api.honeycomb.io`, not `https://api.honeycomb.io/v1/logs` (required) - - `--name ` - Destination name, unique within the project (required) + - `--name ` - Destination name, unique within the organization (required) - `--description ` - Optional description - `--header NAME=VALUE` - Header sent with each export request, typically an ingestion key (repeatable). Values are encrypted at rest and always returned redacted, so only header names are shown - `kernel telemetry destinations update ` - Update an OTLP destination. Sessions already exporting pick up the new values without restarting, which makes this the way to rotate credentials without interrupting export diff --git a/cmd/telemetry_destinations.go b/cmd/telemetry_destinations.go index 452c3690..096393eb 100644 --- a/cmd/telemetry_destinations.go +++ b/cmd/telemetry_destinations.go @@ -413,7 +413,7 @@ var telemetryDestinationsGetCmd = &cobra.Command{ var telemetryDestinationsCreateCmd = &cobra.Command{ Use: "create --name --endpoint ", Short: "Create an OTLP destination", - Long: "Create an OTLP export destination. The name must be unique within the project.\n\n" + + Long: "Create an OTLP export destination. The name must be unique within the organization.\n\n" + "--endpoint takes the collector's base endpoint without a signal path: pass https://api.honeycomb.io " + "rather than https://api.honeycomb.io/v1/logs, since Kernel appends the signal path itself. " + "Header values are encrypted at rest and always returned redacted.", @@ -451,7 +451,7 @@ func init() { addJSONOutputFlag(telemetryDestinationsGetCmd) addJSONOutputFlag(telemetryDestinationsCreateCmd) - telemetryDestinationsCreateCmd.Flags().String("name", "", "Destination name, unique within the project (required)") + telemetryDestinationsCreateCmd.Flags().String("name", "", "Destination name, unique within the organization (required)") _ = telemetryDestinationsCreateCmd.MarkFlagRequired("name") telemetryDestinationsCreateCmd.Flags().String("endpoint", "", "Base OTLP/HTTP endpoint of the collector, without a signal path (required)") _ = telemetryDestinationsCreateCmd.MarkFlagRequired("endpoint") @@ -459,7 +459,7 @@ func init() { telemetryDestinationsCreateCmd.Flags().StringArray("header", nil, "Header sent with each export request as NAME=VALUE, typically an ingestion key (repeatable)") addJSONOutputFlag(telemetryDestinationsUpdateCmd) - telemetryDestinationsUpdateCmd.Flags().String("name", "", "New destination name, unique within the project") + telemetryDestinationsUpdateCmd.Flags().String("name", "", "New destination name, unique within the organization") telemetryDestinationsUpdateCmd.Flags().String("endpoint", "", "New base OTLP/HTTP endpoint, without a signal path") telemetryDestinationsUpdateCmd.Flags().String("description", "", "New description; pass an empty string to clear it") telemetryDestinationsUpdateCmd.Flags().StringArray("header", nil, "Header to add or replace as NAME=VALUE (repeatable). Other stored headers are left as they are")