Configuration reference

Task project

A task project must contain package.json, the selected Manager’s exact lockfile, and helmr.config.ts. .helmrignore is optional source-selection authority and is generated by helmr init. package.json must set "type": "module", select an exact Node release through devEngines.runtime, and select an exact npm, pnpm, or Bun release through packageManager.

import { defineConfig } from "@helmr/sdk"

export default defineConfig({
  dirs: ["tasks"],
  ignorePatterns: ["**/*.test.ts"],
})

dirs is required and must be non-empty. It selects declaration discovery from the submitted project source. ignorePatterns affects discovery only. .helmrignore is the only source-selection file; .gitignore is not read. The root .git entry is always excluded. Retained root node_modules and helmr paths are rejected. Retained .env and .env.* basenames are rejected except names ending in .example, .sample, or .template.

Runtime configuration

Surface Fields
task id, payload, queue, maxDuration, ttl, retry, run
actor id, idleTimeout, queue, maxDuration, ttl, retry, run
sandbox sandbox({ id }).image(img).resources({ cpu, memory })
image from, run, copy, copyFrom, workdir, env, user
source file(path), directory(path)

SDK Workspace creation uses inert Secret addresses rather than raw names:

secrets: [
  { secret: secrets.fromName("TOKEN"), env: "TOKEN" },
  {
    secret: secrets.fromName("config-json"),
    file: "/run/secrets/config.json",
  },
]

The corresponding REST request body uses the canonical wire form:

secrets: [
  { name: "TOKEN", env: "TOKEN" },
  {
    name: "config-json",
    file: "/run/secrets/config.json",
  },
]

Secret names must match /^[A-Za-z0-9][A-Za-z0-9_.-]{0,127}$/.