# websocketd > websocketd wraps an existing command line program and serves it over > WebSocket. Any program that reads standard input and writes standard > output becomes a WebSocket server, with no networking code of its own. > One process is started per connection, so connections share no state > and there is no built-in broadcast. The site is organised on the four Diataxis modes. Pick the section by what you need right now: to be taught (start), to get a job done (how-to), to look up a fact (reference), or to understand why (understanding). For every page concatenated into one document, see /llms-full.txt, generated at build time from the same content this index describes. ## Start — learning - /start/ — install, then one lesson that ends with a browser talking to a script - /start/install/ — get the binary on your PATH, or build it with go build - /start/tutorial/ — wrap a script, drive it from the dev console, serve your own page ## How-to — doing - /how-to/ — the three groups below ### Language fixes: a script that streams in a terminal but not under websocketd - /how-to/languages/ — group index - /how-to/languages/python/ — python3 -u, or flush after each print - /how-to/languages/ruby/ — STDOUT.sync = true - /how-to/languages/nodejs/ — read stdin with readline; output needs no flush - /how-to/languages/php/ — flush(), ob_flush(), and the