Deploy UI Challenge Proposal - Harbinger Electron Desktop App



Harbinger is a cross platform deployment manager for Akash that runs as an Electron desktop app. It directly interfaces with the Akash CLI via a REST API hosted locally on your system, which by nature grants you absolute control over your keys, deployments, and data.

Harbinger is completely open source, transparent, and uses whatever version of the Akash CLI that is installed on your system path to execute commands. This approach allows users to audit both Harbinger and Akash code bases to ensure nothing fishy is going on and commands are doing what they say they are doing.

Harbinger is very early in development and in its current state, allows wallets to be created, deleted, imported, and read. With a valid wallet, a user can view details about its balance and generate certificates if the wallet has sufficient funds.

Technical Summary

Harbinger utilizes a SQLite, Express, Vue, Node (SEVN) stack via Electron to interface with the Akash CLI and provide visualization. The backend hosts an Express REST API with endpoints that correspond to different Akash CLI commands. For example, sending a POST request to http://localhost:3000/akash/keys will generate a new private key or wallet and store it in the default secure location depending on the OS, as is the default behavior of the Akash CLI.

A typical data flow model starts with the front end sending a request to an API endpoint. The backend then uses middleware to verify that the data has all the required fields and does not contain invalid input before translating the request into an Akash CLI command. Once the command is constructed, a shell is spawned as a child process and the command is run. All commands are sent with the —output json flag set so that when the process returns output through stdout it can easily be parsed into a JavaScript object using JSON.parse. At this point, the command has been run and output has been received and parsed to be sent in a response back to the frontend for it to display and manipulate as it wishes.

Most of my backend development process used test driven development written using Mocha, Chai, and Superagent in hopes that if someone wanted to fork or contribute to this code they could test their newly added functionality works and integrates with the existing code base.

The frontend uses Electron & Vue with Vuex and Vuetify for managing global app data and providing a visually appealing interface for users to interact with (I am a horrible artist :P). Electron allows the app to be served as a cross platform desktop app or web app.

For additional details, pictures/gifs, and installation instructions checkout the GitHub readme at:

I will be posting a video soon covering the app’s current functionality, how it looks, and what I hope to accomplish. Even though the hackathon is drawing to a close I would love to finish up the rest of the app at least to MVP status and attempt to qualify for additional seed funding.

Thanks for checking out my project!


Wow, that is awesome! Great work.

Thanks for your submission to the hackathon! Winners will be announced on Monday, August 2nd via youtube livestream, the exact time to be determined, and promoted across our public channels.