VibeGhost is the spiritual successor to VibeTunnel

A complete rebuild of VibeTunnel on a modern stack. Built with Next.js, shadcn/ui, and Ghostty Web, with the VibeTunnel API integrated directly for a faster, more reliable, and self-contained experience.

Why we built VibeGhost
VibeTunnel was a great idea, but it had real problems in practice.
Built with the Lit framework, making it difficult to extend and customize.
Didn't work on mobile. The xterm.js UI was completely broken on phones and tablets.
Pasting large text would crash the server entirely.
Only worked on Chrome. SSE connections failed on Firefox, Safari, and other browsers.
Limited to 6 concurrent sessions due to SSE connection limits.
No input component. Users had to type directly into the raw terminal.
No session organization. All sessions were a flat, unsorted list.
Read below to see how we fixed these issues.
1
Replaced the Frontend
Swapped the entire VibeTunnel UI stack for a modern React foundation.
Replaced xterm.js with Ghostty Web, a faster terminal renderer that works properly on mobile and provides a more stable foundation.
Replaced VibeTunnel's Lit framework with Next.js, giving us a full React stack with server-side rendering, routing, and a better developer experience.
Replaced the Lit web components with shadcn/ui, giving us beautiful, accessible, and customizable UI components out of the box.
Mobile rendering fixed|Better performance|Modern React stack
2
Added a Real Input Component
A proper text input alongside the raw terminal for a better experience.
Users can type directly into the terminal or use the dedicated input component. The input supports multi-line text, paste, hold-to-repeat, and keyboard shortcuts.
Better mobile friendliness
3
Fixed Cross-Browser Support
Works on Firefox, Safari, Arc, and on mobile. Not just Chrome.
Any Modern Browser
VibeTunnel's SSE implementation only worked on Chrome. VibeGhost works everywhere: Firefox, Safari, Arc, Brave, Edge, and on mobile browsers too.
4
Migrated SSE to WebSockets
Faster connections, no more 6-session limit.
Migrated from Server-Sent Events to WebSockets. This is what VibeTunnel Beta 16 does internally, but hasn't been published yet. WebSockets eliminated the 6-session SSE bottleneck.
Before (SSE)
Max 6 sessions, slow
After (WebSocket)
Unlimited, fast
5
Added Session Organization
Group, filter, and navigate sessions intelligently.
Sessions can be grouped by bracket prefix and filtered by group. You can also group by session name to find sibling sessions across projects.
[pi]openfront
[dev]openfront
[pi]vibeghost
6
Built Session Cards and File Preview
See related sessions, working changes, and file diffs at a glance.
Access related and sibling sessions, see working changes, and browse files from the session sidebar.
Click any file to open it in a Monaco editor preview. See full syntax-highlighted source right in the browser. The same editor that powers VS Code.
See beautiful, inline diff views of your working changes. Powered by Pierre Computer's @pierre/diffs for clean, readable change visualization.
7
Integrated the Server
No external VibeTunnel install needed. Everything runs in one application.
Since our frontend originally depended on VibeTunnel being installed separately, we brought the entire server codebase directly into VibeGhost. Now it runs as a single, integrated Next.js + Express application.
No separate VibeTunnel install required|Fixed the paste-crash bug|Fixed multiple stability issues|Single npm run dev starts everything
8
Added Orchestration
Two orchestration harnesses that take VibeGhost beyond a terminal viewer.
The Ghost harness lets one terminal session control other terminal sessions using VibeTunnel's sessions API. A Ghost session becomes an orchestrator that can send commands to multiple sessions simultaneously, read their output, and coordinate work across your entire workspace.
Inspired by OpenClaw's heartbeat, the Heartbeat harness brings autonomous session monitoring directly into VibeGhost. It periodically checks on your running sessions, detects when agents are stuck or idle, and can wake them back up automatically.
9
Getting Started
Clone, install, and run. You're up in under a minute.
# Clone the repo
git clone https://github.com/openshiporg/vibeghost.git
cd vibeghost
# Install dependencies
npm install
# Start the dev server (default port 4021)
npm run dev
# Or run on a custom port
PORT=4022 npm run dev
The application will be available at http://localhost:4021 (or whichever port you set).
Keep it running
./setup.sh
Run the setup script to keep the application running persistently.
Built with
The technologies that power VibeGhost.
React framework for the frontend
UI component library
Terminal renderer
Code editor (powers VS Code)
Diff visualization library
Integrated API server
Inspired by
VibeGhost wouldn't exist without these projects.
The original web-based terminal for AI coding sessions. The starting point for everything.
Beautiful diff rendering that powers our file change visualization.
The original terminal renderer used by VibeTunnel. Replaced by Ghostty Web.
The web component framework used by VibeTunnel's frontend. Replaced by Next.js + shadcn/ui.
What we're building with VibeGhost

VibeGhost is the tool we use every day to build Openship, a collection of open source platforms that give businesses true ownership of their software. Think of it as open source Shopify, but for every vertical.

Instead of renting infrastructure from platforms that control your code, your data, and your customer relationships, Openship lets you deploy production-ready platforms you fully own. Self-host them or use our cloud. Either way, the code is yours.

E-commerce
Live
Restaurants
Soon
Gyms
Soon
Hotels
Soon
Grocery
Soon

To learn more, check out our story and our ethos.