Desktop App

Sticky Shell

A persistent, always-on-top terminal overlay for running AI coding agents. Built with Electron for Windows, macOS, and Linux.

What is Sticky Shell?

Sticky Shell is an always-on-top terminal overlay designed for developers who work with AI coding agents like Claude Code, GitHub Copilot CLI, or any command-line AI assistant.

The problem: When running an AI agent in a terminal, switching to another window hides your terminal, making it hard to monitor the agent's progress while working.

The solution: Sticky Shell stays visible on top of all other windows, so you can watch your AI agent work while coding in your IDE, browsing documentation, or doing anything else.

Always Visible

Stays on top of all windows, even fullscreen apps on macOS.

Real Terminal

Full PTY support with xterm.js - run any CLI command or agent.

Cross-Platform

Works on Windows, macOS, and Linux with native behavior.

Frameless UI

Modern, minimal design that doesn't distract from your work.

Demo

Sticky Shell Demo

Download

Download the latest release for your platform:

Windows

Installer or portable

Download .exe

macOS

DMG disk image

Download .dmg

Linux

AppImage (universal)

Download .AppImage

More options: Windows Portable | Linux .deb

After Download

  • Windows: Run installer. SmartScreen warning? Click "More info" → "Run anyway"
  • macOS: Open .dmg, drag to Applications. First run: right-click → Open
  • Linux: Make AppImage executable: chmod +x Sticky*.AppImage then run it

Build from Source

For developers or unsupported platforms. Requires Node.js 18+.

Step 1: Clone the Repository

git clone https://github.com/Osseni94/Stickyshell.git
cd Stickyshell

Step 2: Install Dependencies

npm install

Step 3: Rebuild Native Modules

node-pty requires rebuilding for Electron:

npm run rebuild

Step 4: Run the App

npm start

The terminal overlay will appear in the top-right corner of your screen. You can drag it by the title bar and resize it from the edges.

Always on Top

Sticky Shell uses platform-specific APIs to stay visible:

  • Windows: Uses screen-saver level to stay above most windows
  • macOS: Uses floating level with visibleOnAllWorkspaces to appear across all desktops and over fullscreen apps
  • Linux: Uses standard always-on-top with window manager hints

Terminal

The terminal is powered by:

  • xterm.js - Fast, full-featured terminal emulator in the browser
  • node-pty - Native pseudo-terminal for real shell execution

This means you get a real terminal experience - colors, cursor movement, tab completion, and full compatibility with any CLI application.

Default Shell

  • Windows: cmd.exe (or %COMSPEC%)
  • macOS/Linux: /bin/bash (or $SHELL)

Keyboard Shortcuts

Shortcut Action
Ctrl+C Copy selected text (or send interrupt if no selection)
Ctrl+V Paste from clipboard
Ctrl+Shift+C Copy selected text
Ctrl+Shift+V Paste from clipboard

Customization

Terminal Theme

Edit the theme in renderer.js:

const terminal = new Terminal({
  theme: {
    background: '#0d0d1a',
    foreground: '#e0e0e0',
    cursor: '#7ec8e3',
    // ... customize colors
  },
  fontSize: 13,
  fontFamily: '"Cascadia Code", monospace',
});

Window Size & Position

Edit the window settings in main.js:

mainWindow = new BrowserWindow({
  width: winWidth,
  height: winHeight,
  x: width - winWidth - 20,  // Position from right
  y: 20,                      // Position from top
  // ...
});

Building for Distribution

Use electron-builder to create installers:

Install electron-builder

npm install electron-builder --save-dev

Add build script to package.json

{
  "build": {
    "appId": "com.stickyshell.app",
    "productName": "Sticky Shell",
    "win": { "target": ["nsis", "portable"] },
    "mac": { "target": ["dmg"] },
    "linux": { "target": ["AppImage", "deb"] }
  },
  "scripts": {
    "build": "electron-builder"
  }
}

Build

npm run build

Installers will be created in the /dist folder.

Support