Skip to main content
The worker reads its declarative configuration from ~/.blobhub-worker/config.yaml. This page is the complete reference for that file: the polling, concurrency, and agents blocks that tune the worker globally, and the sections list that declares the work it runs. Edits take effect on the next blobhub-worker start — there is no hot reload in v1. The BlobHub API base URL lives in ~/.blobhub-worker/credentials.yaml (written by blobhub-worker login) and is not configurable from config.yaml. To point the worker at a different endpoint (staging, on-prem), re-run login and supply the new URL when prompted, or hand-edit credentials.yaml’s api.url.

Top-level shape

Every top-level block is optional except sections. Defaults are shown above.

polling

Adaptive cadence for any per-section poll loop that needs one.
KeyTypeDefaultDescription
interval_idle_msint1500Sleep between polls when the section is idle.
interval_active_msint3000Sleep between polls while the section is doing work.
backoff_max_msint30000Upper bound on exponential backoff after API errors.

concurrency

KeyTypeDefaultDescription
max_agentsint4Maximum number of agent processes the worker runs simultaneously across all sections. Job types that don’t spawn agents ignore this.

agents

A map of agent_type → per-agent settings. Job types that spawn coding agents (currently session_agent_harness) read this block to decide how to launch the agent inside each thread’s work_folder. Supported agent_type values for v1 are claude_code and codex. (A test_double adapter exists for internal testing and is not user-visible.)
KeyTypeDefaultDescription
executablestringclaude (for claude_code); codex (for codex)Command name to resolve on PATH.
modelstringunsetHarness-specific model identifier passed to the agent. Leave unset to use the agent’s own default.
effortstringunsetReasoning effort. Portable values low, medium, high, or any harness-specific passthrough string. Unset = agent default.
permissionsstringapprovalautonomous runs without an approval gate; approval routes sensitive actions to the interactive prompt bridge (a human replies from the web UI), and denies them if no human is reachable.
These settings are the middle tier of a three-tier, per-field resolution: a thread’s own agent.* block (set on the thread session object) overrides the matching agents.<type> key here, which in turn overrides the codebase default. Only permissions has a non-empty codebase default (approval); executable falls back to claude/codex by agent type. For the full precedence rules and the per-thread overrides, see Job Session Object.

sections

A list. Each entry is a unit of work the worker runs. Every section has these generic fields:
KeyTypeRequiredDescription
namestringNoHuman-readable label shown in the dashboard. The default depends on the job type.
job_typestringYesThe job type that handles this section. Must be one of the supported values.
Everything else under a section is determined by its job_type. v1 ships one job type, session_agent_harness, documented below.

session_agent_harness sections

A session_agent_harness section attaches the worker to one BlobHub session and drives a coding agent for each thread session object handed off inside it.
KeyTypeRequiredDescription
namestringNoHuman-readable label shown in the dashboard. Defaults to session_id[:8] when omitted.
job_typestringYesMust be session_agent_harness.
sessionobjectYesThe four ids identifying the BlobHub session: org_id, blob_id, revision_id, session_id. All required.

Full working example

A complete ~/.blobhub-worker/config.yaml with the global blocks set and one session_agent_harness section fully populated.
Save this file at ~/.blobhub-worker/config.yaml, then run:
Once running, prepare a thread session object inside that session and set instance.state = "pending" to hand it off to the worker — see Handoff.

Validation

The configuration is validated on every start, before any section is dispatched.
ErrorCause
INVALID_CONFIGThe file is missing, unreadable, or not valid YAML.
UNKNOWN_JOB_TYPEA section’s job_type is not one of the supported values.
MISSING_SESSION_KEYSA session_agent_harness section’s session block is missing one of the four ids.
DUPLICATE_SECTION_TARGETTwo sections target the same (org_id, blob_id, revision_id, session_id) tuple.
Process-level codes (INVALID_CONFIG, UNKNOWN_JOB_TYPE, MISSING_SESSION_KEYS, DUPLICATE_SECTION_TARGET) and their remediation are catalogued on Reference. Section- and thread-level codes for session_agent_harness are on the Session Agent Harness reference.

See also