TermiWeb is a browser-first shared terminal for a Windows host. It keeps the browser UI as the live interface on the host device and any other device you use to reach it, so one terminal session can continue without remoting the whole desktop.
It was created for power users, especially vibe-coders who want to continue "working" when they need to step away from the desk for a few moments. In other words, it was built for people who want to keep a live shell within reach while moving between their desk and the rest of real life.
- Live shared terminals in the browser
- Cross-device attachment to the same live shell
- A Windows packaged run surface with setup, start, restart, stop, uninstall, and optional before-sign-in auto-start
- Mobile-oriented terminal controls plus selection/clipboard support
0.1targets Windows hosts only.- Every shell in
0.1is elevated. 0.1assumes a trusted Windows machine on a private network.- WAN exposure is possible, but you are responsible for securing it.
The public download path for the packaged release is:
https://termiweb.com/download/
Until then, repo users can build the packaged release locally with:
npm run package:releaseThat command produces the Windows release folder and zip under artifacts/release/.
Once you have the packaged release:
- Unpack it into a user-writable folder.
- Open
1.Start-Here.md. It walks through the rest of the setup path. - Run
Set Up TermiWeb.cmdif you want the guided setup path. - Approve the Windows elevation prompt when TermiWeb starts.
- Open
http://127.0.0.1:22443if setup does not open it for you.
- Shared terminal instances through the browser UI
- A Windows packaged run surface with setup, start, restart, stop, uninstall, and optional before-sign-in auto-start
- Elevated-only shell launch path for
0.1 - One configured app password for local and LAN use
- Authenticated browser sessions that survive normal server restarts until logout or expiry
- Cross-device attachment to the same live shell
- Mobile-oriented terminal controls plus selection/copy support
- Per-instance shared width (as column counts) with
80as the default for new instances - Clipboard controls, including a fallback paste field when direct browser paste is blocked
- TermiWeb does not currently ship multi-user auth.
- TermiWeb does not currently ship built-in TLS termination.
- TermiWeb does not currently ship a turnkey public-exposure workflow.
0.1is a trusted-network-first product release, not a whole secure remote-access stack by itself.
TermiWeb stands on strong existing work, especially xterm.js, node-pty, TypeScript, Vite, Express, and the Windows terminal stack they make usable from the browser.
- Copy
.env.exampleto.env. - Set
TERMIWEB_PASSWORDto the value you want before first run. - Install dependencies with
npm install. - Start the app with
npm run dev. Windows will request elevation because0.1runs elevated shells only. - Open
http://127.0.0.1:22443.
- Keep
.env.exampleas the product-default config for packaged or single-copy use. - If you want a repo checkout to run beside another local TermiWeb copy, start that checkout from
.env.dev.exampleinstead of.env.example. .env.dev.examplemoves the repo checkout to port32443, which keeps it off the product default port.- Nondefault ports automatically get a matching session-cookie name, so browser login state does not bleed between the two copies.
- Optional before-sign-in auto-start uses a matching port-derived Task Scheduler name too, so the packaged default and a repo checkout do not fight over one startup-task registration when both keep their supported ports.
- Set
TERMIWEB_SESSION_COOKIE_NAMEexplicitly only if you need a custom cookie name instead of the port-based default.
- TermiWeb binds to your LAN by default.
- On the first LAN-bound launch, Windows may show a firewall prompt for the Node-hosted server process.
- Allow private-network access at that prompt if you want phones or other devices on the same LAN to reach TermiWeb.
- Leave
TERMIWEB_HOSTblank unless you want an explicit bind address. - Browse to
http://<your-pc-lan-ip>:22443from another device, such as your phone, on the same network.
- The supported default is still a trusted private network.
- If you want remote access across the internet or across sites, expose it deliberately behind controls you already trust, such as TLS termination, external auth, a reverse proxy, a VPN or mesh network, IP restrictions, or equivalent safeguards.
- Those are real deployment patterns for
0.1, but they are operator-managed patterns around the app rather than built-in product features. - The configured app password is part of the access story, not the whole WAN hardening story by itself.
npm run devstarts the integrated dev server and relaunches elevated on Windows when needed.npm run buildbuilds the client and server output intodist/.npm run dev:sitestarts the single-page release-site dev server fromsrc/site.npm run build:sitebuilds the GitHub Pages site output intodist/site.npm run startruns the production server fromdist/and relaunches elevated on Windows when needed.npm run start:hiddenstarts the built Windows server in the background without spawning an extra console window and requests elevation when needed.npm run restart:hiddenrestarts that hidden Windows background server and requests elevation when needed.npm run stop:hiddenstops that hidden Windows background server and requests elevation when needed.npm run notices:third-partyregeneratesTHIRD_PARTY_NOTICES.mdfrom the installed production dependency graph.npm run package:releaseassembles the Windows release folder and zip underartifacts/release/.npm run typecheckruns both client and server TypeScript checks.npm testruns the local test suite.npm run lintruns the repo lint rules.Set Up TermiWeb.cmdis the lightweight packaged setup flow: it creates.envif needed, prompts for the app password when still unset, offers before-sign-in auto-start, and can start the app for you.Enable TermiWeb Auto Start.cmdandDisable TermiWeb Auto Start.cmdmanage the optional before-sign-in startup task for this copy of TermiWeb.Start TermiWeb.cmd,Restart TermiWeb.cmd, andStop TermiWeb.cmdare the Windows launchers intended for the packaged run surface and also work from a built repo checkout. They request elevation because0.1runs elevated shells only.Uninstall TermiWeb.cmdis the packaged uninstall entry point and intentionally refuses to run from a source checkout.
v0.1 prefers PowerShell 7 from PATH, then falls back to the standard install path at C:\Program Files\PowerShell\7\pwsh.exe, and only then falls back to Windows PowerShell.