Skip to main content

blobhub-worker

External worker process that runs coding agents (Claude Code, Codex) against BlobHub session threads. It connects to api.blobhub.io over HTTPS + WebSocket, attaches to one or more sessions, and drives the configured agent through each thread's conversation — posting agent emissions back as thread items in real time.

Install

pipx install blobhub-worker

Requires Python 3.12+.

Use

blobhub-worker login                      # stores a profile; --api-key-stdin and --no-input make it scriptable
blobhub-worker start                      # run headless (structured JSON logs, for systemd/containers)
blobhub-worker start --tui                # run with the live Textual dashboard
blobhub-worker whoami                     # which credential a start would use, and where its state lives
blobhub-worker profile ls                 # stored profiles, annotated with this machine's worker state
blobhub-worker instance ls                # every worker state tree on this machine, and its state
blobhub-worker instance show <selector>   # one instance in depth: identity, config, sections, threads
blobhub-worker instance stop <selector>   # SIGTERM, wait, --force escalates to SIGKILL

A <selector> is an instance id (or a unique prefix of one), a profile name, key:<digest>, or a pid.

Global flags, matching blobhub: --json (machine-readable output, accepted at the root or on the subcommand), -v/--verbose (extra diagnostic detail on stderr), -q/--quiet (suppress advisory warnings), --version.

Profiles

A profile is an API key, its API URL, and an optional realtime WebSocket URL, kept in ~/.blobhub/credentials.yaml — the same file blobhub-cli reads and writes, so one login serves both. Select one with --profile, BLOBHUB_PROFILE, or the file's default:; --api-key / BLOBHUB_API_KEY, --api-url / BLOBHUB_API_URL, and --realtime-url / BLOBHUB_REALTIME_URL each outrank it, exactly as in the CLI.

login itself can also run non-interactively and still store a validated profile:

printf '%s' "$API_KEY" | blobhub-worker login --profile ci --api-key-stdin --api-url https://api.blobhub.io/v1

--api-key, --api-url and --realtime-url each accept a literal, --*-stdin (at most one flag per invocation may read stdin), or --*-env VAR naming an environment variable to read from; --no-input fails instead of prompting when a value has no source. Prefer --api-key-stdin over a literal --api-key, which stays visible in ps and shell history.

Each profile also owns a state tree — its own config.yaml, identity.yaml, jobs/ cursors, logs and single-instance lock — so several workers run side by side on one machine, one per profile:

blobhub-worker start --profile prod &
blobhub-worker start --profile staging &     # different tree, different lock, different sessions

A tree is named after wherever its key came from: ~/.blobhub-worker/profiles/<name>/ for a stored profile, ~/.blobhub-worker/keys/<digest>/ for a key supplied by flag or environment. Two credentials therefore never share one. Run blobhub-worker whoami to see which tree a given invocation resolves to — you need that path to author its config.yaml, and a key-derived one cannot be guessed.

Upgrading from a pre-profiles install migrates automatically on first login or start: the flat ~/.blobhub-worker/ files move into profiles/default/ and the credential moves into the shared store.

Configure the sections you want the worker to attach to in that tree's config.yaml. See the documentation for the config schema and the per-section / per-thread state files written alongside it.

The worker executes coding agents per thread metadata; see AGENTS.md "Trust boundary" for the autonomous/approval security model and the agents config keys (executable, model, effort, permissions).

What it does

  • Attaches to BlobHub sessions, claiming a per-session worker object owned by your user.
  • Polls session events; for each thread it discovers, drives a turn loop that coalesces user messages, runs one agent turn at a time, and posts the agent's emissions back as thread items.
  • Supports interactive prompts: when the agent asks a question, the worker posts a pending_prompt item; the user replies with plain text and the worker resolves the answer to the agent.
  • Resumes cleanly after a worker restart (replays missed items, cancels stale prompts).

License

MIT. See LICENSE.

Metadata

Release files for blobhub-worker 0.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for blobhub-worker 0.9.0
File Size Uploaded
blobhub_worker-0.9.0.tar.gz 189.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for blobhub-worker 0.9.0
File Interpreter ABI Platform
blobhub_worker-0.9.0-py3-none-any.whl Python 3 none any Details

Total release size: 423.3 kB

Release files / blobhub_worker-0.9.0.tar.gz

Download URL blobhub_worker-0.9.0.tar.gz
Size 189.3 kB
Tags Source
SHA-256 checksum
How to use checksums
aea14ec79395e1965273fad6c7d5e3bb42fbfbef11ea13dbb13ba4d711cd6917
BLAKE2b-256 checksum
How to use checksums
aa1246e84e2901787608434df9527d340aa06e67e6cfa4073858753b841aac26
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.

Transparency log

Release files / blobhub_worker-0.9.0-py3-none-any.whl

Download URL blobhub_worker-0.9.0-py3-none-any.whl
Size 234.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b6b30248f326c0bd83466b72167d4414de5e525225022b159e1ef61422463e77
BLAKE2b-256 checksum
How to use checksums
404fd1a4f512763119f75c1c9f8452e66145b5acb3d1752d7add9d4c643e44b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.

Transparency log

Release history Release notifications | RSS feed

0.10.0

2 release files

This release

0.9.0 This release

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page