Your shells and AI coding agents in one browser tab, with a kanban board the agents update themselves
tabsh moves the terminal into the place where the rest of your work already lives: a browser tab. A small Rust daemon runs on your machine and the tab next to your issue tracker, pull requests and localhost dev server becomes the terminal. Close the tab, reload it, shut the laptop - your shells survive and reattach with folders and scrollback restored. Install is one command via curl, Homebrew or cargo, and the app opens already paired with your browser.
Every shell or coding agent becomes a card on a board: Backlog, In progress, Needs input, Completed. Run tabsh setup once and your agent - Claude Code, Codex, Cursor CLI, OpenCode or anything with hooks - wires itself to report its status, moving its own card as it works, waits for you, or finishes. A list view gathers every card from every project into one scroll, you can start an agent straight from a new card, drag a file onto a shell to type its path, and a ringing bell puts a badge on the favicon.
The architecture is local-first in the way a terminal tool should be: a plain web page talking to the daemon over loopback only, keystrokes staying on 127.0.0.1, and a pairing token that lives in the URL fragment browsers never send anywhere. Twelve themes and nine fonts included. macOS and Linux only for now; on Safari the app serves a local copy instead. Free and MIT licensed, from a very young and fast-moving project.
We wrote up the idea in our article: https://www.freewares.org/blog/tabsh-shells-ai-agents-one-browser-tab
A Rust daemon serves your shells to the tab next to your work
Close the tab or the laptop; shells reattach with scrollback restored
curl script, Homebrew or cargo
Agents move their own cards through Backlog, In progress, Needs input, Completed
A small Rust daemon owns the shells on your machine. The browser tab is just a client, so closing or reloading it never kills anything - sessions reattach with folders and scrollback intact.
The page talks to the daemon over loopback only, keystrokes stay on 127.0.0.1, and the pairing token sits in the URL fragment, which browsers never transmit.
Claude Code, Codex, Cursor CLI, OpenCode and any agent with hooks. Run tabsh setup once and the agent reports its own status as it works.