Skip to main content

Manage CDB EdgeCompute apps

The application management page provides access to all settings and runtime data for a deployed CDB EdgeCompute application in one place.

To open the management page:

  1. In the CDB Technical Web Portal, navigate to CDB EdgeCompute and select either HTTP Applications or CDN Applications.

  2. On the Applications page, click the three-dot icon next to the application and select Manage.

HTTP Applications list with the three-dot menu open showing Stop, Manage, and Delete options
CDB EdgeCompute application management page showing the Save changes and Actions buttons and the Metrics, Logs, Response headers, Environment variables, Secrets, and Edge Storage tabs

The following tabs are available on the management page:

  • Metrics: response status counts and runtime duration charts.
  • Logs: enable log collection and filter log entries.
  • Response headers: add HTTP headers to every application response.
  • Environment variables: define configuration values the application reads at runtime.
  • Secrets: link encrypted secrets from Secrets Manager to the application.
  • Edge Storage: link key-value stores to the application.

The table below describes when to use each configuration option:

FeatureUse for
Response headersHTTP headers added to every response — CORS, cache control, security headers
Environment variablesConfiguration values available to the application at runtime, up to 64 KB each
SecretsAPI keys, credentials, and other sensitive values encrypted at rest
Edge StorageShared mutable key-value data the application reads at runtime
DictionaryParameters over 64 KB and read-only edge node metadata — accessed from application code

Application lifecycle

Use the Actions button in the page header to control the application lifecycle — stop or restart it, deploy a new binary, save its configuration as a reusable template, or delete it entirely.

  • Stop — pause the application. Stopped applications don't process requests.
  • Start — resume a stopped application.
  • Edit application — update the application name or description.
  • Update binary — upload a new compiled Wasm binary.
  • Create template — save the current configuration as a reusable template.
  • Delete — permanently remove the application.
Application management page with the Actions menu open showing Stop, Edit application, Update binary, Create template, and Delete

An application may also stop automatically if payment for the product fails. In that case, it can't be restarted until payment is completed.

Metrics

The Metrics tab shows two charts: Response Status groups completed requests by HTTP status code, and Runtime Duration (ms) shows execution time per request in milliseconds. Use the time-range dropdown and the interval control in the chart header to adjust the view.

Logs

Logging is disabled by default. After enabling, the application records logs for 30 minutes, then stops automatically.

To enable logging:

  1. Select the Logs tab.

  2. Turn on the Enable logging toggle.

Logs tab with the Enable logging toggle turned on and Minutes remaining showing 30

The remaining logging time appears next to the toggle as Minutes remaining: N. To extend logging, turn the toggle off and on again.

Log entries appear in the table with the following columns:

  • Client IP address — IP of the client that sent the request.
  • Timestamp (UTC) — time the request was received.
  • Edge name — identifier of the edge node that handled the request.
  • Request ID — unique identifier assigned to the request.
  • Logs — application log output for that request.

Use the text search field above the table to filter by log content, or select a date range. The Refresh rate dropdown controls how often the table updates — it defaults to 10 seconds when logging is active.

Application configuration

The Response headers, Environment variables, Secrets, and Edge Storage tabs each control a different aspect of how the application receives configuration and accesses external data at runtime. Click Save changes to apply any edits. The dictionary is a separate read-only data source that the application accesses directly from code.

Response headers

Use response headers to add CORS, cache-control, security, or custom headers to every application response.

Response headers tab with an Access-Control-Allow-Origin header set to https://example.com

To add a header, click Add response header, enter the header name in the Key field and the value in the Value field, then click Save changes.

Environment variables

Environment variables pass configuration values to the application at runtime. Each variable can store up to 64 KB of data; for larger values, define the parameter here and read it from code through the dictionary using the same key name.

Environment variables tab with three variables configured showing key-value pairs

To add a variable, click Add environment variable, enter the variable name in the Key field and its value in the Value field, then click Save changes.

Access environment variables in code using the JavaScript SDK or standard Rust std::env::var("KEY_NAME").

Secrets

Use environment variables for ordinary configuration values. When a value is sensitive — an API key, access token, or password — store it as a secret instead.

Secrets let an application access sensitive values without storing them directly in its configuration. Each secret is stored in Secrets Manager and linked to the application under a local key name that the code uses to retrieve the value at runtime.

Secrets tab with ACCESS_KEY linked to the S3_ACCESS_TOKEN_BINARY_DUMP secret from Secrets Manager

To link a secret:

  1. Click Add secret.

  2. In the Key field, enter the name the application will use to reference the secret.

  3. In the second field, select a secret from Secrets Manager. To create a new secret first, select Add secret in the dropdown.

  4. Click Save changes.

Access the secret in code using secret::get("KEY_NAME") in the Rust SDK, or getSecret in the JavaScript SDK.

Edge Storage

Edge Storage provides a shared key-value store that applications can read and update at runtime. Link a store under a local key name, and the code uses that name to open and query it.

Edge Storage tab with BLACKLIST linked to the KNOWN_BAD_IP_ADDRESSES store

To link a store:

  1. Click Add Edge Storage.

  2. In the Key field, enter the name the application will use to open the store.

  3. In the second field, select a store from Edge Storage. To create a new store first, select Add Edge Storage in the dropdown.

  4. Click Save changes.

Access the store in code using Store::open("KEY_NAME") in the Rust SDK, or open in the JavaScript SDK.

Dictionary

The dictionary gives application code read-only access to edge node metadata that CDB EdgeCompute populates automatically on every node, and to application parameters that exceed the 64 KB environment variable limit.

Edge node metadata

CDB EdgeCompute automatically populates the following keys on every edge node. These values reflect the physical node handling each request:

KeyDescription
hostnameHostname of the edge node
envDeployment environment: prod or preprod
roleNode role: edge or shield
regionGeographic region of the edge node: africa, asia, au, cis, eu, latam, me, na. Additional values may be returned for reseller networks.
countryFull name of the country where the node is located
country2charISO 3166-1 alpha-2 country code
cityCity where the node is located
dcPoint of Presence (PoP) identifier
ipv4_addr_ipIPv4 address of the edge node
ipv6_addr_ipIPv6 address of the edge node
ipv6_enabledWhether IPv6 is enabled on the node: true or false

Built-in keys take priority over application parameters with the same name. To avoid unexpected behavior, don't use built-in key names as environment variable names.

Large application parameters

Standard environment variable access is limited to 64 KB per value. For parameters that exceed this limit, define them on the Environment variables tab and read them through the dictionary using the same key name.

Read dictionary values in code

In Rust, use the dictionary module:

use edgecompute::dictionary;

if let Some(value) = dictionary::get("country") {
    // use value
}

In JavaScript, dictionary values are exposed through getEnv() from the edgecompute::env module:

import { getEnv } from 'edgecompute::env';

const country = getEnv('country');

All management operations use the https://api.cdb-staging.cdn.orange.com/edgecompute/v1/apps/{id} endpoint, where id is the numeric application identifier returned by GET /docs/edgecompute/v1/apps.

All requests authenticate with an API token. Set it as an environment variable before running the examples:

export GCORE_API_KEY="{YOUR_API_KEY}"

Application lifecycle

To retrieve the current application state, including its configuration fields and binary ID:

curl -X GET "https://api.cdb-staging.cdn.orange.com/edgecompute/v1/apps/APP_ID" \
  -H "Authorization: APIKey $GCORE_API_KEY"

The response includes all fields needed for subsequent PUT requests: id, binary, name, status, rsp_headers, env, secrets, and stores.

To stop the application, send a PUT request with "status": 0. To start it again, use "status": 1. The PUT body must include all current field values — use the GET response as the base and update only the fields that change.

curl -X PUT "https://api.cdb-staging.cdn.orange.com/edgecompute/v1/apps/APP_ID" \
  -H "Authorization: APIKey $GCORE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "id": APP_ID,
    "binary": BINARY_ID,
    "name": "app-name",
    "status": 0
  }'

To delete the application permanently:

curl -X DELETE "https://api.cdb-staging.cdn.orange.com/edgecompute/v1/apps/APP_ID" \
  -H "Authorization: APIKey $GCORE_API_KEY"

Metrics

Response Status and Runtime Duration are exposed through separate endpoints. Response Status groups completed requests by HTTP status code; Runtime Duration shows execution time per request in milliseconds. Both accept the same time-range parameters.

# Response status counts
curl "https://api.cdb-staging.cdn.orange.com/edgecompute/v1/stats/calls?from=2026-06-17T00:00:00Z&to=2026-06-17T23:59:59Z&step=3600&id=APP_ID" \
  -H "Authorization: APIKey $GCORE_API_KEY"

# Runtime duration
curl "https://api.cdb-staging.cdn.orange.com/edgecompute/v1/stats/app_duration?from=2026-06-17T00:00:00Z&to=2026-06-17T23:59:59Z&step=3600&id=APP_ID" \
  -H "Authorization: APIKey $GCORE_API_KEY"

The step parameter specifies the aggregation interval in seconds. The from and to parameters use ISO 8601 UTC format.

Logs

Logging is disabled by default and runs for 30 minutes after being enabled, then turns off automatically. Enable it by setting "debug": true in a PUT request.

curl -X PUT "https://api.cdb-staging.cdn.orange.com/edgecompute/v1/apps/APP_ID" \
  -H "Authorization: APIKey $GCORE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "id": APP_ID,
    "binary": BINARY_ID,
    "name": "app-name",
    "status": 1,
    "debug": true
  }'

The response includes a debug_until field with the UTC timestamp when logging will stop. To read log entries:

curl "https://api.cdb-staging.cdn.orange.com/edgecompute/v1/apps/APP_ID/logs?from=2026-06-17T00:00:00Z&to=2026-06-17T23:59:59Z&offset=0&limit=50" \
  -H "Authorization: APIKey $GCORE_API_KEY"

Application configuration

Response headers, environment variables, secrets, and Edge Storage are all updated with a single PUT /docs/edgecompute/v1/apps/{id} request. The body replaces the entire configuration — fields omitted from the request are cleared. Read the current state with GET first and use it as the base.

Response headers

Set headers in the rsp_headers object:

"rsp_headers": {
  "Access-Control-Allow-Origin": "*",
  "Cache-Control": "public, max-age=3600"
}

Environment variables

Set variables in the env object:

"env": {
  "API_BASE_URL": "https://api.example.com",
  "MAX_RETRIES": "3"
}

Secrets

To link a secret, get its numeric ID from GET /docs/edgecompute/v1/secrets, then reference it in the secrets object:

"secrets": {
  "MY_API_KEY": {"id": 636}
}

Edge Storage

To link a key-value store, get its numeric ID from GET /docs/edgecompute/v1/kv, then reference it in the stores object:

"stores": {
  "MY_STORE": {"id": 126}
}

The following example updates all four configuration areas in one request:

curl -X PUT "https://api.cdb-staging.cdn.orange.com/edgecompute/v1/apps/APP_ID" \
  -H "Authorization: APIKey $GCORE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "id": APP_ID,
    "binary": BINARY_ID,
    "name": "app-name",
    "status": 1,
    "rsp_headers": {
      "Access-Control-Allow-Origin": "*"
    },
    "env": {
      "API_BASE_URL": "https://api.example.com"
    },
    "secrets": {
      "MY_API_KEY": {"id": 636}
    },
    "stores": {
      "MY_STORE": {"id": 126}
    }
  }'

Runtime data

Dictionary

The dictionary is populated automatically by CDB EdgeCompute on every edge node and is not configurable through the API. Access it from application code using the SDK — see the Customer Portal tab for the full key reference and code examples.