Skip to main content

hgraph-web

C++-first HTTP/S and WebSocket transports for hgraph, implementing the contract in hgraph RFC 0024. The extension covers all four transports — HTTP(S) server, HTTP(S) client, WebSocket server, and WebSocket client — and exposes the same service model to native C++ and Python graphs.

One path-bound, multi-interface service_impl owns the sockets, TLS contexts, and worker threads for a configuration. Serving a route and connecting a WebSocket are subscription services keyed by the immutable route or connection key; responding, sending frames, and calling a remote endpoint are request/reply services; events and statistics are reference services. Graph output reaches the transport through the implementation's sink inputs, and requests, frames, delivery reports, events, and stats re-enter the root graph through bounded push sources. Listeners and clients are created on graph start and stopped with the graph; there is no user-held server or client object.

Routing lives in the transport rather than the graph. The route key set arrives as TSS deltas, is compiled into a native route table, and requests are delivered already keyed by route. Duplicate and ordered headers, multi-value query parameters, and binary bodies are preserved end to end.

The server speaks HTTP/1.1 and WebSocket over Asio/Beast; the client speaks HTTP/1.1, HTTP/2, and WebSocket over libcurl. The server ships the complete HTTP/2 seam — the ALPN callback, protocol dispatch, and configuration placeholders — and rejects h2 in server ALPN until the nghttp2 session lands in a v1.x release. TLS termination, mTLS, SNI, and ALPN use OpenSSL on every platform.

The core hgraph wheel owns a guarded compatibility shim at hgraph.adaptors.web which delegates to this extension when it is installed. The released hgraph.adaptors.tornado package is unchanged; whether it is later re-pointed or deprecated is a separate migration decision. The extension wheel installs only hgraph_web; it never contributes files to the core hgraph package.

Status

This is the packaging and public-header skeleton. The authoring surface — schemas, service interfaces, decorators, and codec helpers — lands with the service implementation; see the implementation plan in RFC 0024.

Build and test

This is a first-party extension in the hgraph monorepo. It remains a separate CMake package and Python distribution: the top-level core package does not link curl, Boost, nghttp2, or OpenSSL, and does not install these modules.

For an in-tree native development build from the repository root:

cmake -S . -B build-web \
  -DHGRAPH_BUILD_WEB_EXTENSION=ON \
  -DBUILD_TESTING=ON
cmake --build build-web --parallel
ctest --test-dir build-web --output-on-failure

The extension can still be configured independently against an installed hgraph SDK:

cmake -S . -B build -DCMAKE_PREFIX_PATH=/path/to/hgraph/install
cmake --build build --parallel
ctest --test-dir build --output-on-failure

Each third-party dependency arrives with the translation unit that links it, resolved with find_package(... CONFIG QUIET) first and falling back to a pinned static FetchContent build. The skeleton links only hgraph::core.

Build its separately deployable ABI3 wheel from the repository root after making the matching hgraph SDK discoverable through CMAKE_PREFIX_PATH:

CMAKE_PREFIX_PATH=/path/to/hgraph/sdk \
  uv build --wheel --package hgraph-web --python 3.12

The deterministic suite runs against the extension's fake transport, which exercises routing, pacing, reservation, and lifecycle without sockets. A live loopback subset acts as the transport oracle.

Wheel builds require the SDK installed by a stable-ABI hgraph wheel. The extension rejects an SDK that links Python::Python, because that would pin the nominal ABI3 module to the build interpreter.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hgraph_web-0.8.20.tar.gz (200.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

hgraph_web-0.8.20-cp312-abi3-win_amd64.whl (3.6 MB view details)

Uploaded CPython 3.12+Windows x86-64

hgraph_web-0.8.20-cp312-abi3-manylinux_2_28_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.28+ x86-64

hgraph_web-0.8.20-cp312-abi3-macosx_15_0_arm64.whl (3.1 MB view details)

Uploaded CPython 3.12+macOS 15.0+ ARM64

File details

Details for the file hgraph_web-0.8.20.tar.gz.

File metadata

  • Download URL: hgraph_web-0.8.20.tar.gz
  • Upload date:
  • Size: 200.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for hgraph_web-0.8.20.tar.gz
Algorithm Hash digest
SHA256 91995a13bb1df8f40e84d81189d69b2c5d1b408594a14c26faf27a693468762d
MD5 0a16b4320955b4b845552eac01edfe83
BLAKE2b-256 dc1d1eb058b323dcc0372b49538bdec010b3a7f971d505204bdbb2003e2f7412

See more details on using hashes here.

Provenance

The following attestation bundles were made for hgraph_web-0.8.20.tar.gz:

Publisher: release-wheels.yml on hhenson/hgraph

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hgraph_web-0.8.20-cp312-abi3-win_amd64.whl.

File metadata

  • Download URL: hgraph_web-0.8.20-cp312-abi3-win_amd64.whl
  • Upload date:
  • Size: 3.6 MB
  • Tags: CPython 3.12+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for hgraph_web-0.8.20-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 21a55d2413683ff4b4eaa7095ec67a866c7d6fb3819f6cc111fb050ad8d7ed01
MD5 5f58a5ec6face74f0c8dab03e460ff16
BLAKE2b-256 79a289031a267415192ad3ea9ea677ec0167b8d8e11662e812e4719c91b7cb6a

See more details on using hashes here.

Provenance

The following attestation bundles were made for hgraph_web-0.8.20-cp312-abi3-win_amd64.whl:

Publisher: release-wheels.yml on hhenson/hgraph

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hgraph_web-0.8.20-cp312-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for hgraph_web-0.8.20-cp312-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6d2ac39dedd6070f30131810e7c9a40c5cdaf6e93160c60eafee12667d77262d
MD5 70eb0eaeee9641e9e89f3e41377addc6
BLAKE2b-256 c2504f19e95c42938c2d7eab32863b85b8c915ebceeb0cf9a4ac3b96ce0247b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for hgraph_web-0.8.20-cp312-abi3-manylinux_2_28_x86_64.whl:

Publisher: release-wheels.yml on hhenson/hgraph

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hgraph_web-0.8.20-cp312-abi3-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for hgraph_web-0.8.20-cp312-abi3-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 d287d4c7b2fd07bb7b590d5701631e6a1a51d04f6938355f359c080681716605
MD5 f6201aa79005fc9a57aa4c649195185b
BLAKE2b-256 ec2bb263c6da3ca157e2abf5044ff53a56ec3ccdbca10d75b615e7d2183d8fb6

See more details on using hashes here.

Provenance

The following attestation bundles were made for hgraph_web-0.8.20-cp312-abi3-macosx_15_0_arm64.whl:

Publisher: release-wheels.yml on hhenson/hgraph

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.8.22

4 files

0.8.21

4 files

This release

0.8.20 This release

4 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