Integrations and ConnectorsConnectors

Descope Engine

Note

This is currently only available to FedRAMP customers. The Connectors → Engines page in the Descope Console must be enabled by Descope for your company.

If you do not see the Engines page, contact the Descope CS team before proceeding.

The Descope Engine is a lightweight, deployable Docker image that allows Descope Connectors to reach resources that are not accessible from the public internet — for example, an internal HTTP API behind your firewall or a private database.

In order to use Descope Connectors against private resources, you must deploy and run this Engine within your own environment. Descope does not run the Engine for you in Descope's cloud.

How It Works

  1. You create an Engine in the Descope Console and copy its Engine ID and Engine Key.
  2. You run the Engine container in your network with those credentials. It opens a single outbound TLS connection to Descope (descope.fedstart.com:443) — no inbound ports.
  3. When a flow invokes a connector assigned to that Engine, Descope sends the command over the open connection. The Engine executes it locally (for example, calling an internal API) and returns the result.
Your network (private)
Descope Engine
ECR container · stateless agent
Internal resources
Private API · database · SMTP relay

On startup, the Engine opens a long-lived bidirectional gRPC stream to Descope over TLS, sends a Hello message with ENGINE_ID and ENGINE_SECRET, and sends periodic heartbeats. HTTP/2 keepalive PINGs keep the connection alive through proxies. No inbound ports are opened in your network.

Supported Connectors on the Engine

These are a list of the connectors that are supported with the Descope Engine.

ConnectorStatusNotes
HTTP (Generic HTTP)SupportedPrimary use case — internal APIs behind your firewall.
AWS S3SupportedPrivate or GovCloud buckets from your network.
AWS SESNot validatedContact Descope before use.
WhatsAppNot validatedContact Descope before use.
SMS (Twilio, Mitto, etc.)Not supported in Gov / FedRAMPCommercial SMS providers are generally not Gov-compliant.
Email (SendGrid, SMTP, etc.)Not supported in Gov / FedRAMPCommercial email providers are generally not Gov-compliant.

Gov egress for messaging

If your organization identifies a Gov-compliant SMS or email provider that must be reachable from the Engine, share provider details and endpoints with Descope for evaluation.

Quick Start

  1. Create the Engine in the Descope Console and copy your Engine ID and Engine Key.
  2. Set up and deploy the container — pull the image, configure your .env with those credentials, and run it.
  3. Test the connection and assign connectors.

Step 1: Create the Engine in Descope

Create an Engine in the Descope Console and copy its credentials:

  1. Open the Descope Console. Go to Connectors → Engines.

Engines Page

  1. Create a new engine, or select an existing one if previously created.

Create Engine

  1. Once created, you will need to copy the ID and Engine key from the Engine settings.
Console (Connectors → Engines → Edit).env variable
IDENGINE_ID
Engine keyENGINE_SECRET

You will use these values when you configure and deploy the container in the next step.

Step 2: Set Up and Deploy the Engine

Configure and run

Before deploying, confirm your network allows the outbound connections described in Networking & Security.

Create an .env file with your credentials from Step 1:

# Required — from Connectors → Engines → Edit
ENGINE_ID=your-engine-id-here
ENGINE_SECRET=your-engine-key-here

# Descope Engine gRPC endpoint (FedRAMP / Gov)
SERVER_ADDRESS=descope.fedstart.com:443
USE_SSL=true

To modify the container image and change environment settings, you can review the Configuration reference section.

Then, you can get the container image from the following URL: https://hub.docker.com/r/descope/engine-client.

With that image version, you can deploy the container:

docker run -it --env-file .env descope/engine-client

For high availability, run the same image on multiple hosts or pods using the same ENGINE_ID and ENGINE_SECRET. See the Reconnect and high availability docs for more information.

Step 3: Associating the Connector with the Engine

Note

The list of available connectors that work with the Engine are listed in the Supported Connectors on the Engine section.

You can associate a connector with an Engine by selecting the Engine in the connector configuration page.

  1. Go to Connectors and open up the connector configuration.
  2. Ensure that the connector
  3. Select the Engine you created from the dropdown section called Engine.

Associate Connector with Engine

Once you've successfully associated a connector with the Engine, you can look for gRPC stream established with server and Listening for commands in your Docker container logs:

Engine connected logs

Run an end-to-end test

  1. Add the connector to a flow (or trigger the connector action you configured).
  2. Run the flow and confirm the connector completes successfully.
  3. Check Engine container logs for the execute command and response.

If the flow fails, see Troubleshooting.

Configuration Reference

All configuration is provided through environment variables you can set in your docker image.

Required

VariableDescription
ENGINE_IDEngine ID from the Descope Console. Replicas sharing it form one HA group. Your Descope project is derived from this ID.
ENGINE_SECRETEngine Secret from the Console. Sent in the Hello message and verified by Descope on connect.
ENGINE_IMAGE_VERSIONPre-set in the official image — only set if you build your own image.
ENGINE_CONTENT_VERSIONConnector template version identifier. Pre-set in the official image.

Connection & TLS

VariableDefaultDescription
SERVER_ADDRESSlocalhost:50051Descope Engine gRPC endpoint (host:port). Use descope.fedstart.com:443 for FedRAMP / Gov.
USE_SSLtrueUse TLS for the connection. Keep true in production.
VERIFY_SERVER_CERTIFICATEtrueVerify the server TLS certificate. Set false only for self-signed certs in development.

Timing & keepalive (optional)

VariableDefaultDescription
HEARTBEAT_INTERVAL30000Application-level heartbeat interval (ms).
GRPC_KEEPALIVE_TIME_MS30000HTTP/2 PING interval when idle (ms). Keeps the connection alive through proxies.
GRPC_KEEPALIVE_TIMEOUT_MS20000How long to wait for a PING acknowledgement before dropping the connection (ms).
GRPC_KEEPALIVE_PERMIT_WITHOUT_CALLStrueSend PINGs even when there are no active calls.

Reconnection (optional)

VariableDefaultDescription
MAX_RECONNECT_ATTEMPTS10Maximum reconnection attempts before the process exits.
BASE_RECONNECT_DELAY1000Initial reconnection delay (ms).
MAX_RECONNECT_DELAY30000Maximum reconnection delay with jitter (ms).

Logging (optional)

VariableDefaultDescription
LOG_LEVELinfoLog verbosity (fatal, error, warn, info, debug, trace). In production (NODE_ENV=production) logs are JSON; otherwise pretty-printed.

Networking & Security

Review this section with your network and security teams before you deploy the Engine in production.

How traffic flows

The Engine runs in your environment and opens a single outbound gRPC connection to Descope over TLS. Descope never initiates inbound connections to your network. You do not need a public IP, load balancer, or inbound firewall rules for Descope to reach the Engine.

When a flow runs a connector assigned to that Engine, Descope sends the command over the existing connection. The Engine then calls resources inside your network (for example, an internal HTTP API) and returns the result to Descope over the same connection.

Firewall and egress

You will need to make sure that your network allows the FedRAMP static IPs, to be able to reach the Descope Engine.

The static IPs are documented here.

In addition, you will need to make sure that your network allows the outbound traffic to the Descope Engine:

DirectionDestinationPortRequired for
Outbounddescope.fedstart.com443 (TLS)Engine registration, heartbeats, and connector command dispatch
OutboundInternal hosts your connectors useVaries (e.g. 443, 5432)Connector actions (APIs, databases, private S3 endpoints, etc.)

If outbound access to descope.fedstart.com:443 is blocked, the Console shows Disconnected and connector actions cannot run. See Troubleshooting.

TLS and secrets

TopicGuidance
Encryption in transitKeep USE_SSL=true and VERIFY_SERVER_CERTIFICATE=true in production. See Connection & TLS.
ENGINE_SECRETTreat as a credential. Inject via your orchestrator's secret store — not a plaintext .env file on disk in production. Rotate in the Console if compromised.

Runtime footprint

The Engine is stateless: it does not store customer data or require a database. Plan for container logs only; there is nothing to back up on the Engine itself.

Reconnect and High Availability

If the gRPC stream drops, the Engine retries with exponential backoff, sends Hello again, and resumes listening.

Run more than one container with the same ENGINE_ID and ENGINE_SECRET for HA. Descope dispatches each command to any connected container.

SetupWhat happens if one container goes down
Single containerConnector actions wait or fail until reconnect or replacement.
Multiple containers, same ENGINE_IDOther containers keep executing commands.

Troubleshooting

These are some of the most common issues and fixes for the Descope Engine.

SymptomLikely cause / fix
Engines page missingEngine not enabled on company license — contact Descope CS.
Invalid engine secret / auth failureWrong ENGINE_ID or ENGINE_SECRET, or secret rotated. Re-copy from Connectors → Engines → Edit.
Connection refused / cannot reach serverWrong SERVER_ADDRESS, or egress firewall blocking TLS to descope.fedstart.com.
Connection drops when idleProxy idle timeout — lower GRPC_KEEPALIVE_TIME_MS.
Engine shows DisconnectedContainer not running or credentials misconfigured.
Commands not executedNo connected Engine with the correct ENGINE_ID, or connector not assigned to the Engine.
Need a shellUse the debug image variant.
Was this helpful?

On this page