# YOUR TERMINAL, IN A BROWSER TAB
A tiny Rust daemon runs your shells on your machine. Open them from any browser tab: they survive reloads, restarts and closed laptops.
$ cargo install --git https://github.com/Blaise1030/tabsh $ tabsh # opens the app in your browser, paired
## WHY A BROWSER TAB?
Look at where your work happens. The issue is in a tab. So is the pull request, the docs, the design, the chat with your team, the AI you ask for help, and the app you're building, running on localhost.
The browser quietly became the place we work. The terminal is the last tool still living in a separate window, one ⌘-Tab away from everything it touches.
So bring it home. Put the terminal where the work already is, in the tab next to the thing it builds.
## FEATURES
+--------------------------+------------------------------------+ | Shells outlive the tab | Close, reload, quit: they reattach | | Survives restarts | Tabs, folders, scrollback restored | | Drop files in | Dragged files type their path | | Bells you notice | Tab rings, favicon badges | | Themes and fonts | 10 themes, 9 fonts, ⌘K palette | | Nothing leaves localhost | Keystrokes stay on 127.0.0.1 | +--------------------------+------------------------------------+
## HOW IT CONNECTS
The app you open here is a plain page. It talks to the daemon on your own machine at http://127.0.0.1:7681. There is no server of ours in between.
[ browser tab ] this site, /app/
│
│ HTTP + WebSocket, 127.0.0.1 only
▼
[ tabsh daemon ] your machine
│
│ PTY
▼
[ your shells ] zsh, bash, fish…- Run the daemon. It listens on loopback only and creates a secret token in
~/.tabsh/token. - Open the link it prints. The token rides in the URL fragment, which browsers never send to a web server.
- That's it. The daemon only accepts requests from this site that carry the token. Other sites get nothing.
> Chrome may ask to let this site access apps on your device. That's the connection to the daemon; allow it once. Lost the link? Open http://127.0.0.1:7681 in this browser and the daemon sends you here, paired.
~*~ EOF ~*~