Skip to content

Chat Connection States

Pinchy tracks the health of the agent connection in real time so you always know what's happening — and what to do if something goes wrong.

StateIndicatorWhat it means
StartingYellowPinchy is loading your conversation history.
ReadyGreenThe agent is available and waiting for your message.
RespondingGreenThe agent is generating a reply. You can still type.
UnavailableRed or YellowThe agent can't be reached right now.
Chat didn't loadRedYour conversation history didn't arrive in time.
Image too largeRedAn attachment you tried to send exceeds the size cap.

When an attachment is rejected, the indicator reads Image too large and a banner asks you to send a smaller file before you can keep chatting.

When the state is Unavailable, the indicator and status message explain why:

  • Disconnected (red): The connection dropped. Pinchy is trying to reconnect automatically.
  • Configuring (yellow): You recently changed agent settings. Pinchy is applying the changes and will be ready in a moment.
  • Exhausted (red): Reconnection attempts failed. You need to reload the page to resume.
  • Chat didn't load (red): Your conversation history didn't arrive within 20 seconds. See below.

Opening a chat starts with one request: Pinchy asks the server for your conversation history and shows the Starting state until it arrives. That request has a deadline. If nothing comes back within 20 seconds — a dropped connection, a mobile device waking from sleep with a socket that quietly died — Pinchy stops waiting instead of leaving you on a loading indicator.

Two things happen at once. Pinchy reconnects by itself and asks again, which fixes the common case without you doing anything. And the chat tells you what's going on, with a Try again button that reconnects on demand. Whichever gets there first wins: as soon as your history arrives, the message disappears and the conversation is back.

You never have to reload the page to get out of this state.

When the agent runtime becomes reachable again — whether after a network drop or after a settings change — Pinchy automatically requests the latest conversation history and resumes where it left off. No reload needed.

Your chats stay in sync across your devices

Section titled “Your chats stay in sync across your devices”

Open the same chat on your phone and your computer, and both stay current. Send a message on one, and it appears on the other in real time — no reload needed. A message that arrives from a connected channel like Telegram shows up in the web chat live, too.

This works out of the box. There's nothing to switch on.

The live update itself carries no message content — only a small signal that the chat changed. Your device then fetches the new messages over the same secure, permission-checked connection it always uses, so a conversation is only ever delivered to the person it belongs to.

Pinchy waits 2 seconds before showing the Disconnected state. During those 2 seconds the interface stays in its previous state (Ready or Responding) so short network hiccups are absorbed silently without disrupting your flow.

You can type your next message while the agent is still generating a reply. Only the Send button and the Retry button are disabled during a response — the text input stays active so you can prepare follow-up questions.

When the model itself is the problem — not the connection — Pinchy shows a dedicated model-unavailable bubble in the chat thread. This is distinct from the connection-state indicators above: the agent runtime is reachable, but the upstream provider returned a server error (HTTP 5xx) that signals the model is offline or discontinued.

The bubble shows the affected agent name, the model identifier, and a plain-English explanation. A Switch model → link takes you straight to the agent's model settings so you can pick a replacement without leaving the chat.

See Manage LLM Providers — Model-unavailable errors for step-by-step instructions and the list of removed models.

When you send a message and move to a different page in Pinchy, the chat keeps running in the background. Come back any time during the same browser session and the in-flight reply is right there — no reload, no lost output. A pulse dot next to the agent name in the sidebar shows when an agent is actively responding; a red dot indicates an error on the last turn.

A full page reload does not lose the reply either. Pinchy re-attaches the reloaded chat to the in-flight run through its stable session key, so any output that arrived while the page was reloading still lands in the same bubble and streaming continues. Only a restart of the Pinchy server drops in-flight runs.

An unsent message you've typed is kept too. Each chat holds its own draft, so a message you start in one chat never appears in another — and your typed text is waiting where you left it when you return, even after a full page reload or closing and reopening the tab. Sending the message clears the draft; so does deleting the text yourself.

Clicking an agent in the sidebar reopens the chat you last had open with that agent on this device, rather than starting from the oldest one. The first time you open an agent on a new device, Pinchy takes you to your most recent conversation with it.

Some agent errors are only temporary — the model provider is rate-limiting requests, is overloaded, timed out, or is briefly unavailable. Others are lasting but fixable — the model your agent was pinned to has been retired by its provider, or the provider account needs attention (an invalid API key, depleted credit, or an exhausted quota). Either way, when one interrupts a run the chat shows an error bubble that names the actual cause (we don't label everything a "rate limit") — and for a retired model it tells you which model went away and where to choose a new one.

That bubble lives in the conversation, so a reload — or a reconnect during a long tool loop — would normally lose it, leaving you unsure whether anything went wrong. Pinchy keeps it instead. The error re-surfaces as a paused banner above the message composer when you come back, with the same cause-specific explanation. From there you decide: Retry resends your last message, or Dismiss clears the banner once you've moved on. A lasting problem's banner stays until you fix the cause or dismiss it, and clears itself automatically as soon as a message goes through again.

The banner is scoped to you and the agent you're chatting with, so you only ever see the error that's actually yours. Dismissing it clears it for good — it won't reappear on the next reload.

A single response can't run forever. A server-side watchdog caps each run at about 15 minutes of wall-clock time. If a reply hasn't finished by then, Pinchy aborts it and shows a "timed out after 15m — please retry" error bubble with a Retry button so you can send the same message again.

This cap is independent of the connection-state indicator above: the connection can be perfectly healthy and the agent still hit the limit on a genuinely long task. The timeout is per response, not per conversation — retrying starts a fresh run with the full 15-minute budget.


See also: Message Delivery & Retry for how to recover from failed messages.