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.
blobhub-worker start loads the configuration, runs preflight checks, and runs each configured
section. The per-section behavior — what the worker does once it’s attached — is determined by
the section’s job_type.
Synopsis
| Flag | Default | Description |
|---|---|---|
--tui | off (headless) | Render the live Textual dashboard. Press q to request graceful shutdown. |
tmux. With --tui, those
same JSON lines are redirected to a file at ~/.blobhub-worker/logs/{instance_id}/worker.jsonl
(append mode, line-buffered) so the dashboard has the terminal to itself; stderr is silenced while
the dashboard runs. Log rotation is not implemented in v1.
Preflight
Before any section is contacted,start runs the following checks in order. A failure here exits
the process with a clear code; nothing on the server is touched.
credentials.yamlexists and is mode0600— elseCREDENTIALS_NOT_FOUND/INSECURE_CREDENTIALS_PERMISSIONS.identity.yamlexists — elseIDENTITY_NOT_FOUND(runlogin).- Single-instance lock acquired at
~/.blobhub-worker/instance.yaml(atomicO_EXCL; a stale file with a dead PID is replaced) — elseWORKER_ALREADY_RUNNING. - Identity check:
GET /v1/users/mere-validates the API key and confirms the server-sideuser_idmatches the recorded one — elseAUTH_INVALID/USER_IDENTITY_MISMATCH. config.yamlloaded and validated — elseINVALID_CONFIG. Each section’sjob_typeis dispatched to the corresponding job-type validator, which may surface additional codes (e.g.UNKNOWN_JOB_TYPE, or job-type-specific section errors).
config.yaml schema and
Reference for process-level remediation.
Per-section behavior
For each configured section the worker dispatches to the section’sjob_type. The runtime
behavior — what gets attached, what gets polled, what gets posted — is documented on the
corresponding job-type page:
session_agent_harness→ Overview.
Shutdown
SIGINT (Ctrl-C) and SIGTERM trigger a graceful shutdown:
- Stop accepting new events.
- Ask each running section to drain — the per-job-type teardown is documented on the corresponding job-type page.
- Remove
instance.yamland exit 0.
SIGKILL skips the graceful path; the next start will replace the stale instance.yaml and run
each job type’s recovery routine.
In --tui mode, pressing q triggers the same graceful shutdown.
Exit codes
start exits non-zero on any preflight failure, on any unhandled fatal error, and on user-requested
shutdown after surfacing the cause. Diagnostic detail is emitted to the structured log stream
(stderr by default; the worker.jsonl file under --tui) as a worker_exit JSON record.
Full code catalog: Reference.

