Same cust-portal backend, manifold schema + manifold_app_dml role (migrations 098–110). OpenAI-compatible edge mounted at app root /v1 (not /api/v1).
inference_key_service.pymfld_live_v1_<base62><crc32>; only HMAC-SHA256(pepper, raw) stored; capability split (inference vs management); allowed_models + spend_cap_cents scopes; denylist; 30s positive cachemanifold.spend_reservationmanifold.usage_event outboxsha256(org:project:provider_request_id) — the meter-once anchormanifold_relay.pyCreditService.consume_credits (exactly-once), releases reservation, dead-letters partial debitscanonical_model / provider_model / model_routing_logunattributed_usage_alarmPOST /v1/chat/completions → resolve key → (org, project) principal (deny BEFORE provider: 401/403/402/404) → X-Project-Id header | body project_id | key self-scoping (wrong project → 403) → pre-auth hardening: IP/ASN rate limit, disabled-model gate, 402 wallet gate → durable spend_reservation against org wallet → provider call (failover chain) → ONE usage_event outbox row (sha256(org:project:provider_request_id)) → ManifoldRelay → wallet ledger (exactly-once) → release reservation
public edge /v1: models · chat/completions (JSON|SSE) · embeddings · rerank · vision account /v1: credits · key · auth/key · usage · generation management: /api/v1/manifold/keys — create | byok | list | scope | rotate | revoke
manifold_access entitlement gates mint/rotate (fail-closed), not the hot path. manifold_sdk/ defines ports only (BillingPort/MeteringPort) with an isolation guard.