Starter app is about 300 lines and MIT licensed. It streams Claude over server-sent events with URLSession, handles photo input, keeps the API keys, and stores the API keys in Keychain. SwiftChat itself is free to use.
The hardest part was probably scroll view management. The view has to reserve space underneath the question so the answer can stream in, like you would expect. Also, new words have a nice animation like the Siri app.
Here's a video. https://unionst.com/swiftchat/assistant/