Transport / unmounted service

Preview

HTTP multi-drive API

The HTTP service exposes named mount-rs drives without creating a kernel mount. It is the cleanest boundary for containers, remote clients, and environments where FUSE/NFS/FSKit are unavailable.

Platform requirements

Any platform that can run the CLI/service and an HTTP client can use the mount-free API. The default listener is loopback with bounded requests and an ephemeral port; deployments binding beyond loopback need an authenticated TLS boundary.

Mount vs mount-free

There is no FUSE, NFS, 9P, or FSKit mount. Each named drive retains its own FsDriver, stable ID, and bearer token; the API maps HTTP verbs to filesystem operations and one-byte-range reads.

Preview — scoped evidence

Loopback service with bearer isolation, ranges, streaming, reopen, and bounded health/readiness probes; a hosted all-features HTTP/OTLP gate now passes, while deployment hardening remains the caller’s job. Local HTTP/CLI checks cover bearer isolation, streamed reads/writes, ranges, truncate, concurrent writes, restart/reopen, and cleanup. The optional mount-rs-observability seam can attach a caller-owned telemetry handle throughHttpServerOptions::with_telemetry; the OTLP variant accepts only W3C trace propagation and emits bounded operation metadata without paths, tokens, file contents, block IDs, or arbitrary headers. The macOS arm64 W30.5 loopback collector test now receives non-empty/v1/traces, /v1/metrics, and/v1/logs payloads without raw path bytes, and the HTTP observability integration gate recorded 7 passes. Hosted CI run35599817215, source b26819e, also passed the all-features HTTP health/readiness, telemetry/OTLP, and strict-Clippy job 106333141914. This is hosted exporter-path and contract evidence only: deployed collector reachability, provider- aware readiness, dashboards, paging, SLOs, and production hardening remain open.

What the transport exposes

/v1/drives lists authorized drives; fs routes read/write/remove paths; entries lists directories; and bounded JSON operations cover mkdir, rename, truncate, and sync. Unknown drives and invalid tokens fail closed.

Run the local unmounted service with owned tokens

Evidence-oriented check
MOUNT_RS_MEMORY_TOKEN=demo-memory   MOUNT_RS_SQLITE_TOKEN=demo-sqlite   cargo run --locked -p mount-rs-cli -- serve-http   --config apps/mount-rs-cli/examples/config-http.json

curl -H 'Authorization: Bearer demo-memory'   http://127.0.0.1:PORT/v1/drives/memory/entries/

Safe use and lifecycle

Keep bearer tokens in environment variables or a secret manager, never JSON or source. Put a TLS/authenticated reverse proxy in front of a non-loopback listener and bound request/chunk sizes to the deployment.

Current limitations

PUT is a bounded streaming write, not an atomic publish; a disconnect can leave a partial file. Distributed caching and cross-process version coordination are outside this slice. The local demo does not prove internet-facing deployment security.

← Back to transports