Skip to main content

Manage application runners

An Application Runner in DIAL is an application factory that allows end users to create individual logical instances of applications, each with its own configuration. An Application Runner definition includes a JSON configuration schema that enforces the data structure persisted for each instance. The JSON schema of Application Runners conforms to the main meta schema.

Quick Apps and Code Apps are Application Runners available in DIAL out of the box. You can use DIAL SDK to create custom Application Runners.

For example, a custom RAG Application Runner may allow an end user to configure a personalized RAG agent by connecting it to chosen data sources—such as internal knowledge bases, document repositories, or external APIs—and then share it with other users and groups.

Note

  • You can also define routes for specific application deployments and Application Runners. Refer to Applications to learn how to do this.
  • Refer to Schema-rich Applications to learn more.

Main screen​

In Application Runners, you can add and manage all Application Runners registered in your DIAL instance.

Application Runners main screen showing the grid of registered runners

The grid lists every registered runner. Each column has an inline search box and a filter menu, and you can sort by clicking a column header.

Grid columns​

Columns differ by bucket. There is no ID column—the row identity is the Name cell. Every column (except in the file bucket) has an inline search/filter box.

File bucket: a single Name column (the config-entity name). No other columns, and no actions.

Platform bucket

ColumnDescription
NameName of the runner. Click to open.
AuthorWho created or last updated the runner.
Created timeCreation timestamp.
Updated timeTimestamp of the last modification.

Actions​

The actions menu (⋮) at the end of each row lets you work with an individual runner.

ActionWhat it does
Open in a new tabOpens the runner's configuration screen in a new browser tab.
DuplicateCopies the runner. The modal asks for a Name (pre-filled with the source name and a -copy suffix), an ID (copied from the source) and a Display Name. Duplicate stays disabled while the Name is empty or already used.
DeletePermanently removes the runner.

Folders​

The left panel shows where each app runner definition is stored. It has two root folders:

  • file: runners defined in the DIAL Core configuration file. This folder is read-only; it lists only the runner names. To change these runners, edit the DIAL Core config file.
  • platform: runners stored in DIAL Core platform blob storage. This is where you create, edit and delete runners in DIAL Admin. The folder is flat, so it has no sub-folders, and the grid shows each runner's name, author, and creation and update times.

Create​

  1. Click + Create to open the Create Application Runner modal.

  2. Define key parameters for the new Application Runner:

    FieldRequiredDescription
    NameYesName under which DIAL Core stores the runner. It identifies the runner in the grid.
    IDYesThe application type schema ID, a URI such as https://dial.example.com/custom_application_schemas/my-runner. DIAL Core uses it to read the runner's schema, and applications refer to the runner by it. It is separate from Name. The endpoints that receive requests are set in Source type.
    Display NameYesName rendered on the UI.
    DescriptionNoDescription of capabilities, cluster location, version, or SLA.
    Source typeYesWhere DIAL Core sends orchestration payloads for applications built on this runner. Chat Endpoint and MCP Endpoint are independent checkboxes—you can enable either or both, but at least one must stay enabled. Chat Endpoint is selected by default. See the sub-fields each one reveals below.

    Chat Endpoint reveals:

    • Completion endpoint (required) — endpoint that processes chat completion requests (e.g. https://my-runner.example.com/v1/execute).
    • Responses endpoint — endpoint that processes OpenAI Responses API calls.

    MCP Endpoint reveals:

    • Endpoint (required) — the MCP endpoint of the Application Runner.
    • Allowed tools — restricts which tools of the MCP server applications may use. Click + Add tools to add tool names; leave empty to allow all tools.
    • Transport — transport used by the MCP server. Fixed to HTTP (the only available option).
    • Forward per request key — toggle. When on, DIAL forwards a per-request key to the MCP server so it can access files in DIAL storage. Enabling MCP Endpoint turns this on automatically.
    • Configuration delivery — how application properties are sent to the MCP server: Header delivers them in an HTTP header; Meta includes them in the _meta field of the MCP message payload.

Note

  • Name and ID can be set only when you create the runner. Neither can be changed afterwards, including in the JSON editor.
  • ID can't contain the characters !, ~, *, ', ( or ). DIAL Admin also checks the ID with DIAL Core before it creates the runner. If a runner with this ID already exists, an error is shown under ID.
  1. Click Create. The dialog closes and the new runner's configuration screen opens. The new runner appears immediately in the listing, though changes may take some time to propagate to DIAL Core.

    Create Application Runner modal with required fields filled in

Configure​

Click any Application Runner on the main screen to open its configuration page. At the top, you can find the runner's read-only ID (click the copy icon to copy it).

Top bar controls

ControlDescription
CreateOpens a menu. Application creates an application from this runner. See Create an application from a runner.
DeletePermanently removes the selected runner. A confirmation is required. The confirmation does not list the applications created from the runner.
JSON Editor (toggle)Switch between the form UI and the raw JSON view.
SaveCommits unsaved changes. Appears only when there are changes. Changes may take time to propagate to DIAL Core.
DiscardReverts unsaved changes. Appears only when there are changes, and asks for confirmation before discarding.

Application Runner top bar controls

Create an application from a runner​

You can create an application from the runner you are viewing. The runner is the application's source, so the form has no source step.

  1. Click Create in the top bar and select Application.

  2. Select the folder for the application: platform or public. The platform folder is available only when the Catalog menu group is enabled.

  3. Fill in the Properties form:

    FieldRequiredDescription
    IDYesUnique identifier of the application.
    Display NameYesName shown on the UI.
    VersionYesSemantic version (for example 1.0.0, pre-filled). Shown only for the public folder.
    DescriptionNoFree-text description of the application.
  4. Click Create. The new application opens, with its parameters set to the defaults from the runner's schema.

Create Application from an Application Runner: the Create menu (1), the folder selection (2) and the Properties form (3)

The Create menu is not available for read-only admins, while the runner has unsaved changes, or while the JSON editor is open. See Applications to configure the new application.

The configuration page has five tabs: Properties, Features, Parameters, App Routes, and Interceptors. Runners from the file folder are read-only.

Properties​

In Properties, configure the core identity, metadata, and integration endpoints for your Application Runner.

FieldRequiredEditableDescription
Updated Time—NoTimestamp of the last configuration update. Shown in the header band at the top of the tab.
Creation Time—NoTimestamp of when the configuration was created. Shown in the header band at the top of the tab.
NameYesNoName under which DIAL Core stores the runner.
IDYesNoThe application type schema ID (a URI). Applications refer to the runner by it.
Display NameYesYesName displayed on the UI (e.g. "Python Lambda Runner" or "NodeJS Service Worker").
DescriptionNoYesDescription of the runner, including its environment (staging vs. prod), resource profile (2 vCPU, 8 GB RAM), or special instructions.
Source typeYesYesWhere DIAL Core sends orchestration payloads for applications built on this runner. Chat Endpoint and MCP Endpoint are independent checkboxes; enable either or both (at least one is required). See Source type fields.
Viewer URLNoYesURL of an alternative end-user UI. If set, overrides the standard DIAL Chat UI for applications built on this runner.
Editor URLNoYesURL of a UI screen for configuring application settings when creating or updating an application instance.
Schema endpointNoYesEndpoint that returns the JSON schema defining parameters of the application type. When set, the Parameters section is populated from this endpoint and is read-only.
IconNoYesIcon representing the runner visually in the UI. Choose one with the icon picker.
TopicsNoYesSemantic tags for grouping and filtering. Select one or more from the list.
TitleNoYesTitle of the Application Runner.
Bucket copyNoYesDropdown (Enabled / Disabled, default Disabled). Determines whether files stored in the application's file storage bucket are copied when the application is copied, moved, or published.

Application Runner Properties

Source type fields​

Chat Endpoint reveals:

FieldRequiredDescription
Completion endpointYesProcesses chat completion requests.
Responses endpointNoProcesses OpenAI Responses API calls.

MCP Endpoint reveals:

FieldRequiredDescription
EndpointYesThe MCP endpoint of the Application Runner.
Allowed toolsNoRestricts which MCP tools applications may use. Click + Add tools to add tool names; leave empty to allow all.
Transport—Transport used by the MCP server. Fixed to HTTP (the only available option).
Forward per request key—Toggle. When on, DIAL forwards a per-request key to the MCP server so it can access files in DIAL storage. Turned on automatically when MCP Endpoint is enabled.
Configuration deliveryNoHow application properties are sent to the MCP server: Header (HTTP header) or Meta (the _meta field of the MCP message payload).

Features​

In Features, define additional capabilities of applications created with this Application Runner. Features defined here are propagated to all applications created from this runner. Features left undefined at the runner level can be set per-application in Applications.

FieldControlDescription
Configuration endpointTextURL to fetch a JSON Schema describing the application's settings. DIAL Core exposes this as GET v1/deployments/<deployment name>/configuration. Clients must provide a JSON value matching this schema in custom_fields.configuration on chat completion requests.
Rate endpointTextURL of a custom rate-estimation API to compute cost or quota usage (e.g. grouping by tenant, complex billing rules).
Tokenize endpointTextURL of a custom tokenization service for precise, app-wide token counting (for mixed-model or multi-step prompts).
Truncate prompt endpointTextURL of your own prompt-truncation API for advanced context-window management (e.g. dynamic summarization).
Application properties headerToggleWhen on, DIAL appends the app's configuration to chat completion request headers.
Playback supportToggleEnables Playback, which lets users simulate a conversation without invoking model responses, for review and analysis.
Assistant attachments in requestToggleWhen on, DIAL Chat preserves attachments in messages from role=assistant in chat completion requests. Useful for apps that generate and consume attachments.

Application Runner Features

Parameters​

Parameters shows a table that defines the parameters configured when creating an application instance based on this runner. Parameters are rendered as a nested, expandable grid—expand a row to see its child properties.

ColumnDescription
NameThe property key (the leaf name in the schema). Nested properties are shown as expandable rows.
TitleHuman-readable title of the property.
DescriptionDescription of the property's purpose.
Data typeThe property type (e.g. string, boolean, object, array:object).
RequirementWhether the property is Required or Optional.
OrderThe display order of the property within its group.
Property kindHow the property is sourced (e.g. server).

The table shows the schema as DIAL Core resolves it. If the runner has a Schema endpoint in Properties, the properties from that external schema are shown alongside the runner's own. If DIAL Core can't download the external schema, the tab shows an error. When no schema is defined, the section shows a "No configuration schema" message.

Declarations that the table doesn't show, such as file-valued properties and nested property metadata, are kept when you edit and save the schema.

Important

Every top-level parameter needs an Order and a Property kind. A runner with a parameter that lacks either can't be saved, and the empty Order cell is marked as invalid.

Note

JSON schema of Application Runners conforms to the main meta schema. Refer to Schema-rich Applications to learn more.

Application Runner Parameters showing the schema grid

App Routes​

In App Routes, define and manage routes that DIAL Core uses when interacting with applications created from this runner. Applications created from this runner inherit these routes automatically—their App Routes section is pre-populated and read-only.

Route configuration mirrors Routes. Refer to this section for details. Route roles are chosen from the roles defined in DIAL Core.

A runner can't be saved if:

  • a route name contains characters other than letters, digits and _;
  • a route has no paths, no methods, or neither upstreams nor a response;
  • a route uses a method other than the supported HTTP methods.

Note

Refer to DIAL Core documentation to learn more about routes.

Interceptors​

In Interceptors, review and manage the interceptors that process requests and responses for all applications built on this runner. The interceptors you can attach include both those created in DIAL Admin or through the DIAL Core API and those defined in the DIAL Core configuration file. The section is split into collapsible groups, each showing its count:

  • Global Interceptors — read-only. Interceptors defined in System Properties that apply to all deployments in DIAL. You cannot add or remove them here.
  • Runner Interceptors — read-only. Interceptors inherited from the source runner. This group appears only when the runner has a schema source to inherit from.
  • Local Interceptors — editable. The runner's own interceptors. Use + Add to attach them, drag rows to reorder, and remove them from the row actions menu. These appear as runner interceptors in the configuration of each application built on this runner.

Request interceptors run in the listed order; response interceptors run in reverse order.

Application Runner Interceptors

Each interceptor group's grid shows:

ColumnDescription
Display NameThe interceptor's display name from its definition.
DescriptionFree-text summary from the interceptor's definition.

To add local interceptors:

  1. Click + Add in the Local Interceptors group.
  2. In the Add Interceptors modal, select one or more interceptors from the list of available interceptors.
  3. Click Apply to insert them into the group.

To remove a local interceptor, open the ⋮ actions menu in its row and choose Remove.

JSON editor​

Advanced users with technical expertise can work with the application runner properties in a JSON editor view mode. It is useful for advanced scenarios of bulk updates, copy/paste between environments, or tweaking settings not exposed on UI.

Tip

You can switch between UI and JSON only if there are no unsaved changes.

  1. Navigate to App Runners, then select the runner you want to edit.
  2. Click the JSON Editor toggle (top-right). The UI reveals the raw JSON.
  3. Make changes and click Save to apply them.

Delete​

Permanently removes the selected runner. A confirmation is required. The confirmation does not list the applications created from the runner.

Further reading​