Offline banner (is it my network?)
A slim amber bar across the top of the app when your computer loses its internet connection, so a failing session or a stalled sync reads as your network rather than Omniscio. Always on with no setting, it clears itself on reconnect — and while it is up your sessions hold quietly instead of burning retries.
What it is
What it is
A thin banner across the top of the app that appears when your computer loses its internet connection, so you know a failing session or a stalled sync is your network — not Omniscio. It is always on; there is no setting to configure.
This is the counterpart the Anthropic outage alerts monitor defers to: that monitor watches Anthropic's status page and never alerts about the status page being unreachable, because an unreachable status page just means your connection is down — which is the offline banner's job to show.
Where to find it
The top of the app window. The banner is automatic and always on — there is no setting, no menu and no control surface for it.
How it behaves
What you see
- When you go offline, a slim amber bar slides in at the top of the window with a Wi-Fi-off icon and the message "You are offline. Some features are unavailable."
- The bar clears itself the moment your connection returns.
- A brief blip does not flash the banner: it appears only after you have been offline continuously for ~5 seconds, so a one-second drop while switching networks never shows it.
How it works (under the hood)
- A main-process connectivity service (connectivity-service.ts) polls Electron's
net.isOnline()on a self-rescheduling timer — every 10 s while online, tightened to every 2 s while offline so a restored network is detected within ~2 s rather than lagging a full interval. - On a transition it emits a single
NETWORK_STATUS_CHANGEDpush ({ online }); the renderer'suseAppNetworkStatushook updates the connectivity store, anduseOfflineBannerGateapplies the ~5 s debounce before the banner inAppBannersrenders. - The poll loop is fully fail-safe: a throw in a listener or in
net.isOnline()can never stop the reschedule, so the offline/online signal — and every isOnline()-gated poller downstream — keeps recovering.
While you're offline, your sessions wait instead of burning retries
The same connectivity signal also pauses the automatic session-retry engines while you're offline, so a dropped connection no longer makes Omniscio hammer the Claude API with retries that can't possibly succeed:
- A session that hits an API error while offline holds quietly — it stays green (not "Needs you") with a one-line "No internet connection — will retry automatically when you're back online. No action needed." note — instead of burning through its ~5 silent paid retries, and it sends a single "continue" the moment you reconnect.
- The background stuck-session recovery sweep stops re-driving failed sessions while offline: no wasted respawns, and nothing is pushed toward "given up" for a transient outage. It resumes on its own within ~90 s of your connection returning.
- Both read the same online/offline verdict above —
isOnline(), which folds Electron's link signal together with a shared reachability probe (viashouldDeferRetryWhileOffline()in connectivity-service.ts) — and revert instantly withAMC_DISABLE_OFFLINE_RETRY_GATE=1. This covers a genuine loss of internet, and also a link that is up while name resolution is dead; a link that is up and resolving but cannot reach the API (an Anthropic outage) is still handled by the normal bounded retries + the Anthropic outage alerts.
For agents
CLI access
The offline banner is a passive, automatic indicator with no user actions and no CLI control surface — there is nothing to trigger or configure over the control server. An external agent that needs the online/offline signal reads it indirectly (the same net.isOnline() check drives session-spawn and poller gating).
Related
Related
- Anthropic outage alerts — the sibling monitor that watches Anthropic's status page and hands the "is it my network?" question to this banner.
Last verified 2026-10-06