Volter World

Twins / OpenAI / 3.0.3

@volter/twin-openai

OpenAI

volter-aiVolter maintainedSelected defaultv3.0.3

Local OpenAI Responses, Chat Completions and tool-use workflows. Replies use configured scenarios or labeled deterministic stubs; no model runs.

The example uses OpenAI 3.0.3. Keep its dependency pins when following it.

Setup gives the current installation instructions for @volter/twin-openai 3.0.3. Open the published README for credentials, seeds, supported operations and limits.

README shipped with @volter/twin-openai 3.0.3

These instructions were published with this package. Their tool versions may differ from the current starter cohort. Use Setup to install this version.

A local OpenAI API. It serves the calls the applications make (journeys/demand.json):

Use with an existing app

Use Node 22.6 or newer.

In an app that already uses this vendor, install this exact release and the product CLI:

npm install --save-dev --save-exact @volter/world@3.0.147 @volter/twin-openai@3.0.3
./node_modules/.bin/volter world init --name my-app --twins openai --source openai=@volter/twin-openai

Run the local executable from this app’s folder; if it is missing, complete the installation here before continuing.

Review the detected vendor and generated bindings before booting. Read the credential names and limitations below; the World supplies throwaway credentials. Then run your app's own command through the World:

./node_modules/.bin/volter world up
./node_modules/.bin/volter world run -- npm test
./node_modules/.bin/volter world log
./node_modules/.bin/volter world down

Here npm test is your app's existing command; replace it with your app or test command. down retains state. A later up resumes it; do not reset or initialize again merely to return.

Publisher and catalog contribution instructions: the public publisher guide.

  • the Responses API (Twenty, Rallly, Postiz and LibreChat, through the AI SDK's OpenAI provider and the openai SDK);
  • Chat Completions (Workbench's agent, the on-call cookbook, Postiz, LibreChat), the models list, Files, Images (generations and edits), moderations, transcriptions and text to speech;
  • LibreChat's Assistants v2: assistants, threads, messages, runs and their steps and tool outputs.

Around it are the dashboard pages (platform.openai.com: the log in and a project's API keys). The twin runs no model: a turn is the World's scenario's, else a deterministic stub labeled [twin-stub:<model>].

A Protocol 3 pack (publisher guide). Its surface is generated from OpenAI's published OpenAPI document (spec/). The derived core serves plain reads and writes. Handlers are in src/semantics/<family>.ts, the scenario adapter in src/semantics/scenario.ts, and pages in src/screens.

world-openai serve [--port N] [--root DIR] [--read-only]

What it models

  • Keys:
    • A project key is made on the project's API keys page (shown once, held by its SHA-256), or issued to a World's applications by the credential door.
    • A request with no key, or one the organization never made, is refused 401 invalid_api_key. So is a revoked key, or one of an archived project.
  • Responses:
    • POST /v1/responses, streamed (named events, ending with response.completed) or not.
    • Function tools the stub calls while no tool output is pending; previous_response_id carrying the conversation.
    • Structured output (text.format with a JSON schema) the stub answers with a value the schema admits.
  • Chat Completions: the answer or its chat.completion.chunk stream ending with [DONE], and tool calls.
  • Assistants v2:
    • A run is worked when a read first looks at it.
    • A run with function tools stops at requires_action for their outputs, then completes with a stub reply. A run in flight can be cancelled. A run still waiting on its outputs at its expires_at, ten minutes after it was created, expires and refuses them.
    • The thread's messages and the run's steps are kept.
  • Files: uploaded (multipart), read, downloaded, deleted. Missing locally held bytes are refused; refreshed file metadata does not supply content.
  • Images: POST /v1/images/generations and POST /v1/images/edits answer a labeled placeholder image. DALL-E default URLs serve those bytes through the media lane for 60 minutes.
  • Moderations: POST /v1/moderations classifies each input deterministically: text naming a category's own words is flagged in it, with its categories and scores; no model runs.
  • Speech: POST /v1/audio/speech answers an audio file in the format asked (mp3 unless named), billed by the characters it reads.
  • Transcriptions: POST /v1/audio/transcriptions answers a labeled stub transcript, with the WAV duration from its header; other formats use a synthetic one-second duration.
  • Models: a static catalog.
  • Realtime: wss://api.openai.com/v1/realtime (Volter Harness's voice): every client event the reference lists: the session, the input audio buffer (append, commit, clear; no speech is detected in it), conversation items (create, retrieve, truncate, delete) and responses as events; output_audio_buffer.clear, WebRTC's and SIP's, is refused on the WebSocket. A response is the World's scenario's turn, else the labeled stub, spoken as silence with its transcript.

The subscription surface serves Open Autonomy, RH2, Browser Substrate and Volter Harness. On auth.openai.com it supplies browser consent with localhost callback, state and S256 PKCE, device user-code polling, authorization-code exchange, refresh and revocation. On chatgpt.com/backend-api/codex it serves Responses over HTTP/SSE and WebSocket, compaction and per-account model discovery. The native TUI’s /backend-api/wham usage, token activity, workspace-message and reset-credit views use a synthetic Plus account with no purchased credits. Account limits and expiry are explicit local policy where the private documentation gives no number. HTTP and socket model turns use configured scenarios or labeled deterministic stubs.

Doors

  • POST /_twin/accounts {email, name, password, role?}: a person of the World's organization, who logs in to the dashboard.
  • POST /_twin/app-credentials: the Default project and a key for it, as the runtime issues them to a World's applications. It also issues the World’s synthetic subscription account and signed tokens; CODEX_HOME is filled with a private directory containing Codex’s auth.json and file-storage config. The hosted browser/device pages accept the door’s codex_email and codex_password. No production account or key is used.

Not yet

Embeddings, fine-tuning, batches, uploads, evals, containers and the Admin API answer the documented gap. Vector stores supply the empty store and its readbacks that the published file-search examples require; the twin performs no embedding or retrieval. Stored chat completions and Responses support their published readbacks. The dashboard is limited to credential issuance; model calls are the product surface.

Undemanded private cloud tasks, remote configuration, account checks and workspace policy settings answer HTTP 404 in the pinned client’s accepted error envelope. Native cloud commands, remote control and experimental voice/plugin flows are outside these products’ configured subscription runtime; independently demanded REST and Realtime calls are described above.

Set up this release

The example uses OpenAI 3.0.3. Keep its dependency pins when following it.

For a complete example, follow Run a tool and stream its result. It includes the application code and its own exact dependency pins.

For a broader workflow, see Scripted answer and one-time refusal. Keep that example’s own dependency pins.

Use Node 22.6 or newer. Install this exact starter cohort in your app folder:

npm install --save-dev --save-exact @volter/world@3.0.158 @volter/world-core@3.0.148 @volter/world-runtime@3.0.156 @volter/world-console@3.0.149 @volter/twin-openai@3.0.3

In your app’s folder, initialize a World with this implementation:

./node_modules/.bin/volter world init --name my-app --twins openai --source openai=@volter/twin-openai

Review the detected vendor and retain the generated bindings. The openai service’s source must select this version:

{
  "source": {
    "package": "@volter/twin-openai",
    "version": "3.0.3"
  }
}

This is the source field, not a complete config. Keep the installed version, lockfile and generated service source in agreement. Use the release README for throwaway SDK credentials, seeds and limits.

The assessment records its own earlier tool versions under Measurements. This setup uses the current starter cohort.

Run your app’s own test command inside the World:

./node_modules/.bin/volter world up
./node_modules/.bin/volter world run -- npm test
./node_modules/.bin/volter world log
./node_modules/.bin/volter world down

down stops compute and retains state.

Versions and implementations

Package / versionPublisherStatusFirst use
@volter/twin-openai3.0.3volter-aiSelected defaultPassed
@volter/twin-openai3.0.2volter-ailiveNot measured

Evidence for 3.0.3

Installed first use · Passed
Installed first use
Passed
Fresh app installation
Verified
Workflow scope
Exact installed artifact; normal CLI initialization, unchanged SDK, result assertions and retained-state read-only resume where applicable
Customer SDK versions
openai@7.28.0
CLI, kernel and runtime versions
@volter/world@3.0.147 · @volter/world-core@3.0.147 · @volter/world-runtime@3.0.147
World clock
{"mode":"wall"}
Retained-state readback
Not applicable: This workflow requests an unstored completion and stream; it creates no vendor resource to read after restart.
Stopped compute
Verified
Customer journey failures
0
API coverage, replay and browser measurements

Counts describe the declared HTTP surface, not separate command tables or other protocols. Consult the release README for those workflows.

Assessment scope
packaged-customer-journey; in-process
Declared HTTP surface
60 served · 313 gaps · 373 declared operations
Exercised HTTP operation coverage
41 / 373 declared operations (11%)
Journey steps
150 answered / 175 steps
Replay
Equal across 2 runs
Journey failures
0
Browser target
Not measured
HTTP operations exercised through Chromium
Not measured
Chromium journey replay
Not measured
Browser response observation
Not recorded
Application-origin CORS coverage
Not measured
Native cookie-jar coverage
Not measured
DOM coverage
Not measured
Source code coverage
Not measured
State transition coverage
Not measured
Operations not exercised
  • openai/codex:wham.accounts_send_add_credits_nudge_email
  • openai/codex:wham.config_bundle
  • openai/codex:wham.create_task
  • openai/codex:wham.settings_user
  • openai/codex:wham.tasks
  • openai/codex:wham.tasks_list
  • openai/codex:wham.tasks_turns_sibling_turns
  • openai:CancelChatSessionMethod
  • openai:Compactconversation
  • openai:CreateChatSessionMethod
  • openai:CreateContainer
  • openai:CreateContainerFile
  • openai:CreateSkill
  • openai:CreateSkillVersion
  • openai:CreateVideoCharacter
  • openai:CreateVideoEdit
  • openai:CreateVideoExtend
  • openai:CreateVideoRemix
  • openai:CreateWebhookEndpoint
  • openai:CreateanAPIkeyforaserviceaccount
  • openai:Createanexternalstorageconfiguration
  • openai:Createcontentprovenancecheck
  • openai:DeleteContainer
  • openai:DeleteContainerFile
  • openai:DeleteSkill
  • openai:DeleteSkillVersion
  • openai:DeleteThreadMethod
  • openai:DeleteVideo
  • openai:DeleteWebhookEndpoint
  • openai:Deleteanexternalstorageconfiguration
  • openai:Deleteorganizationspendlimit
  • openai:Deleteprojectspendlimit
  • openai:GetSkill
  • openai:GetSkillContent
  • openai:GetSkillVersion
  • openai:GetSkillVersionContent
  • openai:GetThreadMethod
  • openai:GetVideo
  • openai:GetVideoCharacter
  • openai:Getanexternalstorageconfiguration
  • openai:Getinputtokencounts
  • openai:Getorganizationspendlimit
  • openai:Getprojectsafetyalert
  • openai:Getprojectspendlimit
  • openai:Getsafetycase
  • openai:ListContainerFiles
  • openai:ListContainers
  • openai:ListSkillVersions
  • openai:ListSkills
  • openai:ListThreadItemsMethod
  • openai:ListThreadsMethod
  • openai:ListVideos
  • openai:ListWebhookEndpoints
  • openai:ListWebhookEventTypes
  • openai:Listexternalstorageconfigurations
  • openai:RetrieveContainer
  • openai:RetrieveContainerFile
  • openai:RetrieveContainerFileContent
  • openai:RetrieveVideoContent
  • openai:RetrieveWebhookEndpoint
  • openai:RotateWebhookEndpointSigningSecret
  • openai:TestWebhookEndpoint
  • openai:UpdateSkillDefaultVersion
  • openai:UpdateWebhookEndpoint
  • openai:Updateorganizationspendlimit
  • openai:Updateprojectspendlimit
  • openai:Validateanexternalstorageconfiguration
  • openai:accept-live-session
  • openai:accept-realtime-call
  • openai:activateOrganizationCertificates
  • openai:activateProjectCertificates
  • openai:add-group-user
  • openai:add-project-group
  • openai:addUploadPart
  • openai:admin-api-keys-create
  • openai:admin-api-keys-delete
  • openai:admin-api-keys-get
  • openai:admin-api-keys-list
  • openai:archive-project
  • openai:assign-group-role
  • openai:assign-project-group-role
  • openai:assign-project-user-role
  • openai:assign-user-role
  • openai:beta_Compactconversation
  • openai:beta_Getinputtokencounts
  • openai:beta_cancelResponse
  • openai:beta_createResponse
  • openai:beta_deleteResponse
  • openai:beta_getResponse
  • openai:beta_listInputItems
  • openai:cancelBatch
  • openai:cancelEvalRun
  • openai:cancelFineTuningJob
  • openai:cancelUpload
  • openai:cancelVectorStoreFileBatch
  • openai:completeUpload
  • openai:create-group
  • openai:create-live
  • openai:create-organization-spend-alert
  • openai:create-project
  • openai:create-project-role
  • openai:create-project-service-account
  • openai:create-project-spend-alert
  • openai:create-project-user
  • openai:create-realtime-call
  • openai:create-realtime-client-secret
  • openai:create-realtime-session
  • openai:create-realtime-transcription-session
  • openai:create-realtime-translation-client-secret
  • openai:create-role
  • openai:createAgent
  • openai:createAgentEnvironmentFile
  • openai:createAgentEnvironmentTemplate
  • openai:createAgentSession
  • openai:createAgentSessionEvents
  • openai:createBatch
  • openai:createCompletion
  • openai:createConversation
  • openai:createConversationItems
  • openai:createEmbedding
  • openai:createEval
  • openai:createEvalRun
  • openai:createFineTuningCheckpointPermission
  • openai:createFineTuningJob
  • openai:createImageVariation
  • openai:createThreadAndRun
  • openai:createTranslation
  • openai:createUpload
  • openai:createVault
  • openai:createVaultCredential
  • openai:createVectorStore
  • openai:createVectorStoreFile
  • openai:createVectorStoreFileBatch
  • openai:createVideo
  • openai:createVoice
  • openai:createVoiceConsent
  • openai:deactivateOrganizationCertificates
  • openai:deactivateProjectCertificates
  • openai:delete-group
  • openai:delete-invite
  • openai:delete-organization-spend-alert
  • openai:delete-project-api-key
  • openai:delete-project-model-permissions
  • openai:delete-project-role
  • openai:delete-project-service-account
  • openai:delete-project-spend-alert
  • openai:delete-project-user
  • openai:delete-role
  • openai:delete-user
  • openai:deleteAgent
  • openai:deleteAgentEnvironmentTemplate
  • openai:deleteAgentSession
  • openai:deleteAgentSessionArtifact
  • openai:deleteAssistant
  • openai:deleteCertificate
  • openai:deleteChatCompletion
  • openai:deleteConversation
  • openai:deleteConversationItem
  • openai:deleteEval
  • openai:deleteEvalRun
  • openai:deleteFineTuningCheckpointPermission
  • openai:deleteMessage
  • openai:deleteModel
  • openai:deleteResponse
  • openai:deleteVault
  • openai:deleteVaultCredential
  • openai:deleteVectorStore
  • openai:deleteVectorStoreFile
  • openai:deleteVoiceConsent
  • openai:download-live-recording
  • openai:downloadFile
  • openai:fork-live-session
  • openai:getCertificate
  • openai:getChatCompletion
  • openai:getChatCompletionMessages
  • openai:getConversation
  • openai:getConversationItem
  • openai:getEval
  • openai:getEvalRun
  • openai:getEvalRunOutputItem
  • openai:getEvalRunOutputItems
  • openai:getEvalRuns
  • openai:getRunStep
  • openai:getThread
  • openai:getVectorStore
  • openai:getVectorStoreFile
  • openai:getVectorStoreFileBatch
  • openai:getVoiceConsent
  • openai:hangup-live-session
  • openai:hangup-realtime-call
  • openai:inviteUser
  • openai:list-audit-logs
  • openai:list-group-role-assignments
  • openai:list-group-users
  • openai:list-groups
  • openai:list-invites
  • openai:list-organization-spend-alerts
  • openai:list-project-api-keys
  • openai:list-project-group-role-assignments
  • openai:list-project-groups
  • openai:list-project-rate-limits
  • openai:list-project-roles
  • openai:list-project-service-accounts
  • openai:list-project-spend-alerts
  • openai:list-project-user-role-assignments
  • openai:list-project-users
  • openai:list-projects
  • openai:list-roles
  • openai:list-user-role-assignments
  • openai:list-users
  • openai:listAgentEnvironmentFiles
  • openai:listAgentEnvironmentTemplates
  • openai:listAgentSessionArtifacts
  • openai:listAgentSessionEvents
  • openai:listAgentSessionItems
  • openai:listAgentSessionSubagentItems
  • openai:listAgentSessionSubagentTurnItems
  • openai:listAgentSessionSubagentTurns
  • openai:listAgentSessionSubagents
  • openai:listAgentSessionTurns
  • openai:listAgentSessions
  • openai:listAgents
  • openai:listBatches
  • openai:listChatCompletions
  • openai:listConversationItems
  • openai:listEvals
  • openai:listFiles
  • openai:listFilesInVectorStoreBatch
  • openai:listFineTuningCheckpointPermissions
  • openai:listFineTuningEvents
  • openai:listFineTuningJobCheckpoints
  • openai:listInputItems
  • openai:listOrganizationCertificates
  • openai:listPaginatedFineTuningJobs
  • openai:listProjectCertificates
  • openai:listRuns
  • openai:listVaultCredentials
  • openai:listVaults
  • openai:listVectorStoreFiles
  • openai:listVectorStores
  • openai:listVoiceConsents
  • openai:modify-project
  • openai:modify-project-user
  • openai:modify-user
  • openai:modifyCertificate
  • openai:modifyRun
  • openai:modifyThread
  • openai:modifyVectorStore
  • openai:pauseFineTuningJob
  • openai:refer-live-session
  • openai:refer-realtime-call
  • openai:reject-live-session
  • openai:reject-realtime-call
  • openai:remove-group-user
  • openai:remove-project-group
  • openai:resumeFineTuningJob
  • openai:retrieve-group
  • openai:retrieve-group-role
  • openai:retrieve-group-user
  • openai:retrieve-invite
  • openai:retrieve-organization-data-retention
  • openai:retrieve-organization-spend-alert
  • openai:retrieve-project
  • openai:retrieve-project-api-key
  • openai:retrieve-project-data-retention
  • openai:retrieve-project-group
  • openai:retrieve-project-group-role
  • openai:retrieve-project-hosted-tool-permissions
  • openai:retrieve-project-model-permissions
  • openai:retrieve-project-role
  • openai:retrieve-project-service-account
  • openai:retrieve-project-spend-alert
  • openai:retrieve-project-user
  • openai:retrieve-project-user-role
  • openai:retrieve-role
  • openai:retrieve-user
  • openai:retrieve-user-role
  • openai:retrieveAgent
  • openai:retrieveAgentEnvironment
  • openai:retrieveAgentEnvironmentTemplate
  • openai:retrieveAgentSession
  • openai:retrieveAgentSessionArtifact
  • openai:retrieveAgentSessionArtifactContent
  • openai:retrieveAgentSessionSubagent
  • openai:retrieveAgentSessionSubagentTurn
  • openai:retrieveAgentSessionTurn
  • openai:retrieveBatch
  • openai:retrieveFile
  • openai:retrieveFineTuningJob
  • openai:retrieveModel
  • openai:retrieveVault
  • openai:retrieveVaultCredential
  • openai:retrieveVectorStoreFileContent
  • openai:rotateVaultCredential
  • openai:runGrader
  • openai:searchVectorStore
  • openai:unassign-group-role
  • openai:unassign-project-group-role
  • openai:unassign-project-user-role
  • openai:unassign-user-role
  • openai:update-group
  • openai:update-organization-data-retention
  • openai:update-organization-spend-alert
  • openai:update-project-data-retention
  • openai:update-project-hosted-tool-permissions
  • openai:update-project-model-permissions
  • openai:update-project-rate-limits
  • openai:update-project-role
  • openai:update-project-service-account
  • openai:update-project-spend-alert
  • openai:update-role
  • openai:updateAgent
  • openai:updateAgentEnvironmentTemplate
  • openai:updateAgentSession
  • openai:updateChatCompletion
  • openai:updateConversation
  • openai:updateEval
  • openai:updateVectorStoreFileAttributes
  • openai:updateVoiceConsent
  • openai:uploadCertificate
  • openai:usage-audio-speeches
  • openai:usage-audio-transcriptions
  • openai:usage-code-interpreter-sessions
  • openai:usage-completions
  • openai:usage-costs
  • openai:usage-embeddings
  • openai:usage-file-search-calls
  • openai:usage-images
  • openai:usage-moderations
  • openai:usage-vector-stores
  • openai:usage-web-search-calls
  • openai:validateGrader
Conformance results
  • decided: 0 failures · every served operation is decided with its demand; every demanded and every refreshed operation is served
  • published: 0 failures · what a release publishes holds every unit: its manifest, its spec and its journeys
  • cited: 0 failures · every vendor fact cited is recorded as a page that answered, each quote found on it
  • refresh: 0 failures · every stored resource of a vendor-backed unit declares how it is read back, and a unit that sends events ingests the vendor's
  • registered: 0 failures · a vendor-backed unit, lane or not, reaches the registered pack's state system
  • allowance: 0 failures · a rate budget above the fallback rests on the vendor's documented allowance, cited in its manifest
  • client: 0 failures · driven by the vendor's own client (its official SDK), served as a World runs it, the vendor's documented behaviour holds · 5 case(s) through the vendor's client
  • life: 0 failures · the life walked over HTTP against the pack served as a World runs it, with its scenario: every check held
  • standalone: 0 failures · served by its server.ts as a World runs it, the pack answers HTTP and the boot probe, and each declared socket upgrades
Publisher, admission and provenance
Source commit
7d221ec6209fe08ccdfc4909e3f2d348eba91447
Catalog record commit
fb77a946981be1832ff85a1484625f5990625657
Package integrity
sha512-mESE509bpr3Ecpur+NEq/7s78qUa8aI4W0DV/M3EGkWNBKBNi6cH7CZ/+/rY9OmAtG9dsReAzVOww9uXxeqkKQ==
Admission mode
Trusted internal publisher · maintainer merge
Catalog assessment
Bundled report checksum verified
Assessed at
Not recorded
Assessment input head
68f8d7e7602a621cfebc07cd64035e69640648b7

Read the catalog snapshot

Catalog snapshot · @volter/twin-catalog@0.2.62
Source commit
2d891e44624083a0ee54c058f1a566f050f38f1e
Catalog digest
72cc7d129522aaa089c84552b9d0839ab4cb0924ee7bd56ab359f827cddaa258
Installer integrity
sha512-MelxBw6h8W8k67EMu7SlYXOPwg8Z0QVcpDNKEcMzB8gH4v0JfYK2vuL7WdXNY1epjPZqxyK/5pEvDCiRqU0nAA==

Snapshot identity and measurements