Awesome Open Source
Awesome Open Source



Stream and send data, terminal to web and vice versa.

License Build Status Go Report Card GoDoc


  • 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.

Streamhut allows you to stream (pipe) realtime data from your terminal stdout/stderr to a web xterm UI or even to another terminal. It also allow you to quickly share data and files between devices.

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!



Getting Started (without installing anything)

One liner to stream your terminal:

$ exec &> >(nc 1337)

The above command pipes stdout and stderr of new bash shell to streamhut.

Stream to a custom channel name:

$ exec &> >(nc 1337);echo \#mychannel

Example of streaming tail of file:

# terminal 1
$ cat > data.txt
# terminal 2
$ tail -F data.txt | nc 1337

Stream the current date every second:

$ while true; do date; sleep 1; done | nc 1337

Stream output of a program (delay is required to see share url):

$ (sleep 5; htop) | nc 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 1337)

Don't have netcat available? Pipe to a file descriptor with an open TCP connection:

$ exec 3<>/dev/tcp/ && head -1 <&3 && exec &> >(tee >(cat >&3))


$ go get


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 -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


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


make test


Start server:

make start

Run migrations:

make migrate

Web App

The web app source code is found on


  • Q: How is the stream log data stored?

    • A: Currently it's stored in a local sqlite3 database. You can disable storage with the --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?

    • A: Yes! send #{channel} (ie #mychannel) as the first stream text to use that channel.


      exec &> >(nc 1337);echo \#mychannel
  • Q: What's the difference between and

    • A: The domain is an alias for, meaning you can type as the domain for convenience. Other aliases are and
  • Q: What is the difference between exec > >(nc 1337) 2>&1 and exec &> >(nc 1337)

    • A: They are the same in that they both stream stdout and stderr to the server.


Released under the Apache 2.0 license.

Alternatives To Streamhut
Select To Compare

Alternative Project Comparisons
Related Awesome Lists
Top Programming Languages
Top Projects

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Javascript (1,060,209
Golang (158,344
Command Line (131,509
Docker (97,304
Server (66,250
Web (37,373
Stream (21,119
Terminal (17,841
Websocket (13,853
Real Time (10,519
Telnet (1,604
Netcat (676
Stdout (131
Terminal Share (4