Relay Chat keeps model integration outside the interface.
ChatStoreowns a versioned conversation snapshot and notifies subscribers.ChatSessioncreates turns and consumesChatTransportchunks.- Transports connect either in-process model code or an external JSON Lines command.
- The Ink application renders store state and forwards user actions to the session.
- Persistence utilities save the same conversation record without depending on the interface.
This separation lets an application replace the model adapter, persistence policy, or individual interface components without copying the rest of the client.
Agent runs and tools are deferred. A later package can introduce those event types without weakening the chat transport or presenting unfinished approval controls here.