cuweb / C-utils

About the origin.

A deliberately narrow HTTP server: static representations, a loopback listener, and explicit boundaries. The surrounding delivery system is a separate concern.

What cuweb does

cuweb is a C-utils example built with Dependable C89. The Linux implementation uses private nonblocking epoll I/O and the library’s strict memory-backed HTTP parser. One event owner handles connections.

In static-root mode, files are loaded before readiness and remain immutable while the process runs. GET selects a representation; HEAD sends the corresponding headers without a body. Trailing-slash paths select index.html, so /about/ is a nested static page, not a dynamic route.

Static responses carry strong SHA-256 ETags and Cache-Control: public, max-age=0, must-revalidate. cuweb matches exact strong tags, not weak tags. A matching GET or HEAD condition returns 304 without a body.

A release, not
a live directory

The operator provides a trusted release directory. The loader rejects symlinks, hidden entries, unsupported names and special files. A directory changing during preload is not an atomic or coherent release snapshot.

Publish a new release directory, then restart. After readiness, changes and deletions on disk do not change the served bytes. There are no directory listings and no request-time disk reads.

For a local build from the repository root:

make -C examples/cuweb
examples/cuweb/build/default/cuweb \
  --port 8080 --root examples/cuweb/site

Then open http://127.0.0.1:8080/. These commands start a local origin, not a public HTTPS deployment.

What it does
not do

There is no TLS, HTTP/2, HTTP/3, proxying, upload handling or dynamic backend in cuweb. It binds IPv4 loopback only. Requests with bodies are unsupported.

Request heads are deliberately bounded. The public edge must forward minimal origin headers, not unfiltered browser headers. An oversized direct-browser request can be rejected with 431.

The proposed public path uses Cloudflare for DNS and CloudFront for HTTPS, followed by a restricted HTTP origin entry and loopback forwarding. This is not end-to-end TLS. Origin access restrictions and header forwarding need independent infrastructure verification.

No capacity result, historical coverage figure or static review is presented here as qualification of this site, a security guarantee or a public performance promise.

Inspect the pieces

/health is a small health response, not a comprehensive service assessment. /architecture.json is authored static data describing the intended architecture, not live status or discovered infrastructure.

The home-page inspector can issue GET, HEAD and conditional asset requests. A browser or edge cache can affect what you observe. For implementation details and test instructions, consult examples/cuweb/README.md in your C-utils checkout.

Return to the request path