"CharityEngine" (Service Connection)

Run compute jobs on a global network of volunteer devices, ranging from a single small job to a massively parallel compute job spanning hundreds of thousands of nodes.

This service connection provides direct access to the Charity Engine Remote API. Use the "CharityEngine" batch computation provider for high-level submission of Wolfram Language jobs. »

Connecting & Authenticating

ServiceConnect["CharityEngine"] creates a connection to the Charity Engine Remote API.
Consult the TemplateBox[{{Charity,  , Engine,  , website}, {URL[https://www.charityengine.com/marketplace], None}, https://www.charityengine.com/marketplace, HyperlinkActionRecycled, {HyperlinkActive}, BaseStyle -> {Hyperlink}, HyperlinkAction -> Recycled}, HyperlinkTemplate] for information on signing up to submit jobs. You may have to contact Charity Engine in order to create an account and obtain an authenticator key.


ServiceExecute["CharityEngine","request",params] sends a request to the Charity Engine Remote API, using parameters params. The following give possible requests.

Create and Manipulate Jobs


"JobCreate" create one or more jobs

  • "AppName"(required)Docker image or application name to execute
    "CleanupFiles"Truewhether output directory should be cleaned
    "CommandLine"(required)command line string to execute
    "Copies"1number of identical copies to execute
    "EncryptedInputFiles"Falsewhether input file contents are encrypted
    "EncryptedInputURLs"Falsewhether input file URLs are encrypted
    "EncryptedOutputFiles"Falsewhether output file contents should be encrypted
    "EncryptedOutputURLs"Falsewhether output file URLs should be encrypted
    "EULAAccepted"Falsewhether end-user license agreement of a proprietary application is accepted
    "InputFiles"{}list of input file URLs or hashes
    "InstanceType"default from Charity Engineinstance type to use
    "PublicKey"Nonepublic key string to encrypt output file URLs and contents
    "Tag"Nonearbitrary job metadata string
    "Timeout"max number of hours to run for
    "UseOwnDevices"Falsewhether to run on local devices instead of public network
  • Requests:

    "JobList" get a list of submitted jobs

  • "Page"1page of 100 results to retrieve
  • Requests:

    "JobStatus" get the status of one or multiple jobs

    "JobAbort" terminate one or multiple running jobs

  • "JobID"(required)a single job ID
    "JobIDs"(required)a list of job IDs
  • Create and Manipulate Files


    "FileExists" check if a file exists on the server

  • "FileHash"(required)MD5 hash of the file data
  • Requests:

    "FileUpload" upload a file to the server

  • "Data"(required)file data as File or ByteArray
    "FileHash"calculated from file dataMD5 hash of the file data
  • Access and Manage System Information


    "InstanceTypes" list all instance types supported by the system


    Basic Examples  (3)

    Create a connection by launching an authentication dialog:

    Submit a compute job:

    Check the status of the submitted job:

    Upload a file to Charity Engine:

    Submit a job using the uploaded file as input:

    Retrieve the job status:

    Import the job's output file:

    Get a list of currently available instance types: