Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.blobhub.io/llms.txt

Use this file to discover all available pages before exploring further.

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

polling:
  interval_idle_ms: 1500
  interval_active_ms: 3000
  backoff_max_ms: 30000

concurrency:
  max_agents: 4

agents:
  claude_code:
    executable: claude            # default: "claude" for claude_code, "codex" for codex
    model: claude-sonnet-4-6       # harness-specific string; default unset
    effort: high                  # low|medium|high (portable) or a passthrough value; default unset
    permissions: approval         # autonomous|approval; default approval

sections:
  - name: backend-feature         # optional label
    job_type: session_agent_harness
    session:
      org_id: org_01J...
      blob_id: blb_01J...
      revision_id: rev_01J...
      session_id: ses_01J...
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.)
agents:
  claude_code:
    executable: claude
    model: claude-sonnet-4-6
    effort: high
    permissions: approval
  codex:
    executable: codex
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.
- name: my-project                     # optional; defaults to session_id[:8]
  job_type: session_agent_harness
  session:
    org_id: org_01J...
    blob_id: blb_01J...
    revision_id: rev_01J...
    session_id: ses_01J...
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.
polling:
  interval_idle_ms: 1500
  interval_active_ms: 3000
  backoff_max_ms: 30000

concurrency:
  max_agents: 2

agents:
  claude_code:
    executable: claude
    model: claude-sonnet-4-6
    effort: high
    permissions: approval

sections:
  - name: backend-feature
    job_type: session_agent_harness
    session:
      org_id: org_01J3X4M5N6P7Q8R9S0T1U2V3W4
      blob_id: blb_01J4P5Q6R7S8T9U0V1W2X3Y4Z5
      revision_id: rev_01J7K8L9M0N1P2Q3R4S5T6U7V8
      session_id: ses_01J9R0S1T2U3V4W5X6Y7Z8A9B0
Save this file at ~/.blobhub-worker/config.yaml, then run:
blobhub-worker login           # one-time
blobhub-worker start --tui
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