Salambo separates non-secret environment configuration from secrets and makes the exposure boundary explicit.

Non-secret values

env:
  APP_MODE:
    value: standard
    description: Application behavior mode.
    exposeTo:
      - runtime

Secrets

secrets:
  OPENAI_API_KEY:
    fromEnv: OPENAI_API_KEY
    description: Provider credential.
    exposeTo:
      - runtime
The CLI reads OPENAI_API_KEY from the deployer’s environment. It does not store the plaintext value in salambo.yaml.

Exposure targets

TargetMeaning
runtimeAvailable to the trusted worker brain
sandboxAvailable to sandbox tools or extensions through the supported projection
Declare the narrowest exposure required. Provider keys used only for worker-owned provider calls normally need:
exposeTo:
  - runtime

Sandbox-exposed secrets

A secret exposed to the sandbox requires an egress host allowlist:
secrets:
  PARTNER_TOKEN:
    fromEnv: PARTNER_TOKEN
    exposeTo:
      - sandbox
    allowedHosts:
      - api.partner.example
Sandbox-exposed secrets use the managed egress boundary. They are not a reason to inject broad plaintext credentials into every process. The sandbox receives a time-limited sealed placeholder, not the plaintext value. Use that environment value in a supported HTTP authorization or API-key header. The managed outbound proxy releases the plaintext only after the run policy, destination, secret host scope, session binding, and expiry all pass validation. See sandbox security architecture for the complete sealed-secret and managed HTTPS flow.

Security rules

  • Never commit real secrets.
  • Never use a value field under secrets.
  • Use uppercase environment names.
  • Use host-only allowlist entries.
  • Rotate secrets by updating the deployment environment and deploying again.
  • Remove unused entries from salambo.yaml; deployment reconciliation removes obsolete remote configuration.
  • Do not print secret values in extension errors, artifacts or diagnostic messages.