CypherBunk 2076

If you are looking for my encryption app, you can use it here.

NOTE: It is a single HTML file, so you can also save it to encrypt/decrypt offline or on your own site (as long as you link here for attribution).

Imagine...

Turning on the TV, Opening LocalMess in a Browser, and just selecting the channel you want.

Last night you were watching your Comedy Movies playlist, and that channel is saved, ready for you to resume.

But right now you tune into the Game channel, because your daughter has started a game of Bingo for the family.

Grandma arrives, mid game, but can open her phone, tune to your game channel, and get a virtual Bingo Card for the next round.

After the game you open up the Recipes app to find the recipe for the meal you are going to make.

Meanwhile your son has switched the TV to the Music channel, and has some background music going while you prepare the meal.

You can't hear the music well from the kitchen, so you join the same channel with your phone to have the same song playing at the same time in the room you're in.

As you eat dinner, you turn the TV to the Comedy Movie channel to pick up where you left off, but only half the table has a good view of the TV, so you prop a Tablet onto the table and tune to the same channel so people on the other side of the table can see the movie too.

Unfortunately you have to duck out and prepare dessert, so you use your phone to tune into the same movie channel so you don't miss a beat while you are in the kitchen getting dessert ready.

After dinner, you browse through some Audio Books and select one to listen to as a bedtime story for the kids. You tuck each child in bed, kiss them goodnight, and then leave their phones tuned into the audio book channel. When the first chapter is over, using your phone, you tell the book to pause, and you leave the channel open for use tomorrow night.

What is LocalMess:

I was setting up a media server for my home, but I didn't love any of the options out there. They tracked me, required a beefy server, & didn't have the features I wanted.

So, I decided to make my own.

This breakdown of what I'm going to offer compared to the competition shows my driving principles:

Feature LocalMess Jellyfin PLEX
Free & Open Source
Shared Experiencepartial
Lightweight
Impermanent Storagepartialpartial
Multi-Mediapartialpartial
App-less
Offline Functionality
Dual Use
Gamingpartial

Free & Open Source. How will you make money?

The good news is, I don't need to make money. I want this project to exist just for me. Any money I might make on it is a bonus.

So while I will have links for donations, I don't expect anyone to pay me up front. I want them to use the service, and if they like it do one or more of the following: 1) tell their friends 2) review it on social media 3) donate a few bucks 4) contribute to the code-base 5) make their own game that can run inside LocalMess.

What do you mean by "Shared Experience"?

Imagine you are chillin' on the couch with your family, streaming some video to the TV, when someone needs to go to the bathroom. You have to pause the show and wait until they are back so they don't miss anything.

With LocalMess, I want any device to be able to join a stream in-progress and auto-sync up with where the other devices are at. So you could grab your phone, join the same "channel", and go to the bathroom and not miss a beat. No pausing required.

This is most important for Gaming, as people will be able to use their phones like controllers for party-style games. (Read more in the Gaming section)

Why does it need to be Lightweight?

If it can run on a potato, then anyone can afford it.

I do all of my development and testing on a Raspberry Pi 3 to ensure I don't require too beefy of a server. Anything that can run Linux & PHP will work.

Wherever possible, each page in the site will be pure HTML/CSS/JS. PHP will only be used where absolutely necessary (like configuration changes that need to be written to the server).

This will, however, put more onus on the client-side. So devices will need to have enough memory to handle searching through a large amounts of JSON (depending on how big your libraries are). Most modern devices you would watch a video on won't have a problem with this. For weaker devices, they should still be able to "tune in" to a shared experience. They just have to have a browser that supports Web Sockets (really old phones/tablets may not work).

What does "Impermanent Storage" mean, and why does it matter?

Impermanent simply means you should be able to swap what media is available on your server.

Most people don't have a giant NAS with RAID to store a Terabyte of media. Most people have a bunch of DVDs and a bunch of Jump Drives where they could put some movies.

I want you to be able to throw a handful of movies on a drive, plug it in, and have it be available for streaming.

As far as the library goes, I want to display anything you've catalogued in the past as something you have access to, but you can always filter down to "currently streamable" if you want to see only the items on the flash drives you currently have connected.

Another use case is adult media. Maybe you've got a jump drive of all your rated R movies, and you leave it unplugged during the day when your kids are streaming to ensure they just can't access restricted content (obviously there will be parental controls as well, but sometimes we parents forget to log out of something, and kids use our device logged in as us).

What types of Media will you support?

Video, Music, Photos, Audio Books, eBooks, HTML Games, Flash SWFs, Emulation ROMs, as well as generic File Sharing like a NAS.

While not everything will be streamable (like your book library, if you haven't provided an eBook), we want everything to be searchable.

So think of LocalMess like your own local web server that includes movies, tv, music, books, games, etc. Anything you want, even recipes, contact info, jokes, or software installers.

It also should serve as a library for those pieces of media EVEN IF they aren't currently streamable.

For instance, I have a large book collection. I want to be able to browse and search my book selection to pick the next one I'm going to read. LocalMess should be able to scrape titles, images, and metadata for me.

Why don't you want an App?

Apps are bad for a few reasons. First of all, it limits the types of devices that can connect to your server, whereas nearly any smart device has a web browser.

Secondly, apps are black boxes where you have to trust that they aren't tracking you in ways you don't like. You can't just dip your fingers into their settings and disable them from phoning home, for instance.

Lastly, apps are just 1 more attack vector for hackers. That's not to say that a web browser has never been hacked, but that you likely have a web browser on all your smart devices any way, so by limiting the number of apps required, it limits the number of attack vectors.

While I don't want to force app use, I do want to organize things so that KODI could be used to view the media on the site. It would be totally optional, but there are smart TVs that struggle with web browsers, yet have solid KODI apps. So I always want that to be an option.

How can it work offline?

How can't it, is the better question ;)

We've reached an age where internet connection is implicit. This comes with many downsides. First of all, it makes developers lazy. They can pull in libraries or files on the fly any time they need them, which in turn makes them rely on too broad a set of libraries. It also means that your server is less secure because hackers may be able to ping it and your server is only as strong as the weakest included library.

LocalMess will require internet on its initial setup ONLY IF you haven't already provided the required libraries (which will be an explicit and very finite list. Basically just PHP and Curl).

LocalMess will require internet any time you want to scrape metadata (though alternate methods will be provided so that you could scrape on another machine and upload to LocalMess, or you could just manually enter the metadata and upload photos yourself).

Because of its Dual Use nature, it doesn't even need LAN (though far more features will be disabled without LAN, like simultaneous viewing, gaming through your phone, remote control through your phone, etc...)

How does Dual Use work?

Most people will likely use a tiny computer like a Raspberry Pi, put it near their router, and access LocalMess via Network.

But, suppose you don't have a smart TV. Then you are better off putting the Pi by your TV, connecting with HDMI, and just wirelessly connecting to your network. That way your TV has direct access to the server via HDMI cord. It can then serve as the shared main screen, and anyone wanting to connect to it can do so with their smart device.

What sorts of Games are we talking about?

This is NOT like a Steam link. We will not be streaming from your PC.

But, there are a few types of games it will be able to stream: HTML Games, ROMs, & SWFs.

HTML Games via Web Sockets will be the primary goal. Think of games like Jackbox or Rifftrax, though initially we'll shoot for simpler party games like Bingo or Hangman. Games where there is a shared element on screen, possible private elements on your phone, and multiple players inputting through their phone.

ROMs will be streamable through open source JS libraries. It won't be able to do the latest and greatest, because JS is slower language, but it should be able to handle the first few generations of consoles.

Flash SWFs, what is this, the mid 2000s? Sure, you may never use this feature, but some of us squirreled away quite the library of SWF games back in the day, and we'd like to take a stroll down nostalgia lane every now and then. Ruffle allows you to emulate what you used to be able to do with Adobe Flash. It won't work on every SWF, but has a good level of support. As they improve, you could overwrite the older version of Ruffle that will be included in the LocalMess code base.


See Dev Updates on YouTube