Skip to main content
Wildo.ai Coming soon

Secrets and credentials

Give each process one consistent environment

Wildo turns authored configuration and scoped secrets into the environment each process reads. A backend, frontend or background runtime receives its own generated projection, so configuration does not depend on hand-maintained copies of the same value.

Configuration produces distinct environment files consumed by backend and background processes.

Give each process one consistent environment

Wildo turns authored configuration and scoped secrets into the environment each process reads. A backend, frontend or background runtime receives its own generated projection, so configuration does not depend on hand-maintained copies of the same value.

Example — Give each process one consistent environment

A multiline verification key is authored once and encoded for the environment reader used by its service. The generated runtime receives the complete key rather than a truncated first line.

For engineers

Author application and infrastructure choices in their configuration files. Use configuration synchronization to regenerate derived environments; edit the source value instead of patching a generated .env.

Builders return raw values. The local dotenv writer encodes them exactly once for its reader:

Selected source from env-configuration-generator.service.ts:

function writeEnvFile(filePath: string, env: Record<string, string>): void {
  const dir = dirname(filePath);
  if (!existsSync(dir)) {
    mkdirSync(dir, { recursive: true });
  }

  const content = Object.entries(env)
    .map(([key, value]) => `${key}=${encodeDotenvValue(key, value)}`)
    .join('\n');

  writeFileSync(filePath, GENERATED_FILE_HEADER + '\n\n' + content + '\n');
}

For example, take this harmless raw value (two lines, not a real key):

PUBLIC-LINE-ONE
PUBLIC-LINE-TWO

The Node dotenv sink writes one quoted entry with an escaped newline:

EXAMPLE_PUBLIC_MATERIAL="PUBLIC-LINE-ONE\nPUBLIC-LINE-TWO"

The dotenv reader reconstructs PUBLIC-LINE-ONE followed by a newline and PUBLIC-LINE-TWO. The provider passes the original two-line value; it does not add the quotes or the escape sequence itself.

Compose and Kubernetes have their own sink encoders. A value safe for one format is not necessarily correctly escaped for another. This is why providers and runtime builders should supply the raw key or JSON value, not a pre-quoted string.

Keep runtime projections separate

The generator creates environments per process kind. Kubernetes runtime environment Secrets and provider credential Secrets have derived names shared with the workload manifests. A runtime without provider contributions does not need a provider-secret mount; it still needs its required runtime environment.

ConsumerGenerated inputWhen a change takes effect
Node backend or declared background processIts own .envRestart with the regenerated environment
FrontendIts generated .env and companion .env.exampleRestart its development process or produce the new frontend deployment
Kubernetes workloadRequired runtime environment Secret and applicable provider SecretApply artifacts and roll out the consuming pods

Generation changes an artifact, not the memory of an already-running process. Restart or roll out the affected runtime so it reads the new projection. Protect local environment files and deployment artifacts as secrets-bearing material; encoding a Kubernetes Secret is not an at-rest encryption policy.

Building a B2B product or an internal tool?

Wildo is not self-service yet. Tell us what you have in mind and we will say plainly whether it fits, and what happens next.