How macpaw/openai works
This is a Swift client SDK for OpenAI-compatible APIs, with a small SwiftUI demo. The principal workflow is: an application configures the SDK, invokes an API capability with a typed query, and receives a decoded result or streamed events through async, closure-based, or Combine interfaces. The README documents broad API coverage; the sampled source confirms request building, middleware interception, transport, and streaming behavior. Endpoint-to-request wiring is not fully sampled, so the graph leaves that internal connection unspecified.
Main entry points: AsyncClient.swift Async transport · StreamingClient.swift Streaming transport · URLRequestBuildable.swift Request building · OpenAIProtocol.swift Client protocols
Components 21
SDK entry
- OpenAI client
Sources/OpenAI/OpenAI.swift - Client protocols
Sources/OpenAI/Public/Protocols/OpenAIProtocol.swift - Client interfaces
Sources/OpenAI/OpenAI+OpenAIAsync.swift
API capabilities
- Text and chat
Sources/OpenAI/Public/Models/ChatQuery.swift - Responses API
Sources/OpenAI/Public/Models/Responses API/CreateModelResponseQuery.swift - Tools and functions
Sources/OpenAI/Public/Models/Responses API/CreateModelResponseQuery.swift - Image generation
Sources/OpenAI/Public/Models/ImageEditsQuery.swift - Audio APIs
Sources/OpenAI/Public/Models/AudioTranscriptionQuery.swift - Assistants and runs
Sources/OpenAI/Public/Models/AssistantsQuery.swift - Other APIs
Sources/OpenAI/Public/Models/EmbeddingsQuery.swift
Request transport
- Request building
Sources/OpenAI/Private/URLRequestBuildable.swift - Async transport
Sources/OpenAI/Private/Client/AsyncClient.swift - Closure transport
Sources/OpenAI/Private/Client/Client.swift - Combine transport
Sources/OpenAI/Private/Client/CombineClient.swift - Middleware
Sources/OpenAI/Public/Protocols/OpenAIMiddleware.swift - Streaming transport
Sources/OpenAI/Private/Client/StreamingClient.swift
Results and streams
- Response handling
Sources/OpenAI/Private/URLResponseHandler.swift - Stream interpreters
Sources/OpenAI/Private/Streaming/ServerSentEventsStreamInterpreter.swift - Typed results
Sources/OpenAI/Public/Models/Responses API/ResponseObject.swift
Other components
- Application
- URLSession
Connections 22
- Application → OpenAI client: configures and calls
- OpenAI client → Client protocols: exposes
- Application → Client protocols: invokes API
- Client protocols → Client interfaces: offers interfaces
- Application → Text and chat: supplies query
- Application → Responses API: supplies query
- Application → Tools and functions: configures tools
- Application → Image generation: supplies query
- Application → Audio APIs: supplies query
- Application → Assistants and runs: supplies query
- Application → Other APIs: supplies query
- Async transport → Request building: builds request
- Async transport → Middleware: intercepts request
- Async transport → URLSession: sends request
- Async transport → Response handling: decodes response
- Closure transport → Request building: builds request
- Combine transport → Request building: builds request
- Streaming transport → Request building: builds request
- Streaming transport → Middleware: intercepts request
- Streaming transport → URLSession: opens stream
- Streaming transport → Stream interpreters: interprets events
- Response handling → Typed results: decodes into