JobCache perspectives — hosts, packages and deployment

JobCache is one product with an observer-private App zone and a shared Core zone. App API, MCP, UI, status, ops, QA and wiki are peer perspectives; “Core” is a concern boundary, not a third product or public perspective.

Status: App UI, API and MCP are live Cloudflare Workers. App state is in the separate EU jobcache-app D1; UI and MCP reach App through private Worker service bindings. Core runs at a protected Alwaysdata origin with a scoped Crate runtime principal. OpenTofu owns all three public domains, D1 and the Core site.

Perspective Package Host Runtime state Access
App API @cv/jobcache-api api.jobcache.corbet.ch live Cloudflare Worker + five-minute erasure trigger public reads + opaque session capabilities
App MCP @cv/jobcache-mcp mcp.jobcache.corbet.ch live Cloudflare Worker, service-bound to App public thin peer; no Core bearer
App UI @cv/jobcache-ui jobcache.corbet.ch live Cloudflare Worker, service-bound to App public
Core facade @cv/jobcache-interface richc.alwaysdata.net/core protected Alwaysdata Node 24 program protected Core operations plus compatibility reads
wiki @cv/jobcache-wiki wiki.jobcache.corbet.ch Cloudflare Worker public
ops · ui/api/mcp @cv/jobcache-ops-{ui,api,mcp} {,api.,mcp.}ops.jobcache.corbet.ch Cloudflare Workers operator-private
qa · ui/api/mcp @cv/jobcache-qa-{ui,api,mcp} {,api.,mcp.}qa.jobcache.corbet.ch Cloudflare Workers QA-private
status · ui/api/mcp @cv/jobcache-status-{ui,api,mcp} {,api.,mcp.}status.jobcache.corbet.ch Cloudflare Workers public projection

jobcache/ingest/ is compute, not a web perspective. It has no App hostname and does not own session identity.

Deployment invariants

  • jobcache/api/ alone owns session_id, its inverse observer map and App D1 state.
  • jobcache/mcp/ calls only App API routes and never holds a Core or App-control bearer.
  • jobcache/interface/ is the Core corpus facade. Legacy Crate-backed App session routes have been removed and return 404.
  • Core receives only strict public lookup input, purpose-scoped pseudonyms or proven thresholded anonymous aggregates; it never receives a JobCache session capability.
  • App UI uses the same API and shared family shell. Core compatibility reads are not the place to add new session features.

The exact privacy and runtime split is defined by JobCache Architecture.

Source: wiki/content/architecture/JOBCACHE-PERSPECTIVES.md