npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

sdeck

v0.12.0

Published

Terminal UI that manages Claude Code and GitHub Copilot CLI sessions

Readme

One terminal window for all your Claude Code and GitHub Copilot CLI sessions.

Session Deck: sessions grouped by project, with a live preview

sdeck keeps every agent session running in the background, shows what each one is doing, and lets you jump in and out of any of them. It runs natively on Windows: no tmux, no WSL.

Running five agents across three repositories means five terminals and constant "which one was waiting for me?". Session Deck answers that at a glance:

  • Sessions are grouped by project (by git root, so worktrees land together) and by folder.
  • A status dot on every session: running, waiting for you, finished, error, stopped.
  • Attach to a session full-screen, detach with Ctrl+Q (configurable with ui.detachKey), and it keeps working.
  • Session Deck lists and resumes every past session, from all your logged-in Claude accounts.

Install · Quick start · Features · Configuration · User manual · Development

Install

PowerShell (Windows):

irm https://github.com/adrianogpena/session-deck/releases/latest/download/sdeck-installer.ps1 | iex

npm:

npm install -g sdeck

Or build from source:

  1. Install Rust with rustup (the stable toolchain). On Windows it also needs the MSVC C++ build tools, which the rustup installer offers to set up.

  2. Clone the repository and build it:

    git clone https://github.com/adrianogpena/session-deck.git
    cd session-deck
    cargo build --release
  3. The binary is target/release/sdeck.exe. Run it directly, or copy it to a folder on your PATH. To install it into Cargo's bin folder instead (already on your PATH after installing Rust):

    cargo install --path crates/sdeck

Run sdeck from a terminal that supports full-screen apps (Windows Terminal, PowerShell, the VS Code terminal). It needs claude and/or copilot on your PATH, or set their location in the config.

Quick start

sdeck          # every project
sdeck --here   # only the project of the current folder

| Key | What it does | |---|---| | ↑ ↓ / j k | Move through folders, projects and sessions | | Enter | Attach to the selected session (a stopped one is resumed first) | | Ctrl+Q | Detach; the session keeps running (ui.detachKey changes the key) | | n / N | Start a new Claude / Copilot session in the selected project | | i | Interact: type into the session while the list stays visible | | / | Search the prompts and replies of every session | | ? | Show every key |

Features

See what needs you

Status dots, filter pills and a live preview of a session waiting for permission

Every session shows its state, and the header and terminal title count the ones that need you, so you see a waiting agent from the taskbar. Windows notifications fire when a session starts waiting, finishes or fails. Filter by status (! running, @ waiting, # idle, & error, ~ stopped) or by age.

| Symbol | Status | |---|---| | ● blue | Running | | ◐ yellow | Waiting for you (a permission, a choice) | | ✓ green | Finished, not seen yet | | ○ | Idle | | ✕ red | Error (for example "run /login") | | ■ | Stopped; resume it any time |

Live preview and background sessions

The right-hand panel is the live screen of the selected session. Sessions run in background PTYs, so you can attach, detach and switch without interrupting the agent. s starts a session without attaching, i types into it from the list, R restarts it on the same conversation.

Organize freely

  • Projects come from git roots; branch and sync state show as one badge per project (⇡ ahead, ⇣ behind, ✱ uncommitted).
  • Folders group projects (g, M), and K/J reorder anything.
  • Tags (L) group sessions across projects, with a TAGS section to filter by them.
  • Pin, archive, rename sessions; deleted ones go to a trash you can restore for 30 days.
  • Multi-select with Space to stop, archive, tag or move a batch.

Folders, tags and the tag filter

Find anything

/ searches the full text of every session, not just titles. The command palette, the skills and agents browser (w) and the in-app settings editor (C) have their own keys.

Full-text search across sessions

Several accounts, two agents

Sessions from every logged-in Claude account (~/.claude, ~/.claude-work, ...) are listed together, and a resumed session reopens under the account it belongs to. GitHub Copilot CLI sessions sit beside the Claude ones.

Light and dark

: → Choose theme picks System or a palette (Tokyo Night, Catppuccin, Gruvbox, Nord, Dracula, Rose Pine, Solarized, each dark or light). The layout adapts: panels side by side from 80 columns, stacked from 50; ui.layout fixes it to side or stacked instead.

Configuration

Settings live in ~/.session-deck/config.json; press C to edit them in the app.

{
  "ui": { "notifications": true, "gitStatus": true, "recentSessionsFirst": true },
  "tools": {
    "claude": { "command": "claude-nightly", "args": ["--model", "opus"] },
    "copilot": { "enabled": false }
  }
}

Every setting is described in the user manual. Names, pins, tags, folders and order are stored in ~/.session-deck/state.json.

Development

cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings
cargo fmt --all --check
  • crates/sdeck-core: discovery, status, the shared state store. No terminal dependencies.
  • crates/sdeck: the TUI binary.
  • crates/fake-agent: test-only stand-in for claude.
  • crates/sdeck-demo: a sandbox with fake projects and sessions (below).

Try it with fake data

cargo build --release -p sdeck -p sdeck-demo
target/release/sdeck-demo        # sandbox in target/demo, then starts sdeck inside it

sdeck-demo writes six git repositories, fourteen sessions across two Claude accounts, tags, a folder and usage meters under target/demo. The meters cover context, the 5h and 7d quotas, and daily spend. It points sdeck at that sandbox, so your real sessions and settings are never touched. A few sessions are already running or waiting; press Enter on any other to start it under a scripted stand-in agent. Use it for screenshots and for trying the UI.

License

MIT. See LICENSE.