Pixelated is decentralised, encrypted email made easy – so easy that the user doesn’t even have to know what PGP is.

It has two components:

  1. User Agent: composed of a JavaScript single page webapp using FlightJS, and a RESTful Python service. This is the web email interface that the user sees. It also manages cryptographic keys. It can run on the user’s own computer, or be provided by a server to multiple users. Try it yourself.

  2. Puppet Module: installs and configures Pixelated on a server; provides a mail server platform that is easy to maintain – based on LEAP – and a user agent in multi-user mode.

This page will guide you through setting up a user agent on your own computer, which will connect to a remote platform (dev.pixelated-project.org).

Setting up your development environment

This could take 30 to 60 minutes or more depending on your internet connection – it will download about a gigabyte of data in total – so we recommend getting to the vagrant up step and then listening to the podcast while things are downloading.

If you have any troubles, don’t waste time – come and ask for help.

Setup

  1. Install VirtualBox and Vagrant. (In case of Windows, you will also need Putty )

  2. Clone the repo: git clone https://github.com/pixelated-project/pixelated-user-agent.git

  3. Start the virtual machine (downloads 600MB):
    cd pixelated-user-agent
    vagrant up

  4. For Windows environment, convert %USERPROFILE%\.vagrant.d\insecure_private_key to .ppk using PuTTYGen

  5. Wait until vagrant up returns you to your prompt; it may take some time for Puppet to prepare the machine.

  6. Log into the VM (sets up the project, downloads a few hundred more megabytes):

    • For non windows environment - vagrant ssh
    • For windows environment login using Putty using the following details
      Hostname: 127.0.0.1
      Port: 2222
      Username: vagrant
      Password: vagrant
  7. Create an account on the development platform:

  8. Ensure your terminal prompt inside the vagrant machine shows the virtualenv, like so: (user-agent-venv)vagrant@leap-jessie:~$. If instead you only see vagrant@leap-jessie:~$, please log out of the vagrant box, ensure vagrant up returned to your prompt, and log in again.

  9. Run the user agent:
    pixelated-user-agent --host 0.0.0.0

    • Which provider do you want to connect to:
      dev.pixelated-project.org

    • What’s your username registered on the provider:
      username (the one you created in previous step)

    • Type your password:
      ******** (the one you created in previous step)

    Connect to the provider using your credentials After 20-30 seconds, if the user agent starts up successfully, you will see this line in the output: Done, the user agent is ready to be used.

    To save yourself some typing if you want to restart the agent, create a config file with the following contents in the vagrant machine’s home directory:

    [pixelated]
    leap_server_name = dev.pixelated-project.org
    leap_username = username
    leap_password = *******
    

    You can then pass this file to the user agent when you start it to avoid prompts: pixelated-user-agent --host 0.0.0.0 --config ~/dev.conf

  10. Go to http://localhost:3333/. You should see a loading screen for a few seconds, then your inbox. If it sticks on the loading screen, check your terminal for errors, then get help.

You now have a user agent running on your local machine.

Your address is <username>@dev.pixelated-project.org. You should be able to receive emails using this interface, and send emails to other users on the platform (e.g. robin4@dev.pixelated-project.org or pamr@dev.pixelated-project.org). Sending emails to other domains is currently broken owing to bug #591.


Okay, now what?

Choose an issue from those labelled “Hacknight” on GitHub that sounds like it might be an easy place to start, add a comment on the issue and let us know on Keybase that you are working on it.

If it’s not clear how to progress with the issue, or you need anything to be explained, come and get help.

Check the user-agent readme for pointers on how to run tests, etc. Check the contribution guide before you submit a pull request.


Come and get help

You will probably run into problems. Don’t waste time – some of the core Pixelated team, and other Cryptohackers, are here to help. Come and ask your questions in Keyybase.


Common issues

We’ll add common issues to this page – feel free to submit a pull request if you can make anything on this page clearer.

How do I see the result of my changes?

From the readme:

  • For all Python changes, you will need to kill (Ctrl-C) the server and run pixelated-user-agent --host 0.0.0.0 again.
  • For most JavaScript or HTML changes, you will just need to reload the browser. For changes involving CSS or Handlebars templates, you will also need to run: cd /vagrant/web-ui && ./go build

I think I might be able to hack together a quick-and-dirty lo-fi solution for the issue I’m working with… what do I do?

Do it the easy way first, and submit a pull request as a “work in progress” as soon as you have a quick-and-dirty solution (or even an unfinished solution) — that means you can get feedback from the core developers about whether you’re heading in the right direction sooner rather than later. Include “WIP” (work in progress) in the description of your pull request and ask for review, or feedback on anything specific.

Posted by Pam and Robin