Skip to main content

Paradrop Edge Computing Agent

Project description

Paradrop

Documentation Status Coverage Status Build Status Snap Status Docker Image

Get it from the Snap Store

What is Paradrop?

Paradrop is a software platform that brings the cloud into the home by enabling apps to exist on Wi-Fi routers. The Wi-Fi router is the last always-on, always-connected, ubiquitous device in the home today. At Paradrop Labs, we believe that some (if not most) cloud or smart-hub services should actually exist on Wi-Fi routers.

Read our paper or visit our website to learn more!

What can I do with Paradrop?

Since Wi-Fi routers are the central nervous system for all Internet based services in the home, the possibilities are quite endless. We have implemented many example applications, you can see the source code here. We encourage you to test out Paradrop by cloning our repo and checking out our getting started page.

Get Started

Paradrop uses Docker containers to run edge computing services, but Paradrop itself can also run as a Docker container. This is a good option if you want to try out Paradrop's core functionality without using special hardware or changing your operating system.

Docker Container in Safe Mode

Run the following command if you only want to test the core edge computing functionality. This will allow you to install and remove chutes, experiment with the edge API and connect the node to the cloud controller. Since this command creates a container separated from the host network, Paradrop will not be able to manage the network interfaces, wireless networks, and firewall settings of the host operating system.

docker run --privileged --name paradrop --publish 8080:80 -v /var/run/docker.sock:/var/run/docker.sock paradrop/daemon

After the Paradrop daemon is running, you can access the admin panel with a web browser by going to http://localhost:8080. If prompted, enter the user name paradrop and no password. You can also use pdtools node commands such as the install-chute command. The following example assumes you are running it from a directory containing the source code for a chute, which means there should be a valid paradrop.yaml file in the directory.

pdtools node --target localhost:8080 install-chute

Docker Container with Host Network Access

Run the following command if you want to test all of Paradrop's functions. Giving the Paradrop container access to the host network stack will enable it to manage network interfaces, wireless networks, and firewall settings. By default, Paradrop will try to create a wireless access point using one of the machine's WiFi interfaces. Warning: because Paradrop will make potentially disruptive system configuration changes, we do not recommend running Paradrop using the following command on a workstation that you use for other purposes. Consider running it in a virtual machine instead.

docker run --privileged --name paradrop --net=host -v /var/run/docker.sock:/var/run/docker.sock paradrop/daemon

You can access the Paradrop node in the same way as described in the Safe Mode section above. However, the node is listening directly on the host port 80. That means you can access http://localhost or use pdtools node --target localhost.

Applications

Paradrop is just a platform for running edge computing applications, which we call chutes. Once you have a Paradrop node running, you may want to check out one or more of the following example chutes that can run on Paradrop.

  • captive-portal This chute creates a WiFi network that uses iptables rules to redirect users to a landing when they first connect to the network. It works nicely with CNA implementations on most popular devices.
  • Cells A multiplayer browser-based action game where players take control of a cell. The goal is to gain as much mass as possible by eating food and smaller cells and avoid being eaten. The code was developed by another team and adapted to run on Paradrop.
  • Drop64 Run a Nintendo 64 emulator in a browser window. This chute was created by using emscripten to compile mupen64plus to JavaScript.
  • go-hello-world Example chute that implements a web server in Go.
  • gradle-hello-world Example chute that implements a web server using Java and Gradle.
  • node-hello-world Example chute that implements a web server using Node.js.
  • ParentalControlStarterChute This chute creates a WiFi network that implements content filtering at the HTTP and DNS levels. This code has been used in tutorials, so it is intended to be a starting point rather than a complete application.
  • python-socket-example Example chute that implements a basic TCP server in Python along with example client code.
  • Security-Camera This chute works with wireless cameras to implement basic motion detection. The code has been used in tutorials, so it is more of a starting point than a complete application.
  • StickyBoard This project demonstrates using edge computing for localized content. Users who connect to the Paradrop node are able to post pictures on the "sticky board" that are only viewable by other people on the same network.
  • traffic-camera This chute demonstrates a computer vision task implemented at the edge. It uses an OpenCV cascade classifier to detect and count vehicles in video from a traffic camera.
  • WiFiSense This chute uses WiFi monitor mode to detect nearby devices and send periodic reports to a configurable server. Running this on multiple Paradrop nodes could be used to implement interesting behavior analytics.
  • wiki This project implements a simple wiki page. The code is from an open source project that was adapted to run on Paradrop.

Preparing a new release

  1. Merge changes into the master branch.
  2. Run ./pdbuild.sh release <version> to update version number and tag the release.
  3. Run ./pdbuild.sh build to build a new snap.
  4. Run ./pdbuild.sh image to build a new disk image.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

paradrop-0.13.3a2.tar.gz (174.0 kB view details)

Uploaded Source

Built Distribution

paradrop-0.13.3a2-py2.py3-none-any.whl (229.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file paradrop-0.13.3a2.tar.gz.

File metadata

  • Download URL: paradrop-0.13.3a2.tar.gz
  • Upload date:
  • Size: 174.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/2.7.15+

File hashes

Hashes for paradrop-0.13.3a2.tar.gz
Algorithm Hash digest
SHA256 d1b7c1a915946e171afd0bfbfbd0b42d7b792d981a97331cd49e8dce9bb00994
MD5 5f998cae6b5718c1ab0ab725e5cb6ef7
BLAKE2b-256 d8a8b368cbf13ffb0083de2788eb96080d667b740c32e748b9760900585ccd3b

See more details on using hashes here.

File details

Details for the file paradrop-0.13.3a2-py2.py3-none-any.whl.

File metadata

  • Download URL: paradrop-0.13.3a2-py2.py3-none-any.whl
  • Upload date:
  • Size: 229.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/2.7.15+

File hashes

Hashes for paradrop-0.13.3a2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 b5235a021cdd3a48fbded607e439b1736a87444576360e1564e634acafe04d60
MD5 65188c1b7e795d4d547db71a7e7625ca
BLAKE2b-256 9fe7eee38af367cf6f4006212157d6d537fa9e2c4f0580c0bcdc7e1894265b5b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page