Skip to content

Terminal Window Recovery

A Windows update reboots your machine, or you press Alt+F4 on the wrong window, and an entire Windows Terminal full of Copilot tabs is gone. Narnia continuously records your open terminal windows of Copilot tabs so you can reopen the whole window in one click — like restoring a browser window.

Open the Windows view under Runtime in the web UI to see your open and recently-closed windows and reopen any of them.

How it works

A background snapshotter inside the always-on Narnia server takes a snapshot of your open terminal windows on a timer (once a minute by default). For each window it records the Copilot tabs it contains and each tab's starting directory, writing them to Narnia's own settings database. When a window disappears, it is marked closed and retained so you can reopen it later.

Because the snapshot is taken before a window dies, recovery does not depend on the window still being open — the last snapshot (at most one interval old) is already saved.

Detection is Windows Terminal–specific

Recording reconstructs a window by walking the process tree to the owning WindowsTerminal.exe. Resumed tabs are identified from copilot --resume=<id> in their process chain. Fresh sessions, whose command line has no session ID, are resolved through Copilot's live inuse.<pid>.lock marker. Tabs added to a window after it launched are still recorded, but their starting directory is only captured when it appears in the window's launch command.

Copilot tabs only

The database only ever holds Windows Terminal windows that contain at least one copilot --resume tab, and only those tabs. Other terminal windows and non-Copilot tabs are never recorded.

Reopening a window

On the Runtime area's Windows view, each recently-closed window shows its tabs. Click 🚀 Reopen to relaunch the whole window as a single Windows Terminal window, one tab per session. Each tab resumes its Copilot session and opens in the captured starting directory (falling back to the session's preferred path, working directory, or git root when no directory was captured).

Reopening is always manual — Narnia never relaunches a window automatically.

Select open sessions and choose Add selected to Collection to preserve a useful live working set as a user-owned Collection rather than as another observed window record.

Pinning and retention

Closed windows are kept up to a configurable limit (50 by default); older ones are pruned. Name a window to pin it so it is never pruned. Identical windows (the same set of sessions) are deduplicated, so reopening and re-closing the same working set keeps a single record rather than piling up duplicates.

Settings

Configure recording on the ⚙️ Settings page under Terminal Window Snapshots:

Setting Default Notes
Record terminal windows On Turn recording off/on at runtime without restarting the server.
Snapshot interval (seconds) 60 Minimum 5.
Closed windows to keep 50 Pinned windows are always kept.

These map to settings keys (snapshotter_enabled, snapshotter_interval_seconds, snapshotter_retention_count) read each tick, and to the NARNIA__SnapshotterEnabled, NARNIA__SnapshotterIntervalSeconds, and NARNIA__SnapshotterRetentionCount option defaults.

Start at login (optional)

The snapshotter only runs while the Narnia server is up. The server is already relaunched at the start of every Copilot CLI session by the narnia-web-server hook, so it is effectively always up once you start using Copilot. To have it running from the moment you sign in — even before your first session — enable Start at Login on the Settings page (Windows only, off by default).

See Logon Autostart for how the scheduled task works, how to verify that it actually ran, and how to troubleshoot it.

Headless snapshot (optional)

For belt-and-suspenders collection even when the web server is stopped, run a single snapshot pass and exit:

NexusLabs.Narnia.Web.exe snapshot

This applies any pending migrations, records the currently-open windows once, and exits without starting the server — suitable for a Windows Scheduled Task that runs at logon and repeats periodically.

Where it is stored

All window data lives in Narnia's own settings database (<LocalAppData>/narnia/settings.db%LOCALAPPDATA%\narnia\settings.db on Windows) in the terminal_windows and terminal_window_tabs tables. The Copilot CLI's session-store.db is only ever read, never modified.

Extending the sources

The recovery console reads windows through an ITerminalWindowSource contract aggregated by ITerminalWindowAggregator. The live snapshotter is the built-in source; additional sources can be registered and will appear in the console automatically, exposing only the domain window model (a source's own storage is its private concern).