View Me on GitHub

Benevolent Gaze

Gently watch over your network
to know who is available and who isn't you can save on the guesswork.

Know who is on your network and greet them when they join!

Need to have a meeting? Find out if the person is present by checking their connectivity!

What it does.

Benevolent Gaze helps you keep track of who is connected to your network.

  • It scans your network to see who is present.
  • You run it locally with the gem inside of your network.
  • Allow users to register their devices under their name.
  • Allow users to upload a photo of themselves.
  • Have fun with a playful interface and a great way to see if people are around when you need to chat.

Easy to use.

Easy to use.

  • Users don't have to do anything but join your network.
  • Quickly and easily swap out graphics to have a nice branded interface.
  • Mount the gem in your web app to have a register url for users to submit their name and photo as part of your site.
  • Setup is quick and painless.
  • Once a user registers their name the same way on all devices you don't see dupliates on the board.
  • Avatars are shared so no matter what device joins, as long as the user has registered it with the same name, it will show up for all devices.
  • Use your local file system to save uploads by default or provide s3 creds to save it there.


If you are like us, you collaborate with your co-workers a lot and with how busy everyone is, it isn't always easy to figure out who is around.

Benevolent Gaze provides an easy and interesting way to see who is available in the office. If they are connected to your network they are going to be seen by the Benevolent Gaze. It is as simple as that.

It should be quick and painless to see who is on your network and who is available to collaborate with. Benevolent Gaze is your solution!


First, let's see if this version of Benevolent Gaze will work with your current network setup. Run the following command from your terminal:

$ ifconfig -a |awk '/broadcast/ { print $2 }' | xargs host

If it returns something like: domain name pointer Aarons-MBP.home.

You can use Benevolent Gaze! If it doesn't return a host name, you will have to wait for a future version of Benevolent Gaze.

Now let's get down to business!

**This version specifically targets the 16:9 aspect ratio**

Install the gem

$ gem install benevolent_gaze

Install a couple dependencies.

You will need to install parallel and Redis. If you use Homebrew, it is as easy as:

$ brew install parallel
$ brew install redis

You will also need to install Foreman.

$ gem install foreman

Then in the directory where you want your Benevolent Gaze related things to live (public folder, images etc.) Run the following command:

$ benevolent_gaze install wifi_username wifi_password

This requires two arguments, your wifi username and password so that guests know how to get on your network and be looked on by the Benevolent Gaze.

This command creates a folder caled bg_public which contains a Procfile to use with Foreman so that you can start the kiosk and the tracker. The kiosk is the web UI that lives at localhost:4567. The tracker is the script that scans your network and reports on who has joined.

Get your environment ready.

If you ran the `benevolent_gaze install` command above, you should now have a Procfile and .env file in your folder. The Procfile is good to go. The .env file will need populated with relevant information however. Leave the PORT set to 4567.


***You can use your local file system to save image uploads instead of AWS by just not filling in your AWS creds. It defaults to saving to your local file system if you haven't supplied any credentials.

Add a register url to your site.

If you want users to associate an image and a name other than their device name with their devices you should add the following to your web app that you want to add the registration url to. Add the following to your routes.rb file.

require 'benevolent_gaze/bgapp'

mount BenevolentGaze::BGApp, at: '/register'

This works by receiving information from the tracker you have running on your local network. So when users hit they are redirected to where you have the local kiosk running. Users can now upload a photo, and if they give their same name to all of their devices, they will all be grouped under one avatar.

Animated gifs are supported as well.

Now that you are set up. Let's get it up and running!

Step 1.

Make sure you have Redis running both locally and on the app where you mounted the application. You will need to set your redistogo url in an environment variable called REDISTOGO_URL on heroku (or wherever you have deployed the app where you mounted the registration endpoint).

$ heroku config:set REDISTOGO_URL=''

Step 2.

Start your local benevolent_gaze instance. Go into your bg_public folder and run:

$ foreman start

Step 3.

Go to localhost:4567 and check out the interface. You should be able to see people on the right hand side of the screen like the screenshot above!

Step 4.

Enjoy Benevolent Gaze with your friends and fellow colleagues!

We also provide a command line tool to help you add users.

You can add users one at a time in the following way:

$ benevolent_gaze add_user device name image

Running the above command using the device name of the users device, their real name and a url to their image will add them to redis and will help them be identified when they join the network. You would use this if you already had this information. Remember, they can register themselves as well, if you provide the registration URL mentioned above, or use

You can assign current users without names an image and a real name by using the following command:

$ benevolent_gaze assign_users

This will prompt you for the current users on the network, if any of them do not have a real name or image, it will ask you to provide one.

You can bulk assign users using a CSV by using the following command:

$ benevolent_gaze bulk_assign yourcsv.csv

This expects a csv formatted with the columns device-name, real-name, and image-url.