Skip to content

Configuration

Every defineConfig option.

Global config lives in ~/.steerium/config.ts; per-project .steerium/config.ts merges over it (project wins). Config is TypeScript, loaded at runtime — no build step.

import { defineConfig } from "steerium";
export default defineConfig({
defaults: { provider: "anthropic" },
providers: {
anthropic: { apiKey: { env: "ANTHROPIC_API_KEY" } },
},
connectors: {
linear: { apiKey: { env: "LINEAR_API_KEY" } },
github: { token: { env: "GITHUB_TOKEN" } },
},
control: { host: "127.0.0.1", port: 4319 },
});
KeyDefaultMeaning
providermockprovider used when a call doesn’t name one
concurrency1simultaneous runs per workflow per scope
timeoutMs300000 (5 min)run timeout; aborts via AbortSignal
queue10events waiting per workflow at the concurrency cap; 0 = drop on overlap
shutdownGraceMs30000how long shutdown waits for in-flight runs

Workflow-level concurrency, timeoutMs, and queue override these.

Keyed by provider name. Each entry is either settings for a built-in (model, apiKey, permissionMode, allowedTools, plus provider-specific keys) or a full custom provider from defineProvider.

Per-connector secrets and settings (e.g. linear.apiKey, github.token, webhookSecret). Read by connector triggers and by ctx.connector(name) in workflows.

Project roots to load (managed by steerium project add/remove — normally you don’t edit this by hand).

KeyDefaultMeaning
host127.0.0.1control API bind address
port4319control API port
tokenrequired for non-local binds; Authorization: Bearer
uitrueserve the browser UI at /

Secrets are env references, never literals:

apiKey: { env: "ANTHROPIC_API_KEY" }

They resolve at call time and are redacted from logs. This is also why steerium config export bundles are safe to move between machines — the bundle never contains a key.