Chat with WebRTC, LevelDB and Sockets
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
public change to single quotes like a dad Sep 17, 2014
routes fixed key stuff Sep 25, 2014
tests You tricky  s... Fixes #224 Sep 7, 2014
views fixed key stuff Sep 25, 2014
.gitignore added admin auth support Feb 27, 2014
.jshintrc Fixes #50. JSHint: adds grunt-contrib-jshint; jshint task added to de… Oct 28, 2013
.travis.yml Lolwords 😭 Jan 13, 2014
Gruntfile.js Don't ignore public/javascripts/base/transform.js when watching or in… Jan 15, 2014
Makefile initial commit Jul 24, 2013 Merge pull request #234 from TheAlphaNerd/fix/readme-setup Aug 25, 2014
README.mde Merge pull request #234 from TheAlphaNerd/fix/readme-setup Aug 25, 2014
clients.json-dist updated client.json-dist Oct 27, 2013
local.json-dist add hellbanning Mar 22, 2014
settings.js fixed key stuff Sep 25, 2014
whitelist.json-dist added admin auth support Feb 27, 2014

Meatspace Chat

Build Status

Before you send a pull request

Note that we are not taking any new features or changes - if you feel like something is that important to the chat, please contact ednapiranha before sending something that might be rejected.

If you want to create a browser add-on or plugin feel free to do so and follow the API instructions below. Then send us a pull request with your link at

Setting up

brew install zeromq redis
redis-server &
cp local.json-dist local.json
cp clients.json-dist clients.json
cp whitelist.json-dist whitelist.json
npm install
npm -g install nodemon
bower install
npm run-script build
npm start

Create a Twitter Application for Meatspace

Sign in with your Twitter account to and create a new application.

Fill in the details for your local setup like so:

Twitter settings

Save your settings then go back and edit the settings again. Check off the 'Allow this application to be used to Sign in with Twitter' and save.

Open your browser at


You can listen to the socket to receive incoming messages or use long polling at either or

A meatspace chat message is a nested dictionary in the form

            media: data:image/gif;base64,<base64 data>,
            message: '<message; may be empty>,
            ttl: 600000,
            created: <time-string>,
            fingerprint: <32-byte hex>

        key: <unique message key>

Mute feature

If you mute a user then you won't see any new posts from them at that machine and IP. There is an unmute button in the menu in the top right corner.

Native apps (iOS/Android) or Non-web clients

If you need an apiKey to post from your app, contact me at and I will try to hook you up! You will get access to staging server to see if everything works and see if it is appropriate for the production server (which I will give you a new apiKey).

If you plan on using node and the for a bot or other purposes, ensure you have ~0.9, as ~1.0 isn't compatble with the ~0.9.


If you are doing native or non-web calls to the API, you will first need a valid apiKey and then you can make the following calls:

Push a new message through a socket request and provide the following data:

    apiKey: <apiKey>,
    message: <text message; can be empty>,
    picture: data:image/gif;base64,<a base64 blob of the gif data>,
    fingerprint: <a unique identifier for the user posting from the client, preferably md5-hashed>