Decentralized applications on Golem
Deploying long-running, decentralized services on Golem using no-code tools.
Golem is a network which enables its participants to make computing resources available for use by those who would wish to use them. From the perspective of requestors, among other uses, it allows services to be requested, deployed and run on the network’s providers.
The dApps on Golem project is a solution to deploy multi-layer apps on the Golem Network, without a need to dive into the APIs. Instead, the structure of the application is stored in YAML files, so the process may feel familiar for those of you who have some experience with e.g. docker-compose.
By a dApp - or a decentralized application, in the context of Golem, we understand such a combination of services and additional resources within the network, that together constitutes a full application, e.g. a website or a public API, running entirely on the Golem network.
Such services or decentralized applications can be run by virtually anyone as long as they have some GLM tokens to pay the providers for their work.
Please be aware that the dApps on Golem project is still in early access and should be considered experimental. Please reach out to us on our community Discord if you'd like to help us improve these tools.
While working with dApps, we created a few applications on top of it, which served us both as a testing ground and as a way to validate our approach. On the other hand, they were also designed to give you first a good starting point and later a reference when developing your own, similar apps.
ToDo List App
This application showcases utilizing the Golem Network to host a 3-layer application (React + Flask + RQLite)
Weather Stats App
This application presents usage of the Golem Network with access to external services (not hosted on Golem) taking advantage of the outbound network connections.
The payloads are the definitions of activities that a requestor wishes to be executed on Golem along with a complete set of parameters needed to initialize those activities. Those parameters can specify, e.g. what runtime and which container image to use or what the CPU or memory specifications are required by the payload.
An example of such a service could be e.g. a web server that is to be deployed using Golem’s VM runtime with a VM image containing an HTTP daemon, using a specific initialization script, exposed to the outside world using a specific gateway.
Building upon the foundations of the Golem’s Service model, the Golem Deploy model provides a way to describe sets of services that constitute full, multi-layered applications using declarative definitions, which require no programming knowledge and no code to be written.
Instead, those definitions are constructed using a simple, hierarchical structure expressed as e.g. a YAML file, similar to those used by tools that allow such sets to be deployed either locally or on common cloud providers, e.g.
The model and the schema used are documented in:
Dapp-runner is an initial, reference implementation that allows applications defined as Golem dApps to be deployed and maintained on the Golem network. It takes one or more application descriptors expressed as YAML files, constructs the desired dApp model for such an application and executes all operations needed for the services constituting the app to be successfully deployed on Golem.
Dapp-manager is a simple CLI tool used to manage and run several separate instances of the
dapp-runner. So, whereas
dapp-runner’s sole responsibility is deployment of a single application,
dapp-managercan facilitate running several applications and easily monitoring their states using a simple command-line interface.
The Requestor Portal (portal.golem.network) is Golem’s showcase website, allowing external users to run demo applications on Golem through a simple web interface without having to run Golem nodes themselves.
dapp-managerunder the hood to orchestrate and interact with those deployments.