Stream as it happens
Read token by token over websockets, so the answer becomes useful before the model has finished writing it.
cloakchat keeps your model, transcript, and unfinished thought in one place. Start with the right model, watch the answer arrive, and return without losing the thread.
Here's a clean starting point — a Livewire component that persists the message, dispatches a queued generation job, and listens for streamed chunks:
class ChatStream extends Component { public function send(): void { Message::create(['conversation_id' => $this->conversation->id, …]); GenerateAssistantResponse::dispatch(); } }
Want me to walk through resumable streams next, or flesh out the model picker?
Choose the model for the work
Why it holds together
The useful part is not another model list. It is the thread: the answer arriving, the branch you kept, and the work that is still there when you come back.
Read token by token over websockets, so the answer becomes useful before the model has finished writing it.
Close the tab and generation keeps running server-side. Return to the same conversation without reconstructing your context.
Edit a prompt, regenerate a reply, and move between alternatives without losing the path that got you there.
Search the web when context is missing, or attach images and documents when the work is already on your desk.
Plans
Every plan includes the same streaming workspace. Higher tiers give the work more tokens, models, and headroom.
Self-hosted & enterprise? We can build a custom setup for your team. Get in touch.
Keep the thread
Create a free account and start streaming in under a minute. No credit card, no configuration.