Desktop Electron app (TypeScript + Node 24) that aggregates Copilot sessions from multiple repositories, provides full-text search in a resizable left sidebar, and renders selected session details in a chat-style main pane.
Features • Documentation • Development • Packaging • Configuration
- Copilot session history is fragmented across tools and repositories, with no single place to browse it.
- Past prompts, responses, and decisions are hard to rediscover once a session is closed.
- There is no reliable full-text search across both user prompts and Copilot responses across all sessions.
- Session history can disappear after retention limits, making older conversations hard or impossible to revisit later.
- As session volume grows, history becomes noisy and harder to organize without filtering, starring, and archiving.
- Aggregates sessions from Copilot CLI, VS Code Copilot Chat, and OpenCode into one desktop view.
- Syncs from configurable repository roots and keeps synced history locally for later rediscovery.
- Provides full-text search plus repository, model, estimated cost, origin, date, archived, starred, and sub-agent filters.
- Surfaces per-session estimated cost as
$,$$, or$$$chips when pricing data is available, with anUnavailablefilter bucket when no total can be computed. - Renders a read-only chat-style session detail view with model metadata, IST timestamps, and external-link support.
- Supports local organization with starring, archiving, archived history handling, and quick jumps back to important messages.
- Includes a resizable sidebar, settings UI, editable JSON config, and optional background sync.
Contributor-focused architecture and implementation docs live in docs/.
Start with:
- Node.js 24+
- pnpm 10+
- VS Code CLI on PATH (
code) if you want one-click VS Code open action ghCLI installed/authenticated if you want one-click CLI open action
pnpm install
pnpm devThis starts Electron with HMR for the renderer.
If you see this error, the Electron binary was not downloaded yet.
Run:
pnpm run postinstallThen retry:
pnpm devpnpm testIncludes parser, formatter, and UI component tests with coverage.
pnpm lint
pnpm typecheckThis repo also includes a root tsconfig.json and workspace VS Code TypeScript settings so the editor uses the same project graph and local TypeScript version as the CLI checks.
Build app bundles:
pnpm buildCreate distributables for current platform:
pnpm packageCreate a macOS DMG explicitly:
pnpm package:macCreate a Windows installer executable (.exe) for standard Windows x64 machines:
pnpm package:winOptional: create a Windows ARM64 installer:
pnpm package:win:arm64Artifacts are generated in release/.
Windows packaging outputs an installer like:
release/Copilot Sessions Hub Setup <version>.exe
On macOS, cross-building Windows installers may download Wine/NSIS helper binaries on the first run, so the first packaging pass can take longer.
Settings are stored in user data config.json.
Default repo roots on first run (platform-specific):
macOS:
~/projects/airbase-frontend~/projects/frontend2~/projects~/projects/Airbase.Playwright.Automation.Suite
Windows:
%USERPROFILE%\projects%USERPROFILE%\Documents%USERPROFILE%\source
Linux:
~/projects~/code
You can edit config from:
- In-app Settings modal
- In-app Open Config JSON button
Config shape:
{
"repoRoots": ["/absolute/path/to/repo"],
"discoveryMode": "both",
"appearance": "system",
"syncMode": "manual",
"backgroundSyncIntervalMinutes": 10,
"explicitPatterns": [
"**/.copilot/**/*.{json,jsonl}",
"**/.vscode/**/*copilot*.{json,jsonl}",
"**/.github/copilot/**/*.{json,jsonl}"
]
}discoveryMode: "autodiscovery"uses built-in patterns.discoveryMode: "explicit"uses onlyexplicitPatterns.discoveryMode: "both"combines both.appearance: "system"follows the OS theme, while"light"and"dark"force the app theme.syncMode: "manual"keeps sync user-triggered only.syncMode: "manual-plus-background"enables periodic background sync.backgroundSyncIntervalMinutescontrols periodic sync cadence (1-1440).
Saving settings immediately updates config and triggers a sync.
Detailed logs are written to:
<userData>/logs/app.log(main process)- Browser devtools console (renderer/UI actions)

