Skip to content

Latest commit

 

History

3,026 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

STIOC — Share Terminal In One Click

Upterm Next — Modern revival of railsware/upterm

STIOC is an IDE in the world of terminals — terminal emulator + interactive shell with autocompletion, built for 2026. One click to share your terminal session.

Share in one click (first look)

STIOC first look

Each tab header has an ○ Share button + a visible Разрешить печатать (опасно) checkbox (unchecked = read-only, safe default). Click ○ Share = link with the checkbox mode; check the box = read-write (red banner — everything typed runs on your machine). The link looks like https://xxx.loca.lt/?token=… (or http://localhost:PORT/?token=… when the tunnel is offline) and lives 1h; click ● Share to stop early (token revoked). A wrong ?token= shows 401 — invalid token, an expired link shows 410 — link expired.

Original project: https://github.com/railsware/upterm — deprecated after maintainer Vlad Shatskyi passed away (issue #1301). This is a community revival.

Build Release CodeQL Node Electron TypeScript pnpm License

What was revived

Before (2019) After (2026)
Node 8, Electron 2.0 (Chromium 61) Node 22, Electron 34.2 (Chromium 132)
React 16.2, TS 2.8, TSLint React 19.1, TS 5.7, ESLint 9, Vite 6
Self-written VT100 parser (1500 LOC) + immutable xterm.js 5.5 + WebGL + unicode-graphemes (GPU 60fps)
Monaco fork (AMD loader) Monaco 0.52 ESM lazy
font-awesome 4.7 lucide-react + Fira Code / JetBrains Mono ligatures
npm + cpx/mkdirp/rimraf pnpm 9 + Vite
No Wayland, x64 only Wayland native, Apple Silicon universal (x64+arm64)
220 open issues ~180 fixed, tsc EXIT 0

Features

  • Autocompletion as you type — commands, args, cd - history, aliases
  • Monaco prompt — shell syntax, history search, Smart Ctrl+C/W, middle-click paste
  • xterm.js output — truecolor, 256 colors, emoji, CJK, alternate buffer (vim/htop/tmux)
  • Share in one click — Upterm heritage (PTY sharing) preserved for STIOC
  • Cross-platform — macOS (dmg universal), Linux (AppImage/deb), Windows (nsis, ConPTY)

Install

One-liner (Linux/macOS)

curl -fsSL https://raw.githubusercontent.com/ixode0/stioc/master/install.sh | bash
# Debian/Ubuntu .deb instead of AppImage:
curl -fsSL https://raw.githubusercontent.com/ixode0/stioc/master/install.sh | bash -s -- --deb

Installs the AppImage (or .deb) x64 only (Linux prebuilt is x64 only, arm64 from source), a .desktop entry + icon on Linux, STIOC.app into /Applications on macOS. Uninstall: same script with --uninstall.

From releases

Download latest STIOC-*.AppImage / STIOC-*.dmg / STIOC-Setup-*.exe / stioc_*.deb from Releases

From source (as regular user)

git clone https://github.com/ixode0/stioc.git && cd stioc
pnpm install
pnpm run compile  # tsc + vite
pnpm start       # dev
# or
pnpm run pack    # standalone AppImage/dmg

Requires Node >=22, pnpm 9.

Share terminal in one click

  • Click ○ Share on a tab = link with the Разрешить печатать (опасно) checkbox mode (unchecked = read-only, safe default; checked = read-write, typing runs here!).
  • To change the mode of an active share: click ● Share to stop (token revoked) → flip the checkbox → click ○ Share again for a new link.
  • Link looks like https://xxx.loca.lt/?token=… (or http://localhost:PORT/?token=… offline) — ?token= is required, keep it secret.
  • Link lives 1h by default (server clamps custom TTL to 1min–12h); stop early by clicking ● Share (token revoked).
  • Read-only viewers see a banner; typing there shows [read-only share — input ignored]. Blocked file:// links and TTL clamps now alert instead of staying silent.

Manual share checklist

  • 1 tab share → viewer sees live output; 2 tabs share → both viewers get only their own tab (no cross-leak).
  • Read-only link ignores keystrokes with a notice; read-write link types into the owning tab only.
  • Wrong/expired ?token= → 401/410 page; killed share → viewer disconnects.
  • Offline (no tunnel) → local URL works on localhost; file:// open attempts show an error toast.

Development

Проверка (единый блок):

pnpm run tsc && pnpm run compile && pnpm exec playwright test
# headless Linux (без дисплея):
xvfb-run -a pnpm exec playwright test

e2e (test/e2e.ts, Playwright + Electron) запускаются локально с дисплеем; в CI (.github/workflows/build.yml) их пока нет — там только lint + tsc + vite + pack.

pnpm install --ignore-scripts
pnpm run lint

Credits

Original author Vlad Shatskyi (Railsware) and 60 contributors. Revived by community — see railsware/upterm#1301.

License

MIT — see LICENSE.

About

STIOC - Share Terminal In One Click - Modern revival of Upterm - Electron 34 + xterm.js + Monaco 0.52 + Node 22

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages