Stream your terminal to web without installing anything 🌐 by @miguelmota
streamhut
Stream and send data, terminal to web and vice versa.
Synopsis
- Stream your terminal to anyone without installing anything.
- Path names map to channels.
- Anyone in the same channel can view what's streamed.
- Easily self-host your own streamhut server.
As long as you have netcat which comes pre-installed in most *nix systems than you can use streamhut! If you can't install netcat, you may also use the streamhut CLI client.
⚠️ Disclaimer: This software is alpha quality and not production ready. Use at your own risk!
Demo

Getting Started (without installing anything)
One liner to stream your terminal:
$ exec &> >(nc stream.ht 1337)
The above command pipes stdout and stderr of new bash shell to streamhut.
Stream to a custom channel name:
$ exec &> >(nc stream.ht 1337);echo \#mychannel
Example of streaming tail of file:
# terminal 1
$ cat > data.txt
# terminal 2
$ tail -F data.txt | nc stream.ht 1337
Stream the current date every second:
$ while true; do date; sleep 1; done | nc stream.ht 1337
Stream output of a program (delay is required to see share url):
$ (sleep 5; htop) | nc stream.ht 1337
waits 5 seconds, and then send contents of program.
Example of piping a program to both stdout and streamhut:
$ (echo -n; sleep 5; htop) | tee >(nc stream.ht 1337)
Don't have netcat available? Pipe to a file descriptor with an open TCP connection:
$ exec 3<>/dev/tcp/stream.ht/1337 && head -1 <&3 && exec &> >(tee >(cat >&3))
Install
$ go get github.com/streamhut/streamhut
CLI
Example of using streamhut CLI:
Stream to server
Piping commands:
$ htop | streamhut
Add delay to see share url:
$ htop | streamhut -d 5
Open url in browser:
$ htop | streamhut -o
Stream to different server:
$ htop | streamhut -h example.com -p 1337
Stream to custom channel:
$ htop | streamhut -c mychannel
For more options, run streamhut --help
Run your own server:
$ streamhut server
Starting server... HTTP/WebSocket port: 8080 TCP port: 1337
Run server with SSL/TLS:
$ mkcert localhost
$ sudo streamhut server --tls --tls-cert=localhost.pem --tls-key=localhost-key.pem -p 443
For more options, run streamhut server --help
Connecting to a channel
# terminal 1
$ streamhut connect -c mychannel
For more options, run streamhut connect --help
Docker
You can run streamhut as a Docker container:
$ docker pull streamhut/streamhut
$ docker run -e PORT=8080 -e TCP_PORT=1337 -p 8080:8080 -p 1337:1337 --restart unless-stopped streamhut/streamhut:latest
Self-host (docker one-liner)
One-liner to self-host using Docker:
docker run -p 8080:8080 -p 1337:1337 streamhut/streamhut
Test
make test
Development
Start server:
make start
Run migrations:
make migrate
Web App
The web app source code is found on https://github.com/streamhut/web.
FAQ
- Q: How is the stream log data stored?
--no-storage flag, e.g. streamhut server --no-storage.
- Q: What happened to the streamhut NPM module?
- Q: Can the same channel be used more than once?
#{channel} (ie #mychannel) as the first stream text to use that channel.
Example:
exec &> >(nc stream.ht 1337);echo \#mychannel
- Q: What's the difference between stream.ht and streamhut.io?
- Q: What is the difference between
exec > >(nc stream.ht 1337) 2>&1andexec &> >(nc stream.ht 1337)
License
Released under the Apache 2.0 license.