Show HN: Seashells – Pipe output from CLI apps to the web in real time
seashells.io
seashells.io
I made a service to enable me to easily monitor long-running experiments (e.g. training neural nets). I thought it would be generally useful, so I'm opening it up to the public. I'm curious to hear what you all think!
Read a little bit more about the motivation here, if you're interested: http://www.anishathalye.com/2017/07/10/seashells/
1. An accounts system would be great so that I could just run ``python experiment.py | seashells u=almostarockstar p=hunter2`` or similar with keys, and then have a bookmark on my phone to view seashells.io/u/almostarockstar.
2. A self hosted / open source option would be awesome.
3. A way to view other peoples public seashells urls would make this interesting.
4. Possible options to allow html output which could be paired with a css file attached to your account.
Can't wait to set this up with my own experiments (evolutionary computation).
I'm not sure if the code is going to be open-sourced, but I'm adding TLS and also client-side encryption in the next version.
But seeing as view urls are quite shortlived by the sound of it, you shouldn't have too much of a problem moving their location from seashells.io/v/{url} to something like v.seashells.io/{url} if you do end up introducing some kind of HTML mode.
What's the actual benefit of using this, compared to just using init and taking care of that little html myself?
The project I made has two two-way bindings from Unix pipes directly to DOM elements and supports DOM events.
Like:
bpipe -s "#myInput" -e "keyup" | less
echo "hello there" | bpipe -s "#myDiv"
If anyone is looking for inspiration on this sort of thing check out: https://github.com/Marak/bpipe. Includes both client and server.Any chance we can get a self hosted version? It would be awesome if I could host it internally!
I'm not really sure what the differences are.
I'm going to implement client-side encryption in the next version!
I love netcat but for those without you can do this from within Bash:
echo "example" > /dev/tcp/seashells.io/1337 exec 3<>/dev/tcp/seashells.io/1337
cat <&3
echo "example" >3
Or something like that?Something to demo the "real-time" aspects is to use it together with IPFS's P2P pubsub functionality.
ipfs daemon --enable-pubsub-experiment
# Daemon now running with pubsub
ipfs pubsub sub mytopic | nc seashells.io 1337
# And now, everything you publish to "mytopic" appears on the seashell website
ipfs pubsub pub mytopic "Hello World"
# See content on websiteI think that a cooler name for this is SEEshells ;)
If you actually look through the site, OP mentions plans to add an accounts system soon for power users.
We don't know what kind of plans OP has for seashells. With a healthy base of power users, and no board of VC investors trying to milk it for all it's worth, a concurrent service that doesn't need registration is entirely plausible. That's reality.
[1]: https://wtee.readthedocs.io/en/latest/
[2]: https://tailon.readthedocs.io/en/latest/ ssh chat.shazow.net | nc seashells.io 1337
serving at https://seashells.io/v/FYh2Dt7t
It is really real time! much wow!http://www.oilshell.org/webpipe/doc/webpipe.html
(If you click through the image there is a screencast)
https://github.com/andychu/webpipe
This was mildly successful, although I didn't feel the UI was that great. It can be a little awkward to have the GUI in a separate window than the CLI.
Really I wanted some kind of tiling window manager, but I tried a few and they were surprisingly uncomfortable for a heavy CLI user like myself.
I still think there is some way to unify the CLI and GUI that hasn't been invented.
The advantage that I can see of this service is that it does not require any setup.
Disclaimer: I don't work for Papertrail or anything, we just use it on work to store our logs.
The idea with Seashells was to have a zero-overhead service that was available to the public without signup (kind of in the spirit of a URL shortener: anyone can make a short URL with no hassle).
Password-based client-side encryption is coming in the next version (so you won't need to trust the server operator anymore).
This is similar to https://github.com/benas/gossed (uni-directional) and http://websocketd.com/ (bi-directional) tools.
Both written in golang and open source.
What I really want is do is to allow users to leverage PubNub's Blocks system to create serverless awk'like aggregators in JS.
Gentoo ebuilds if anyone is interested: https://github.com/helb/gentoo-overlay/tree/master/app-shell...
I'd love to see this feature on Slack or Mattermost, to create instant and easy Snippets.
alias paste='curl -s -F '\''sprunge=<-'\'' http://sprunge.us | tee >(xclip -selection clipboard)'
Which on my system will create a paste of whatever you pipe to it and put the link to it in your clipboard.
A similar one I put together last year for my own uses: http://textdash.xyz/
Can you clarify how they are reaped? Is it a straight timer, or only after X hours of no reads + no writes?
There will probably be more options for persistence once there's an accounts system (to prevent abuse).
It's like watching paint dry, only more boring.
(Neat service though!)
I like this approach with a simple pipe.
can't wait to see a self hosted version :)