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 in ~/.blobhub/credentials.yaml
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
Profiles
A profile is a named API key plus the API URL it belongs to, 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 and --api-url / BLOBHUB_API_URL outrank it, exactly as in the CLI.
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
workerobject 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_promptitem; 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.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file blobhub_worker-0.5.0.tar.gz.
File metadata
- Download URL: blobhub_worker-0.5.0.tar.gz
- Upload date:
- Size: 98.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ae1e84709abbeabb2bc9f97c05c8d63d25acc7a712edeb53ab37ee2c0742fab
|
|
| MD5 |
4bf676f014c7814d084cc7fc3e48a9b3
|
|
| BLAKE2b-256 |
639f07581ad6d4ca22cff705fd280234b82bae9e7b1061d7f1d6544921d3c5e4
|
Provenance
The following attestation bundles were made for blobhub_worker-0.5.0.tar.gz:
Publisher:
publish.yml on blobhubio/blobhub-worker
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
blobhub_worker-0.5.0.tar.gz -
Subject digest:
9ae1e84709abbeabb2bc9f97c05c8d63d25acc7a712edeb53ab37ee2c0742fab - Sigstore transparency entry: 2386920178
- Sigstore integration time:
-
Permalink:
blobhubio/blobhub-worker@22174b123b3fdc621e59d0123f4c785ebd46ed08 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/blobhubio
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@22174b123b3fdc621e59d0123f4c785ebd46ed08 -
Trigger Event:
push
-
Statement type:
File details
Details for the file blobhub_worker-0.5.0-py3-none-any.whl.
File metadata
- Download URL: blobhub_worker-0.5.0-py3-none-any.whl
- Upload date:
- Size: 131.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc63719040e2c25a4e6afc30bbcacaf81880bed86ada804bb9874a62271f07c6
|
|
| MD5 |
fbbc6414e5b4514b0495a34d206db571
|
|
| BLAKE2b-256 |
d298a73b313f851ea71724c4150f093dae1f68c4828b05004cf63c9c1ef9c705
|
Provenance
The following attestation bundles were made for blobhub_worker-0.5.0-py3-none-any.whl:
Publisher:
publish.yml on blobhubio/blobhub-worker
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
blobhub_worker-0.5.0-py3-none-any.whl -
Subject digest:
cc63719040e2c25a4e6afc30bbcacaf81880bed86ada804bb9874a62271f07c6 - Sigstore transparency entry: 2386920184
- Sigstore integration time:
-
Permalink:
blobhubio/blobhub-worker@22174b123b3fdc621e59d0123f4c785ebd46ed08 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/blobhubio
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@22174b123b3fdc621e59d0123f4c785ebd46ed08 -
Trigger Event:
push
-
Statement type: