Skip to content

agentSandbox.broker

48 options, generated from the kubenix modules — this page cannot drift from the code.

agentSandbox.broker.aws.accounts

The account registry: alias -> { account_id, broker_role_arn, enabled, description?, allowed_policy?, allowed_managed_policies?, region?, approvers?, auto_approve_read_only?, auto_allowed_policy?, auto_allowed_managed_policies? }. Rendered into a ConfigMap mounted at /etc/agent-broker/accounts.json.

description is a human-written summary of what the account is for. The agent reads it (via scooter-aws accounts → GET /aws/accounts) to pick the RIGHT account to request access to — set it on every account.

Set auto_approve_read_only = true on an account to grant purely read-only requests (all actions Get/List/Describe*/… ; no managed-policy ARNs) immediately, WITHOUT a human approver — recorded as approved_by "system:auto-approve-read-only". Anything with a write action or a managed ARN still needs a human. Default off (every request needs approval).

auto_allowed_policy (+ auto_allowed_managed_policies) is the general form: an OPT-IN glob superset of grants auto-approved with no human — same fnmatch shape as allowed_policy (Action+Resource statements; managed-ARN fnmatch patterns). e.g. pre-approve assuming deploy roles: auto_allowed_policy.Statement = [{ Action = [ "sts:AssumeRole" ]; Resource = [ "arn:aws:iam::123456789012:role/deploy-*" ]; }]; A request FULLY covered by it (every action+resource, every managed ARN) skips approval; anything in allowed_policy but NOT in the auto tier still needs a human. Checked AFTER the ceiling, so auto ⊆ allowed by construction.

Example: accounts.readonly-sandbox = { account_id = "123456789012"; broker_role_arn = "arn:aws:iam::123456789012:role/agent-token-broker-base"; enabled = true; description = "Sandbox account for safe read-only exploration (S3, logs)."; auto_approve_read_only = true; };

Type: attribute set of attribute set of anything

Default:

{ }

Declared in: modules/broker.nix

agentSandbox.broker.aws.agentHostUrl

Agent-host URL — the broker notifies it to raise the approval interrupt.

Type: string

Default:

"http://agent-host.agent-sandbox.svc.cluster.local:8080"

Declared in: modules/broker.nix

agentSandbox.broker.aws.approverClaim

Which identity claim authorizes an approver — must match how the FGA approver tuples are seeded (accounts..approvers, conventionally emails). The agent-host sends the answering user's {id, email, name}; the broker checks THIS claim. "email" (default) suits ALB-OIDC (where the id is an opaque sub); use "id" for header-auth that already carries emails.

Type: one of "email", "id", "name"

Default:

"email"

Declared in: modules/broker.nix

agentSandbox.broker.aws.brokerPrincipalArn

The broker's IRSA role ARN — the principal the dynamic roles trust.

Type: string

Default:

""

Declared in: modules/broker.nix

agentSandbox.broker.aws.enable

Enable the AWS permissions provider (request/approve/provision dynamic IAM roles).

Type: boolean

Default:

false

Declared in: modules/broker.nix

agentSandbox.broker.aws.externalId

STS ExternalId used when the broker assumes each account's base role.

Type: string

Default:

"agent-permissions-broker"

Declared in: modules/broker.nix

agentSandbox.broker.aws.fga.apiUrl

OpenFGA HTTP API URL.

Type: string

Default:

"http://openfga.agent-sandbox.svc.cluster.local:8080"

Declared in: modules/broker.nix

agentSandbox.broker.aws.fga.authorizationModelId

OpenFGA authorization-model id (optional; latest used if empty).

Type: string

Default:

""

Declared in: modules/broker.nix

agentSandbox.broker.aws.fga.enable

Enforce per-account approver authorization via OpenFGA. Deploys an openfga server.

Type: boolean

Default:

false

Declared in: modules/broker.nix

agentSandbox.broker.aws.fga.image

OpenFGA server image.

Type: string

Default:

"openfga/openfga:latest"

Declared in: modules/broker.nix

agentSandbox.broker.aws.fga.storeId

OpenFGA store id (created out-of-band or by a seed step).

Type: string

Default:

""

Declared in: modules/broker.nix

agentSandbox.broker.aws.region

AWS region.

Type: string

Default:

"us-east-1"

Declared in: modules/broker.nix

agentSandbox.broker.aws.roleTtlHours

Dynamic-role TTL (refresh window).

Type: signed integer

Default:

12

Declared in: modules/broker.nix

agentSandbox.broker.aws.serviceAccountRoleArn

IRSA role ARN annotated on the broker SA (eks.amazonaws.com/role-arn). Usually == brokerPrincipalArn.

Type: string

Default:

""

Declared in: modules/broker.nix

agentSandbox.broker.datadog.apiKeySecret

Secret holding the Datadog API key. Injected as DATADOG_API_KEY. The secret must exist in the broker namespace.

Type: submodule

Declared in: modules/broker.nix

agentSandbox.broker.datadog.apiKeySecret.key

Secret key holding the Datadog API key.

Type: string

Default:

"DATADOG_API_KEY"

Declared in: modules/broker.nix

agentSandbox.broker.datadog.apiKeySecret.name

Secret name (in the broker namespace).

Type: string

Declared in: modules/broker.nix

agentSandbox.broker.datadog.appKeySecret

Secret holding the Datadog application key. Injected as DATADOG_APP_KEY. The secret must exist in the broker namespace.

Type: submodule

Declared in: modules/broker.nix

agentSandbox.broker.datadog.appKeySecret.key

Secret key holding the Datadog application key.

Type: string

Default:

"DATADOG_APP_KEY"

Declared in: modules/broker.nix

agentSandbox.broker.datadog.appKeySecret.name

Secret name (in the broker namespace).

Type: string

Declared in: modules/broker.nix

agentSandbox.broker.datadog.enable

Enable the Datadog provider (http-proxy to api. with the two keys injected).

Type: boolean

Default:

false

Declared in: modules/broker.nix

agentSandbox.broker.datadog.site

Datadog site/region host suffix (datadoghq.com | datadoghq.eu | us3.datadoghq.com | us5.datadoghq.com | ap1.datadoghq.com | ddog-gov.com). Upstream is https://api..

Type: string

Default:

"datadoghq.com"

Declared in: modules/broker.nix

agentSandbox.broker.enable

Deploy the credential broker.

Type: boolean

Default:

false

Declared in: modules/broker.nix

agentSandbox.broker.githubApp.appId

GitHub App ID (GITHUB_APP_ID).

Type: string

Default:

""

Declared in: modules/broker.nix

agentSandbox.broker.githubApp.enable

Enable the GitHub provider, backed by a GitHub App (vends installation tokens for git/HTTPS + the API).

Type: boolean

Default:

false

Declared in: modules/broker.nix

agentSandbox.broker.githubApp.installationId

GitHub App installation ID (GITHUB_APP_INSTALLATION_ID).

Type: string

Default:

""

Declared in: modules/broker.nix

agentSandbox.broker.githubApp.privateKeySecret

Secret holding the GitHub App private key (PEM). The secret must exist in the broker namespace.

Type: submodule

Declared in: modules/broker.nix

agentSandbox.broker.githubApp.privateKeySecret.key

Secret key holding the PEM.

Type: string

Default:

"private-key"

Declared in: modules/broker.nix

agentSandbox.broker.githubApp.privateKeySecret.name

Secret name (in the broker namespace).

Type: string

Declared in: modules/broker.nix

agentSandbox.broker.gitlab.enable

Enable the GitLab provider (transparent http-proxy to gitlab.com with the token injected).

Type: boolean

Default:

false

Declared in: modules/broker.nix

agentSandbox.broker.gitlab.tokenSecret

Secret holding the GitLab token (glpat-…). Injected as GITLAB_TOKEN. The secret must exist in the broker namespace.

Type: submodule

Declared in: modules/broker.nix

agentSandbox.broker.gitlab.tokenSecret.key

Secret key holding the GitLab token.

Type: string

Default:

"GITLAB_TOKEN"

Declared in: modules/broker.nix

agentSandbox.broker.gitlab.tokenSecret.name

Secret name (in the broker namespace).

Type: string

Declared in: modules/broker.nix

agentSandbox.broker.grafana.enable

Enable the Grafana provider (http-proxy to a Grafana stack with a service-account token injected).

Type: boolean

Default:

false

Declared in: modules/broker.nix

agentSandbox.broker.grafana.tokenSecret

Secret holding a Grafana service-account token. Injected as GRAFANA_TOKEN. The secret must exist in the broker namespace.

Type: submodule

Declared in: modules/broker.nix

agentSandbox.broker.grafana.tokenSecret.key

Secret key holding the Grafana service-account token.

Type: string

Default:

"GRAFANA_TOKEN"

Declared in: modules/broker.nix

agentSandbox.broker.grafana.tokenSecret.name

Secret name (in the broker namespace).

Type: string

Declared in: modules/broker.nix

agentSandbox.broker.grafana.url

Base URL of the Grafana stack. Upstream for /grafana/*; a trailing slash is stripped.

Type: string

Default:

""

Example:

"https://myorg.grafana.net"

Declared in: modules/broker.nix

agentSandbox.broker.image

OCI ref of the broker image.

Type: string

Default:

"${registryPrefix}agent-broker:latest"

Declared in: modules/broker.nix

agentSandbox.broker.jiraSiteUrl

The Jira SITE base URL, used to build a human /browse/{KEY} link when the broker auto-links an issue an agent creates via the Jira proxy (the create-issue API response carries no human URL). Empty -> auto-link uses the API self URL instead.

Type: string

Default:

""

Example:

"https://acme.atlassian.net"

Declared in: modules/broker.nix

agentSandbox.broker.shares.enable

Enable static-share publishing (/shares + /s//). Persists to the shared Postgres broker DB.

Type: boolean

Default:

false

Declared in: modules/broker.nix

agentSandbox.broker.shares.frameAncestors

CSP frame-ancestors allowlist for embedding a served share in an