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
Download
Download the latest release for your platform:
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*.AppImagethen 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-saverlevel to stay above most windows - macOS: Uses
floatinglevel withvisibleOnAllWorkspacesto 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
- GitHub Issues: github.com/Osseni94/Stickyshell/issues
- Email: admin@grandnasser.com