sz.ws
v0.1.3
Published
Official CLI for the sz.ws studio — terminal lobby, and entrypoint for the ecosystem.
Readme
sz.ws
Official CLI for the sz.ws studio.
npx sz.wsBare run opens an interactive terminal lobby (in a TTY): coloured ASCII mark in a centered card, ↑↓ to select, ↵ to open. Piped / CI falls back to a static catalogue. No account, no network.
| Key | Action |
|---|---|
| ↑ ↓ / k j | Move selection |
| ↵ | Open the focused product |
| o | Open https://sz.ws |
| q | Quit |
Force the static print: SZ_WS_STATIC=1 npx sz.ws.
Product catalogue
The list is bundled with the CLI, and the interactive lobby additionally tries
https://sz.ws/api/catalogue.json so a new product can appear without a
release. If that fetch fails, times out, or returns anything malformed, it is
ignored silently and the bundled list is what you see — the endpoint is an
enhancement, never a dependency.
| Var | Meaning |
|---|---|
| SZ_WS_CATALOGUE_URL | Override the endpoint |
| SZ_WS_OFFLINE=1 | Never fetch (implied by CI=true) |
| SZ_WS_CATALOGUE_CACHE | Override the cache path |
Responses are cached for 6h under ~/.config/sz.ws/catalogue.json. Only the
interactive lobby fetches; piped and SZ_WS_STATIC=1 runs read cache or fall
back, so scripts never wait on the network.
Every entry's href must be https on an sz.ws host. Enter opens that
URL in a browser, so a remote list is remote control over where the CLI sends
people; entries failing the check are dropped. The response shape:
[{ "name": "drop", "status": "live", "note": "ephemeral hosting",
"accent": "#FF5310", "href": "https://drop.sz.ws" }]Install
npm install -g sz.ws
# or
npx sz.wsCommands
| Command | Description |
|---|---|
| sz.ws | Interactive lobby (default) |
| sz.ws <product> … | Run a studio product — routed to @sz.ws/<product> via npx |
| sz.ws open [path] | Open sz.ws (or a subpath) in the browser |
| sz.ws install <pkg> | Install @sz-ws/<pkg> |
| sz.ws init | Scaffold (stub) |
| sz.ws login / whoami | Auth stubs |
| sz.ws version | Print version |
| sz.ws help | Usage |
Routing
Anything that is not a built-in command is treated as a product name and handed
to @sz.ws/<name> with the rest of the arguments untouched:
npx sz.ws drop ./site.zip 7d # → npx -y @sz.ws/drop ./site.zip 7dThis is a wildcard, not a table of known products: a table would need editing and republishing every time the studio ships something. npm is already the registry of what exists — if the package is there it runs, and if it is not you get told so. stdio is inherited, so the child owns the terminal and its own progress bars and prompts work normally.
Design notes
- Mark colours follow the brand loop S·Z·W·S — yellow / green / blue / pink.
- The lobby is a single boxed card, horizontally centered in the terminal.
NO_COLOR=1(or a non-TTY pipe) prints a plain lobby.- Narrow terminals (< 54 cols) collapse the figlet to a compact
sz.wswordmark.
Requirements
- Node.js >= 18
Links
- Homepage: https://sz.ws
- drop: https://drop.sz.ws
- across: https://across.sz.ws
- Repository: https://github.com/sz-ws/sz.ws
License
MIT
