Reviewing Your AI Agents Offline
amux v0.9.200 caches every running session’s scrollback locally in your PWA, so you can review your full agent fleet without any internet connection — on a plane, subway, or anywhere signal drops out. Updated July 2026.
Why Offline Matters for AI Engineering Teams
Running an AI engineering team means your agents are always working, but you’re not always online. The morning commute, a trans-continental flight, a conference with spotty wifi, a walk between buildings — these are the moments when you most want to check what your overnight agents accomplished. Before amux v0.9.200, every one of these gaps meant opening your laptop, SSH-ing in, and running tmux attach — which required a working network connection.
The amux offline scrollback cache changes that. Every session’s terminal output is written to local IndexedDB the moment you view it while online. When you go offline, the full history is already on your device. No server needed to read what your agents did. The dashboard behaves identically, just with a last-synced timestamp instead of a live stream.
This pairs with the rest of the phone-first amux stack: you can read what your agents did (scrollback cache), review the task board (kanban cached locally), check what’s blocked or completed (stalled badge), and write your next instruction (offline outbox) — all without a connection, and all from your phone.
What Works Offline vs Online-Only
| Action | Offline | Online | Notes |
|---|---|---|---|
| Read session scrollback | ✓ | ✓ | Offline shows last-cached snapshot; online shows live stream |
| View kanban board and task statuses | ✓ | ✓ | Board state cached from last sync |
| Read notes and reference docs | ✓ | ✓ | Notes cached in PWA service worker cache |
| Check stalled/active session badges | ✓ | ✓ | Stalled Nm badge visible from last sync |
| Queue messages (offline outbox) | ✓ | ✓ | Queued in IndexedDB, auto-delivered on reconnect |
| Receive live scrollback updates | ✗ | ✓ | SSE live stream requires server connection |
| Start or stop sessions | ✗ | ✓ | Lifecycle control requires server |
| Deliver messages immediately | ✗ | ✓ | Messages queue offline; delivered when signal returns |
| Use voice dictation | ~ | ✓ | Record while offline; Gemini transcription queues until reconnect |
How the Scrollback Cache Works
The amux dashboard uses IndexedDB, the browser’s built-in structured storage, to persist session scrollback locally. Here’s the data flow:
- Write on view: When you open a session’s Peek panel while online, the current scrollback buffer is written to IndexedDB under that session’s ID. This happens immediately, in the background, without any loading indicator.
- Cache survives backgrounding: Unlike session storage (which clears when the tab is suspended), IndexedDB persists across background eviction, device lock, and app restarts on both iOS and Android.
- Served from cache when offline: When the dashboard detects no server connection, it reads scrollback from IndexedDB and renders it exactly as it would render live output — same Peek panel, same formatting, same syntax highlighting for code blocks.
- Auto-sync on reconnect: The moment the SSE connection re-establishes, the dashboard fetches fresh scrollback and writes it back to IndexedDB. The offline snapshot is replaced without any manual refresh.
The cache size is bounded by the session’s scrollback buffer (typically the last few thousand lines of output). It does not store the full JSONL conversation history — only the rendered terminal output you would see in the Peek panel.
Setup Guide
No configuration is needed — offline scrollback caching is on by default in amux v0.9.200 and later. The steps below ensure you have the best offline experience before you need it.
Step 1: Install amux
# Homebrew (recommended — macOS/Linux)
brew install mixpeek/amux/amux
amux serve # → dashboard at https://localhost:8822
# PyPI
pipx install amux && amux serve
# Zero-install trial
uvx amux serve
Step 2: Install the PWA on your phone
The offline cache only works in the installed PWA or iOS app — it does not apply to a regular browser tab that gets closed. Install steps:
- iOS Safari: Open your amux dashboard URL → tap the Share button → Add to Home Screen. The PWA installs in standalone mode (full screen, no Safari chrome).
- Android Chrome: Open the dashboard → tap the three-dot menu → Add to Home Screen (or “Install App” if the banner appears).
- Native iOS app: Download from the App Store — includes the same offline cache behavior plus native push notifications for stalled sessions.
Step 3: Prime the cache before you go offline
Open each session’s Peek panel once while you have signal. The scrollback writes to IndexedDB in the background. A quick pass through the Sessions tab — tap each card to open Peek, let it load, move to the next — takes about 30 seconds for a fleet of 10 agents and leaves you with a full offline snapshot of every session.
For automated priming, schedule a daily amux scheduler job that opens and polls each session while your device is on wifi overnight.
Step 4: Use the dashboard offline
When signal drops, the dashboard shows a small offline indicator in the header. All previously-cached sessions remain fully readable. The last-synced timestamp appears in the Peek header so you know exactly how fresh your snapshot is.
Offline Outbox — Queue Messages for Later
Reading scrollback offline is useful. Writing instructions offline is what makes it operational. The amux offline outbox lets you compose a message to any session and hit Send while completely offline. The message is stored in IndexedDB with a pending status and automatically sent to the server the moment connectivity returns.
revert your last 3 edits and restart from the spec in /docs/requirements.md. You hit Send. Your phone queues the message. When the plane lands and your phone reconnects to cell signal, the instruction is delivered to agent-2 within seconds.
The outbox uses the same deduplication mechanism as the dictation offline queue: each message has a msg_id UUID generated at composition time. If the PWA reconnects and retries, the server rejects duplicate msg_ids, so you never accidentally send the same instruction twice.
Voice dictation offline
If you use voice dictation, recordings captured while offline are also queued. Your phone records and saves the audio locally; when signal returns, the audio uploads to Gemini for transcription, and the resulting text lands in the session composer for your final review before sending. The offline queue for dictation and for typed messages share the same auto-flush mechanism.
Real-World Scenarios
Your team of 12 agents ran overnight. Board the plane, open amux, read every session’s scrollback in airplane mode. Compose correction messages for 3 agents that went off-spec. They all deliver the moment wheels down.
Open amux before descending underground. Cache primes automatically as you browse sessions above ground. Below ground, read what your agents built overnight. Queue your morning direction. Exit the station: instructions delivered.
Hotel wifi at 50 people is unusable. Your agents are still running on your home machine. Review their progress in the cached scrollback. Queue next-step instructions. When you step outside for a break and cellular kicks in, they all go through.
Driving between cities with spotty coverage. Passenger uses voice dictation to describe corrections to the agent mid-route. The voice recording caches locally. First cell tower hit: transcribed, reviewed, delivered.
Wake up, prime the cache over home wifi (30-second Peek pass through all sessions). Go for your morning walk. Review everything the agents built while you slept. No data usage on cellular, full offline access.
Your phone locks during a 2-hour meeting. IndexedDB persists through the lock screen. After the meeting, open amux and the cached scrollback is exactly where you left it — no re-loading, no re-scrolling.
iOS-Specific Notes
iOS WebKit (Safari engine) has a few behaviors worth knowing when using the amux offline cache:
- IndexedDB persists through background eviction: iOS aggressively evicts PWA memory when you switch apps. The amux v0.9.200 cache is in IndexedDB, not in-memory, so the scrollback survives this eviction. When you tap the amux icon again, it reads from IndexedDB and shows the cached state instantly — no re-load from network needed.
- Stand-alone mode required for best behavior: The offline cache works in any browser, but the iOS-specific state restoration (re-selecting the last-open session, re-opening the Peek panel) only works in standalone PWA mode (Add to Home Screen). In a regular Safari tab, iOS may clear the tab’s session state on eviction.
- IndexedDB storage quota: iOS typically allows 1–2 GB of IndexedDB storage per origin. amux’s scrollback cache is kilobytes per session — even 100 active sessions with 10,000 lines of output each would use less than 50 MB.
- Native iOS app: The amux iOS app (App Store) uses the same IndexedDB-backed offline cache as the PWA and additionally supports push notifications for stalled session alerts, so you can be paged when an agent needs attention even while the app is in the background.
Quick Setup (5 Steps)
- Install amux:
brew install mixpeek/amux/amux && amux serve - Install the PWA: Open dashboard → Share → Add to Home Screen (iOS) or Install App (Android)
- Start your sessions and run your normal agent workflow
- Prime the offline cache: Open each session’s Peek panel once while on wifi to write the scrollback to IndexedDB
- Go offline confidently: Open amux anywhere, read all your agents’ cached output, queue instructions, reconnect to deliver them
FAQ
Can I check my AI agents without internet?
Yes — amux v0.9.200 caches every running session’s scrollback locally in IndexedDB. When you open the amux PWA or iOS app offline, you see the last-cached output for each session. You can read terminal output, check the task board, and review notes without any server connection.
Does this require amux Cloud?
No. Offline scrollback caching is a client-side feature built into the open-source amux PWA — it works with any self-hosted amux instance. The IndexedDB cache stores scrollback on your device, not on any amux server. amux Cloud adds a hosted dashboard, tunnel, and automatic backups, but offline caching works without it.
How fresh is the offline cache?
The cache is as fresh as the last time you viewed that session’s Peek panel while online. amux writes to IndexedDB on demand — it does not run background syncs while the app is closed. For best results, do a quick Peek pass through all your sessions before going offline. For automated freshness, use the amux scheduler to run a regular peek poll while on wifi.
Does the offline cache work on iPhone?
Yes. iOS WebKit fully supports IndexedDB and persists it across background eviction cycles — the scrollback survives iOS suspending the app. The PWA (Add to Home Screen in Safari) and the native iOS app both use the same IndexedDB-backed cache. IndexedDB is not affected by the “website data” quota that Safari caps at 50 MB; structured storage for installed PWAs gets the same quota as native apps on modern iOS.
Can I send messages to agents while offline?
Yes, through the offline outbox. Type your message in the session composer and press Send. The message queues in IndexedDB with a unique msg_id and auto-delivers the moment connectivity returns. Duplicate delivery is prevented by server-side msg_id deduplication.
What version introduced offline scrollback caching?
v0.9.200 (shipped 2026-07-26, commit a5e73c0). Earlier versions cached some PWA shell assets (HTML/CSS/JS) but not session scrollback. If you installed amux before this version, run brew upgrade mixpeek/amux/amux to update.
How is this different from the PWA offline sync outbox?
The offline outbox (v0.9.179) handles writing while offline — queuing messages you compose and delivering them on reconnect. The scrollback cache (v0.9.200) handles reading while offline — storing your agents’ output so you can review it without a server. They complement each other: read what agents did (scrollback cache), write your next instruction (outbox), deliver it when connected.
Review your agents anywhere — even offline
Install amux in 30 seconds. Open-source, MIT licensed, single Python file, no cloud dependency. The offline scrollback cache is built in — no configuration needed.
Related Guides
- PWA Offline Sync Outbox Pattern — Queue Agent Messages When Offline
- Managing AI Agents from Your Phone — amux PWA Guide
- Voice Dictation for AI Coding Agents — Steer Your Fleet by Speaking
- Scheduling AI Agents — Automated Cron Jobs for Claude Code
- Running AI Coding Agents Overnight Unattended
- Self-Healing Configuration for AI Coding Agents
- AI Agent Daily Standup — Morning Review Workflow