.trylle
Split workflows into parallel jobs
apps
Stabilize development startup and native CI runtime
docs
Prepare private Turborepo workspace with quality gates and contributor docs
packages
Stabilize development startup and native CI runtime
scripts
Stabilize development startup and native CI runtime
.editorconfig
Prepare private Turborepo workspace with quality gates and contributor docs
.gitignore
Stabilize development startup and native CI runtime
.node-version
Prepare private Turborepo workspace with quality gates and contributor docs
.nvmrc
Prepare private Turborepo workspace with quality gates and contributor docs
biome.jsonc
Prepare private Turborepo workspace with quality gates and contributor docs
CONTRIBUTING.md
Stabilize development startup and native CI runtime
LICENSE
Prepare private Turborepo workspace with quality gates and contributor docs
package-lock.json
Prepare private Turborepo workspace with quality gates and contributor docs
package.json
Prepare private Turborepo workspace with quality gates and contributor docs
README.md
Stabilize development startup and native CI runtime
SECURITY.md
Prepare private Turborepo workspace with quality gates and contributor docs
THIRD_PARTY_NOTICES.md
Prepare private Turborepo workspace with quality gates and contributor docs
tsconfig.base.json
Prepare private Turborepo workspace with quality gates and contributor docs
turbo.json
Prepare private Turborepo workspace with quality gates and contributor docs

Superlogical Web

A browser workspace for real terminals on your Mac. Horizontal tabs, split panes, translucent themes, and persistent processes—backed by a local companion, rather than the lifetime of a browser tab.

An independent experiment, deeply inspired by Superlogical. The product vision, interaction direction, and visual reference come from the wonderful work of the Superlogical team. Their multiplexer is the reason this project exists. Please explore and support the original. This is not an official Superlogical product, port, partnership, or endorsement.

The project is experimental and macOS-first. This repository is private while it is prepared for a possible public release. The working name is an attribution, not a claim to the Superlogical brand; a distinct project name should precede a public launch.

What works

  • Real login shells with your local tools, ANSI colors, and terminal applications.
  • Horizontal tabs, nested splits, resizing, renaming, and background tab management.
  • Processes that continue after closing the browser or restarting the companion.
  • Smart close: idle shells are removed; running or uncertain jobs are kept in the background. Ending processes is an explicit action.
  • Reconnection with restored workspace layout and terminal output.
  • Search, selection, copying, and a custom history scrollbar.
  • Six light/dark palettes, system appearance by default, Geist fonts, glass surfaces, and reduced-motion support.
  • Keyboard navigation and a command palette built on Base UI and cmdk.

Processes run on your Mac as your user, with access to your files and installed tools. There is no remote host support, cloud relay, collaboration service, account system, or browser sandbox in this version. Sleeping your Mac pauses execution; a reboot ends processes even though saved workspace metadata remains.

Run locally

Requirements: macOS, Node.js 24 LTS, npm 11, and tmux 3.6 or newer. Install tmux with brew install tmux. Xcode Command Line Tools (xcode-select --install) may be needed when node-pty builds from source.

git clone git@trylle.com:stylessh/superlogical-web.git
cd superlogical-web
npm ci
npm run build
npm start

In another terminal:

npm run open

The companion listens on http://127.0.0.1:4317. open pairs your browser using a local token; visiting the address alone does not grant shell access. Keep the checkout and its dependencies in place while using the companion.

To start the built companion automatically when you log in:

npm run companion:install
npm run open

After updating the code, run npm ci, npm run build, and npm run companion:install again. The installer updates the launch agent and restarts the companion; existing tmux processes remain alive.

npm run companion:uninstall

Uninstalling removes the login service. It deliberately retains saved state and tmux processes; use the app's explicit process termination controls to end work you no longer need.

Development

Use a separate port, data directory, and tmux socket when the installed companion is running:

export PORT=4517
export SUPERLOGICAL_DATA_DIR="$HOME/.superlogical-web-dev"
export SUPERLOGICAL_SOCKET=superlogical-web-dev
npm run dev

In another terminal, set the same PORT and SUPERLOGICAL_DATA_DIR, then run npm run open. The companion serves Vite on the same origin, with authenticated workspace bootstrap and source-based workspace package resolution. No separate frontend server or permissive CORS configuration is necessary.

npm run lint       # Ultracite + Biome, including formatting
npm run lint:fix   # Apply safe fixes
npm run typecheck  # All workspace packages
npm run build     # Dependency-ordered production builds
npm test          # Model, bootstrap, and real companion/tmux integration tests
npm run check     # Full local quality gate

Integration tests create isolated data directories and tmux sockets. They exercise real processes; tmux and zsh must be installed. See Contributing for conventions and test boundaries.

Workspace

PackageResponsibility
apps/webReact, Vite, StyleX, Motion, Base UI, cmdk, and xterm.js interface
apps/companionLoopback HTTP/WebSocket service, pairing, HTML bootstrap, macOS launch agent
packages/terminal-coretmux lifecycle, PTY attachments, history replay, workspace persistence
packages/sharedWorkspace model, validated action contracts, and theme definitions

npm workspaces provide dependency linking; Turborepo orders builds and caches deterministic outputs. Production runs compiled JavaScript. Architecture explains persistence and trust boundaries; interface conventions document the visual system.

Configuration and data

VariableDefaultPurpose
PORT4317Loopback HTTP/WebSocket port
SUPERLOGICAL_DATA_DIR~/.superlogical-webPairing token, metadata, tmux configuration, service logs
SUPERLOGICAL_SOCKETsuperlogical-webDedicated tmux server socket
TMUX_BINtmux on PATHOverride the tmux executable
SHELLYour environment, falling back to /bin/zshShell for new terminals

Do not commit pairing tokens, workspace data, shell output, .env files, or local screenshots. Never expose the companion through a public proxy or bind it to a network interface. See Security before changing authentication or transport code.

Credits and license

The clearest credit belongs to Superlogical and its team. Their product and screenshots provided the foundational design and product reference for this experiment. This repository contains our implementation, not the original team's source code, and does not redistribute their reference screenshots.

Built with tmux, xterm.js, node-pty, React, StyleX, Motion, Base UI, cmdk, Hugeicons, Geist, Turborepo, and Ultracite.

Original code is available under the MIT license. Third-party dependencies retain their own licenses. The license does not grant rights to the Superlogical name, brand, original product, or reference imagery. See attribution.