Inference

One abstraction for chat, audio, images and video

Build assistants, semantic search, voice features, and image and video generation through OA. Each task connects to a compatible model provider. Applications specify where execution is allowed; the service manages provider connections and credentials.

your applicationchat · audio · image · video
native OA call
OA inference servicerights · routing · budgets
local engineremote runtimehosted API

Current status. Current source implements all six modality profiles and the operator profile with controlled integration evidence. The generated schemas linked below and the standalone inference repository are the public technical surface. The loopback gateway and Realtime vendor connector now live in the Go adapter module in the integration source; the core module owns policy and service behavior. Provider interoperability and release qualification vary. Use Coverage for measured language and platform results; profile presence on a host is explicit and may cover only part of this family.

Choose by result

Chat, audio, images and durable video generation

Six service profiles cover chat, embeddings, transcription, speech, live voice and images. Video generation uses a durable inference job: submit a prompt and duration, follow progress, then retrieve the generated clip. A configured provider must support the requested task. See how video jobs survive interruptions.

01

Chat

abstraction.inference/chat@1

Stream an assistant answer, tool call, or structured response. Messages can contain text, tool results, and authorized image digests for a vision-capable host.

You Summarize the error in this screenshot.

Model The build stopped because… streaming

Use it for assistants, coding help, classification, and tool-driven workflows.

Chat schema and methods

02

Embeddings

abstraction.inference/embed@1

Convert up to a bounded batch of texts into numeric vectors in one call. Inputs and vectors remain absent from the inference audit.

“bike repair”chainworkshoptireweather

Use it for semantic search, retrieval, clustering, and similarity.

Embedder schema and method

03

Transcription

abstraction.inference/transcription@1

Turn stored audio into ordered text segments or words with millisecond timestamps. The request names an authorized content digest.

“Open the project settings.”

Use it for meeting notes, subtitles, searchable recordings, and voice commands.

Transcription schema and methods

04

Speech

abstraction.inference/speech@1

Stream synthesized audio from bounded text, then receive a digest-addressed final delivery whose bytes the client can verify.

“Your export is ready.”▶ 2.8 s

Use it for spoken notifications, narration, accessibility, and voice responses.

Speech schema and methods

05

Live voice

abstraction.inference/live@1

Send ordered PCM audio frames, commit the input turn, and observe transcript and audio output for one final response.

  1. Append frames 0…n
  2. Commit finish input
  3. Observe one response

Use it for push-to-talk commands and one-turn voice interactions. A conversation creates a new session for each response. A program that speaks OpenAI's Realtime API reaches the same session through GET /v1/realtime on the gateway window.

Live schema and methods · Realtime route

06

Images

abstraction.inference/image@1 · image@2

Generate an image from a prompt or edit an authorized image and mask. Image@1 names an explicit model. Image@2 also accepts a saved selection policy. Progress and ordered results lead to typed content deliveries.

“blueprint of a garden studio”
PNGsha256:9a7…

Use it for concept art, variations, masked edits, and generated assets.

A policy is managed through selection-operator@2 for a program in the bound account. A candidate may pin a current logical provider declaration; managing another program requires a separate grant.

Image@1 schema · Image@2 schema · Policy operator schema

Three cooperating abstractions

Model lookup, routing, and inference answer different questions

What is this model?

Model

Resolves a portable registry and repository reference into a manifest. The manifest can describe files, revisions, and how content is obtained.

abstraction.model/resolver@1Model catalogue entry

Where can it run?

Router

Lists eligible models and hosts, then picks a host that matches the model, modality, guarantees, and placement.

abstraction.router/router@1Router schema

How does this call run?

Inference

Checks admission, rights, content, capacity, credentials, and budget. It owns the upstream request and returns the modality result.

abstraction.inference/*@1Inference schema

An application can use Model without running inference, and it can request inference with a model name already known to its workflow. The runtime composes the three when a call needs all of them.

Execution boundary

The application stays on local IPC while execution placement changes

local

Resident host

A model engine on the receiving machine performs the call. local-only@1 constrains selection to this placement.

remote

Remote runtime

The local OA service relays to a declared, mutually trusted runtime. The selected binding records remote execution.

hosted

Hosted API

hosted-allowed@1 lets the router consider a configured hosted provider after eligible local hosts.

Vendor keys, base URLs, and request headers remain inside the service. Hosted credentials are named in requests and applied inside the receiving service. A remote runtime resolves digest references from its own authorized content store. Digest transfer between stores remains future work.

Pick the lifetime

Interactive streams and durable batches solve different interruptions

Bounded operationseconds to an active session

Chat, transcription, speech, live, and image profiles

Start returns an operation. Observe reads retained deltas from a cursor. Cancel explicitly stops the operation.

012…end
  • A disconnected observer can reconnect while its retained window remains.
  • An idle operation closes when nobody observes it.
  • A cursor older than retained deltas returns gap.
Durable jobsurvives caller and service restart

Asynchronous image and video batches

The application encodes the generated inference job request and submits it through abstraction.job/acceptance@1.

request identity→receipt→observe / reconcile
  • The receipt retains the original owner and guarantees.
  • A lost submission reply is reconciled with the same request identity.
  • Result documents carry authorized content references.

Inference job schema · Operation recovery reference

Operator control

Providers can change while accepted work keeps its owner

readystudio-gpuchat · embed · image
readyspeech-servicetranscription · speech
idlehosted-providerchat · image · credential: team-ai

Future resolutions see the new configuration

An authorized operator can list, add, and remove hosts, inspect profile readiness and current credential spend, issue local gateway keys, and read the inference audit.

Removing a host leaves already admitted operations running to their defined end. Provider declaration and generation pinning prevent an existing binding from silently becoming a different provider.

Each host advertises specific profiles. A chat-only provider remains chat-only.

Operator schema and methods · Identity and rights reference

Developer API

Resolve a typed client, then use the modality lifecycle

Go · chat client shape
machine := facade.Discover()
chat, err := machine.ResolveInference(ctx, facade.Requirements{
    Scope: facade.ScopeLocal,
})

// Complete is Stream's non-streaming twin, observing a call to its
// end and folding the deltas into one reply.
reply, err := chat.Complete(ctx, wire.Request{
    Model: model,
    Messages: messages,
    Guarantees: []wire.RequestGuarantee{wire.RequestGuaranteeLocalOnly},
})

The facade currently exposes direct resolvers for chat, embeddings, and inference operator control. Generated modality clients bind transcription, speech, live, and image service endpoints.

ChatStart · Observe · CancelGo helpers: Stream, Complete
EmbeddingsEmbedGo helper: Vectors
TranscriptionStart · Observe · CancelGo helper: Transcribe
SpeechStart · Observe · CancelGo helper: Synthesize
LiveStart · Append · Commit · Observe · CancelOne committed turn per session
ImageStart · Observe · CancelGo helper: Generate

Every streaming profile uses bounded pages, opaque operation identifiers, caller-scoped visibility, explicit cancellation, and typed terminal outcomes. The developer reference lists the profiles beside their entry points.

The loopback window

Nine OpenAI- and Anthropic-shaped routes, one contract underneath

A program that only knows a base URL and an API key reaches the same rights decision and audit as the native route. The window listens on loopback only and is closed by default.

RouteCarriesContract rule
POST /v1/chat/completionsOpenAI chat, including tool calls and streamingINF-W1 – W7
POST /v1/messagesAnthropic messagesINF-W1 – W7
GET /v1/modelsThe bound key's eligible modelsINF-W1 – W5
POST /v1/embeddingsEmbedding vectorsINF-W1 – W7
POST /v1/audio/transcriptionsAudio to textINF-W1 – W7
POST /v1/audio/speechText to audioINF-W1 – W7
POST /v1/images/generationsImage generationINF-W1 – W7
POST /v1/images/editsAuthorized image editsINF-W1 – W7
GET /v1/realtimeOne live@1 session per WebSocket connection, PCM16 at 24000 HzINF-W8

On the Realtime route, abstraction.inference/complete on the host the named model routes to is decided for the bound program before the WebSocket upgrade completes; a refusal is answered with the same status the other eight routes use, on the unupgraded connection. Every refusal after the upgrade is one error event, then the close.

A native provider, activated on first use

A declared native abstraction.inference/chat@1 provider with an explicit model allowlist — the model host is one — becomes a mediated local resolver candidate after the runtime's own, reached through the same generated client as any other host. Resolve itself never blocks: the first mediated call that needs an on-demand provider waits for its readiness inside the caller's own deadline, and never longer than the runtime's launch budget of 30 seconds. A caller whose deadline passes first reads unavailable with reason activating:<name>; the launch continues, and the next call finds the provider ready or refused with its reason.

Adoption choice

Choose the smallest surface that matches the application

Your application needsStart withPlan for
A complete text answerResolveInference + CompleteTyped refusals, host permission, model eligibility
Incremental text or tool callsStream or Start/ObserveCursor gaps and cancellation when iteration ends
Semantic vectorsResolveEmbeddings + EmbedInput count, dimensions, and provider support
Audio or image contentStorage content writer/reader plus the modality clientDigest authorization, media bounds, output delivery
One push-to-talk responseLive.Start/Append/Commit/ObservePCM format, frame sequence, one response session
Work that must survive process exitGenerated inference job request through JobsPersist request identity and receipt before waiting
An OpenAI- or Anthropic-compatible programOperator-managed loopback gateway windowProgram-bound local key, explicit host rights, supported route subset

Generated records establish the API shape. Current platform, language, provider, and packaging evidence remains in Coverage. The catalogue entry records the inference layer alongside its dependencies.