Skip to main content
Functions run as real containers, so configuration reaches your code as ordinary process environment variables — process.env, os.environ, os.Getenv, System.getenv. There is no separate configuration API to learn.

What’s in the environment

Declaring variables

Define non-sensitive configuration under [env_vars] in func.toml:
Three behavioral contracts:
  • All values are strings. Parse numbers and booleans in your code.
  • Changes take effect on the next telnyx-edge ship — there is no live update.
  • Names share the env namespace with bindings. If an [env_vars] entry has the same name as a declared binding — or is named SECRETS while a [[secrets]] block is declared — ship warns that one shadows the other on env and still proceeds; rename one. (A binding named SECRETS, or a duplicate [[secrets]] handle, is a hard error.)
[env_vars] values are plaintext in func.toml and end up in version control. Put credentials in secrets instead.

Reading variables

Environment variables vs secrets

Next Steps

  • Secrets — the server-side counterpart for sensitive values, including the typed env.SECRETS surface for TypeScript
  • Bindings — typed, pre-authenticated handles instead of raw variables
  • Configuration — the full manifest reference: every func.toml and telnyx.toml key