The Big Picture
BlobHub is organized into three layers: client surfaces users and applications talk to, a unified platform core that stores and versions everything, and specialized Blob Type engines that run on top of the core.Client Surfaces
BlobHub exposes the same platform through several complementary entry points:- Web Application (blobhub.io) — visual management, interactive workflow playground, real-time monitoring.
- Python SDK (
pip install blobhub) — a thin, idiomatic wrapper around the REST API for use in scripts, applications, and notebooks. - Your Application — any HTTP client in any language, using the REST and WebSocket APIs directly.
The API Layer
The API layer is split by interaction style, not by resource type.REST API
The REST API is the primary programmatic surface. It is request/response, versioned under/v1/, and organized around the core primitives — Users, Organizations, Blobs, Revisions, Metadata,
API Keys, Members, Credentials, and Operations — plus Blob-type-specific endpoints for Workflow, Scheduler,
and ONNX.
Use it for everything that maps naturally onto “read / write / list / delete this resource”.
WebSocket API
The WebSocket API is the real-time surface. Clients open a single authenticated connection and subscribe to event streams — Workflow Execution Events, Session Events, state changes — which would be expensive or impossible to poll. Use it when you need to react to platform events as they happen.Platform Core
Underneath both APIs is a single platform core that implements the primitives shared by every Blob Type:- Organizations and Access Control — the container and permission boundary for everything else. Members, API Keys, and Credentials all attach here.
- Blobs and Revisions — typed, versioned objects and their Draft → Commit → Snapshot lifecycle.
- Metadata and Operations — key/value records on Blobs and Revisions, plus the uniform Operations interface for tracking asynchronous work.
Blob Type Engines
Sitting on top of the platform core are the specialized engines that give each Blob Type its behavior:| Engine | What it runs | Key primitives |
|---|---|---|
| Workflow | Component-based executable graphs | Definition, Session, Execution, Execution Events |
| Scheduler | Time-based triggers for Workflow Executions | Schedule (one-time or cron), Execution history |
| ONNX | ML model hosting | Multipart upload, describe, presigned download |
How a Request Flows
A typical “run a workflow” request exercises every layer in the stack:- Your application calls the REST API to start an Execution.
- The platform core authorizes the request against the Organization, Blob, and caller’s API Key.
- The Workflow engine picks up the Execution and begins running components.
- Execution Events are emitted to the WebSocket API.
- Your application — already subscribed — receives the live stream of events.
Design Principles
A few principles shape the architecture and are worth keeping in mind when you design against BlobHub:- One primitive, many engines. Every Blob Type reuses the same versioning, access control, and metadata machinery. You should not need a different mental model per type.
- Versioned by default. Every change to a Blob produces a Revision. There is no “save” that silently overwrites history.
- Programmable end-to-end. Every UI action maps to a REST call. Anything you can click, you can script.
- Real-time where it matters. Long-running and event-heavy interactions are surfaced over WebSocket so that clients never have to poll for what is essentially a push problem.
Next Steps
Concepts
The primitives the architecture is built around.
Quickstart
Exercise the full stack end-to-end in a few minutes.
REST API
The request/response surface of the platform.
WebSocket API
The real-time event stream surface.

