Skip to content
A curated list of Wasm binaries that run in Golem
Branch: master
Clone or download
lukasz-glen and kubkon raw and with client apps (#2)
Make a distinction between raw Wasm bins and apps with GUI/CLI included
Latest commit 4625b1c May 15, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
7-zip Add licensing information Mar 19, 2019
dcraw Add licensing information Mar 19, 2019
flite Add licensing information Mar 19, 2019
.gitattributes Reorganise to match Golem's task api Mar 19, 2019
README.md raw and with client apps (#2) May 15, 2019

README.md

Wasm-store

A curated list of precompiled Wasm binaries of programs that are known to successfully work with Wasm sandbox in Golem. The list includes applications located directly in this repo, as well as links that point to external sources. The applications can either be in a raw, Wasm format, or (preferably) they can be augmented with a GUI/CLI for the user's convenience. Using raw Wasm binaries implies that the user has to be able to prepare the corresponding task.json and the required folder structure themselves, and be able to directly connect with their Golem client (e.g., via the use of the Golem CLI). Therefore, as such, this approach requires some technical knowledge of the Golem's internals. See here to learn how to launch a Wasm task in Golem. The applications augmented with a GUI/CLI are naturally more user friendly, because they handle communication with Golem node, Having said that, there currently is no generic way of preparing such a GUI/CLI. There are some examples however. See the g-flite app for instance.

The list of applications with GUI/CLI:

The list of raw applications:

  • 7-zip - 7-zip archiver
  • dcraw - raw image to tiff/ppm
  • flite - text-to-speech

Cloning the repo

When cloning the repo, remember to set up git-lfs for this repo on your machine. Usually, this can be accomplished as follows:

$ git clone https://github.com/golemfactory/wasm-store
$ cd wasm-store
$ git lfs install
$ git lfs pull

Contributing

We welcome contributions in the form of links to precompiled Wasm binaries of other programs. If you would like to submit such a link, do not hesitate to open a new PR. Your repo should contain README file and license. If it is a raw Wasm binary, it should follow the guidelines below. For apps augmented with GUI/CLI, the requirements are more relaxed and not set in stone, with the only must-have: good user experience :-)

Directories structure

When contributing an application in a raw Wasm format, please make sure that the submitted link adheres to the structure expected by Wasm task in Golem. That is, we're looking for dir structure similar to the following

.
|-- task.json
|-- README.md
|-- LICENSE
|-- input_dir
|   |-- program.js
|   |-- program.wasm
|   |-- subtask1
|   |   |-- input_file_1_1
|   |   `-- input_file_1_2
|   `-- subtask2
|       |-- input_file_2_1
|       `-- input_file_2_2
`-- output_dir
    |-- subtask1
    |   |-- output_file_1_1
    |   `-- output_file_1_2
    `-- subtask2
        |-- output_file_2_1
        `-- output_file_2_2

where the task.json would consist of

{
    "type": "wasm", 
    "name": "program", 
    "bid":  1,
    "subtask_timeout": "00:10:00",
    "timeout": "00:10:00",
    "options": {
        "js_name": "program.js",
        "wasm_name": "program.wasm",
        "input_dir": "<abs_path_to_the_repo>/input_dir",
        "output_dir": "<abs_path_to_the_repo>/output_dir",
        "subtasks": {
            "subtask1": {
                "exec_args": ["arg1_1", "arg1_2"],
                "output_file_paths": ["output_file_1_1", "output_file_1_2"]
            },
            "subtask2": {
                "exec_args": ["arg2_1", "arg2_2"],
                "output_file_paths": ["output_file_2_1", "output_file_2_2"]
            }
        }
    }
}

For an example, see for example how 7-zip is set up in this repo.

Of course, if anything is unclear or you find some inconsistencies, please do submit a new issue and we'll make sure it's sorted asap.

You can’t perform that action at this time.