Admission and async inference
InferCrane applies endpoint admission before an inference request reaches a runtime. Policies are loaded from PostgreSQL into an in-memory snapshot, so the request path never waits on a database.Retry semantics
Retries are intentionally narrow. InferCrane retries only buffered requests to InferCrane-managed capacity, up to the persisted endpoint budget, for connection failures and HTTP502, 503 or
504. It never automatically retries streaming requests or paid external fallback. Attempts retain
one request ID and expose X-InferCrane-Attempt to the runtime.
Durable async requests
Create a protocol-native request file:request.json
Content and keys
Async mode is disabled until the control plane receives an encryption key of at least 32 bytes:store_encrypted_content: true. Payloads and results use AES-256-GCM with the
tenant and job identity as associated data. Plaintext is never written to PostgreSQL. Losing or
rotating a key without retaining the previous key makes existing results unreadable; production key
rotation therefore requires an operator-managed overlap procedure.
Signed completion webhook
InferCrane-Timestamp and
InferCrane-Signature: v1=<hmac-sha256>. Delivery has at most three attempts. The outbound transport
rejects redirects and private, loopback, link-local and multicast addresses after DNS resolution.
Current limits
- Queue order is priority then creation time; it is not a general scheduler.
- Results are limited to 32 MiB.
- Async streaming is not exposed; use synchronous streaming when incremental tokens matter.
- Cross-key decryption and automatic key re-encryption are not currently implemented.