Skip to navigation

On-Prem Agent Configuration Reference

View as Markdown

The agent container requires the configuration to be in YAML format in the /home/moveworks/agent/conf directory with the file name as agent_config.yml.

The configuration encompasses various aspects such as Moveworks-specific settings, LDAP and REST client configurations, user-authorized OAuth2 connectors, encryption keys, secrets management, and proxy settings.

Secret Object

A secret object is a field in the configuration that is a protected value. All credentials in the configuration are stored as a secret object. There are 3 types of secret objects:

  1. Plaintext/Encrypted Plaintext: These secrets are stored in the config YAML itself. Once the agent starts, all value objects are converted to encrypted_value objects for security.
    value: "your-default-secret"
    # Or after encryption:
    # encrypted_value: "your-encrypted-secret"
  2. AWS Secrets Manager: These secrets can be fetched from AWS Secrets Manager.
    aws_entry:
    secret_name: "my-aws-secret" # Name of the secret in AWS Secrets Manager
    region: "us-west-2" # AWS region where the secret is stored
    refresh_time_sec: 3600 # Time interval in seconds to refresh / retrieve the secret
  3. Azure Key Vault: These secrets can be fetched from Azure Key Vault
    azure_entry:
    secret_name: "my-azure-secret" # Name of the secret in Azure Key Vault
    vault: "my-azure-vault" # Name of the Azure Key Vault
    refresh_time_sec: 3600 # Time interval in seconds to refresh / retrieve the secret

For worked examples of complete configurations, see Configuration Examples.

Top-Level Fields

FieldTypeRequiredDescription
bond_versionstringYes (auto-set)Agent configuration version. Set automatically by setup_agent.sh — do not edit.
moveworks_configobjectYesAuthentication and connectivity settings for the Moveworks platform.
ldap_configobjectNoSingle-domain LDAP/Active Directory configuration. Use ldap_forest_config for multiple domains.
ldap_forest_configmapNoMulti-domain LDAP configuration, keyed by domain name. Uses the same fields as ldap_config.
rest_configsmapNoREST API client configurations, keyed by service name (e.g. JIRA, SNOW).
encryption_keysmapNo (required when user_rest_configs is set)Encryption keys for employee tokens, keyed by integer key ID (1 to 4294967295; 0 is reserved). Each entry holds secret, a secret object whose resolved value is standard base64 of exactly 32 bytes. Agent 2.11.0 or later.
user_rest_configsmapNoUser-authorized (OAuth2 authorization code) REST connectors routed through the agent, keyed by service name. Agent 2.11.0 or later.
secrets_provider_configobjectNoExternal secrets manager configuration. Only required when using AWS Secrets Manager or Azure Key Vault.
moveworks_proxy_configsmapNoProxy configurations, keyed by proxy name.

moveworks_config

FieldTypeRequiredDescriptionExample
auth_urlstringYesAuthentication endpoint URL.https://agent.moveworks.com/api/v1/auth
config_urlstringYesConfiguration fetch endpoint URL.https://agent.moveworks.com/api/v1/config
access_keystringYesYour organization name (all lowercase).your-org-name
moveworks_access_secretsecret objectYesOrg access secret. Generate in Moveworks Setup > Core Platform > On-Premise Agents.—
path_to_certstringNoPath to a TLS certificate for connecting to the Moveworks platform./home/moveworks/agent/certs/cert.pem

secrets_provider_config

FieldTypeRequiredDescriptionExample
aws.default_regionstringNoDefault AWS region for secrets.us-west-2
azure.default_vaultstringNoDefault Azure Key Vault URL.https://my-vault.vault.azure.net/

ldap_config

FieldTypeRequiredDescriptionExample
enabledbooleanNoWhether LDAP is enabled.true
hoststringYesLDAP server hostname or IP. Do not include ldap:// prefix.ldap.company.com
portintegerYesLDAP port. 636 for LDAPS, 389 for LDAP/StartTLS.636
domainstringNoDomain name without protocol prefix.company.com
service_userstringYesService account username. Active Directory format: DOMAIN\username.COMPANY\svc_moveworks
ldap_service_passwordsecret objectYesPassword for the LDAP service account.—
use_sslbooleanNoUse LDAPS (SSL from connection start). Recommended with port 636.true
use_start_tlsbooleanNoUse StartTLS (upgrade to TLS after connecting). Typically used with port 389.false
path_to_certstringNoPath to the CA certificate for TLS verification./home/moveworks/agent/certs/ldap_cert.pem
tls_skip_verifybooleanNoSkip TLS certificate verification. Do not use in production.false

ldap_forest_config uses the same fields as ldap_config, with domain names as map keys.

rest_configs

FieldTypeRequiredDescriptionExample
servicestringYesService identifier. Must match the service name configured in Moveworks Setup. For user-auth connectors in user_rest_configs, the match is the connector’s On-Premise Service Name field, and the connector’s On-Premise Encryption Key ID must name a key in encryption_keys.JIRA
enabledbooleanNoWhether this REST config is enabled.true
header_decoratorsarrayNoAuthentication and header configurations. See Header Decorators below.—
body_decoratorsarrayNoRequest body configurations. See Body Decorators below.—
url_decoratorsarrayNoURL/query parameter configurations. See URL Decorators below.—
do_not_use_rest_proxybooleanNoBypass the configured REST proxy for this client.true
ca_cert_pathstringNoCA certificate path for TLS verification for this service./home/moveworks/agent/certs/ca-cert.pem
tls_skip_verifybooleanNoSkip TLS certificate verification. Do not use in production.false
max_response_sizeintegerNoMaximum response size in bytes. Default: 52428800 (50 MB).1048576
use_ntlmv2booleanNoUse NTLMv2 authentication.false

encryption_keys

The agent uses these keys to encrypt employee access and refresh tokens before they leave the customer network. Moveworks stores only the encrypted form. encryption_keys is a map keyed by key ID, an integer from 1 to 4294967295. Key ID 0 is reserved.

At least one key is required when user_rest_configs has any entry. Otherwise the agent exits at startup with user_rest_configs requires at least one encryption key.

encryption_keys:
"1":
secret:
encrypted_value: <encrypted>
FieldTypeRequiredDescription
secretsecret objectYesThe encryption key, in the same secret object shape as other agent secrets: encrypted_value, or aws_entry / azure_entry when a secrets provider is configured. The resolved value must be standard base64 of exactly 32 bytes.

A key held in AWS Secrets Manager or Azure Key Vault is read once at startup, so a rotated vault value takes effect after an agent restart. A key stored in the file as encrypted_value is encrypted with the host’s agent_key.pem, so a replacement host needs that file or the original base64 value.

Every agent host for an org must hold the same key under the same key ID. A token encrypted by one host can be decrypted only by a host that holds the same key.

user_rest_configs

user_rest_configs holds one entry per system where employees sign in as themselves with the OAuth2 authorization code grant. It is a map keyed by service name and requires agent 2.11.0 or later. The agent handles token exchange, refresh, revoke, and API calls for the matching OAuth 2.0 Authorization Code connector, and encrypts the employee’s tokens with a key from encryption_keys.

A service name may appear in rest_configs or in user_rest_configs, never both. The configurator refuses to save with: service "NAME" is configured in both rest_configs and user_rest_configs.

user_rest_configs:
JIRA:
service: JIRA
oauth2_authorization_code:
client_secret:
encrypted_value: <encrypted>
FieldTypeRequiredDescriptionExample
servicestringYesMust equal the map key. Must match the connector’s On-Premise Service Name field. Matching is case-insensitive, and surrounding spaces are trimmed.JIRA
oauth2_authorization_codeobjectYesOAuth2 authorization code settings. See oauth2_authorization_code.—
requestsarrayNoCall profiles that change how the agent handles a call type. See requests.—

user_rest_configs entries take no header, body, or URL decorators. Moveworks supplies the employee’s token on each call.

oauth2_authorization_code

FieldTypeRequiredDescription
client_secretsecret objectNoOAuth2 client secret. Omit for PKCE public clients. The agent adds the secret on token exchange, refresh, and revoke calls only.

A PKCE public client with no secret is written as oauth2_authorization_code: {}.

requests

By default, the agent encrypts access_token and refresh_token in token exchange and refresh responses. API call and revoke responses pass through unchanged. A call profile in requests changes this handling for one call type. Each call type takes at most one profile:

  • BOND_CALL_TYPE_TOKEN_EXCHANGE
  • BOND_CALL_TYPE_REFRESH
  • BOND_CALL_TYPE_REVOKE
  • BOND_CALL_TYPE_API_CALL
FieldTypeRequiredDescription
additional_values_to_encryptarrayNoExtra response values the agent encrypts. Each entry names either a body field, given as a field name or dotted JSON path, or a header name with a scheme of Raw, Bearer, or Basic.
transportobjectNoTransport settings for this call type. Nothing is inherited from other profiles or from rest_configs; an unset field takes the agent default.

transport accepts these fields:

FieldTypeDescription
do_not_use_rest_proxybooleanBypass the configured REST proxy for this call type.
ca_cert_pathstringCA certificate path for TLS verification.
tls_skip_verifybooleanSkip TLS certificate verification. Do not use in production.
max_response_sizeintegerMaximum response size in bytes. Default: 52428800 (50 MB).
use_ntlmv2booleanUse NTLMv2 authentication.

moveworks_proxy_configs

FieldTypeRequiredDescriptionExample
target_urlstringYesURL of the target where forwarded requests should go.https://proxy.example.com
portintegerYesPort the proxy listens on.8080

Decorators

Decorators attach authentication or fixed values to every request made through a REST client. Multiple decorators can be combined in a single rest_configs entry.

Header Decorators

Add to header_decorators. Applied to the HTTP headers of every outbound request.

TypeYAML keyDescription
Static headerplainAdd a fixed key-value header
File-basedfileLoad headers from a JSON file at runtime
Basic Authbasic_authHTTP Basic Authentication
OAuth2 Client Credentialsoauth2_client_credentials_authMachine-to-machine OAuth2; credentials sent in request body
OAuth2 Basic Authoauth2_basic_authOAuth2 where credentials are sent as a Basic Auth header
OAuth2 Refresh Tokenoauth2_refresh_token_authOAuth2 with a long-lived refresh token
Custom Authcustom_authCustom token endpoint for non-standard auth flows

plain — Fields: header_key (string), header_value (string).

file — Fields: file_path (string). File must be a flat JSON object mapping header names to values.

basic_auth — Fields: username (string), password (secret object).

OAuth2 types (oauth2_client_credentials_auth, oauth2_basic_auth, oauth2_refresh_token_auth) share these top-level fields:

FieldRequiredDescription
client_idYesOAuth2 client identifier
client_secretYesOAuth2 client secret (secret object)
client_refresh_tokenRefresh token onlyLong-lived refresh token (secret object)
scopeRecommendedSpace-separated OAuth2 scopes
rest_call_configYesToken endpoint settings — see below

rest_call_config (shared by all OAuth2 types):

FieldDefaultDescription
url—Token endpoint URL (secret object, required)
methodPOSTHTTP method for the token request
header_keyAuthorizationHeader name to send the token in
header_templateBearer %sFormat string for the header value
refresh_time_sec3600How often to refresh the token (seconds)
token_body_keyaccess_tokenJSON key to extract the token from the response
token_body_pattern—Regex to extract the token when the response is not standard JSON
request_body—Custom body for the token request
auth_headers{Content-Type: application/x-www-form-urlencoded}Headers sent with the token request

custom_auth uses the same fields as rest_call_config directly (no nested object). Use it for non-standard token endpoints that don’t follow OAuth2 conventions.

For full YAML examples of every header decorator type, see Header Decorators in Configuration Examples.


Body Decorators

Add to body_decorators. Merge key-value pairs into the request body of every outbound request.

TypeYAML keyDescription
Static valueplainAdd a fixed key-value pair to the request body
File-basedfileLoad body values from a JSON file at runtime

plain — Fields: body_key (string), body_value (string).

file — Fields: file_path (string). File must be a flat JSON object mapping field names to values.

See Body Decorators in Configuration Examples.


URL Decorators

Add to url_decorators. Append query parameters to the URL of every outbound request.

TypeYAML keyDescription
Static query parameterplain_query_parameterAppend a fixed query parameter to every request URL
Oracle WebCenter Authoracle_web_centre_authToken-based authentication for Oracle WebCenter

plain_query_parameter — Fields: query_key (string), query_value (secret object).

oracle_web_centre_auth — Fields: username (string), password (secret object), query_parameter (object with query_key, query_template, and rest_call_config).

See URL Decorators in Configuration Examples.