Skip to Content
ConceptsJobs & Tasks

Jobs & Tasks

Jobs are the fundamental unit of work on NeoEngine. This page explains how jobs are submitted, matched, executed, and verified.

Job Lifecycle

Submission

A renter submits a job through the CLI or API, specifying:

  • Container image (e.g., python:3.11, nvidia/cuda:12.0)
  • Resource requirements (CPU, RAM, GPU, storage)
  • Maximum price willing to pay
  • Timeout duration
  • Input data (encrypted)

Matching

The Coordinator finds eligible providers based on:

  • Hardware capabilities meeting requirements
  • Reputation score above threshold
  • Price within renter’s budget
  • Geographic preferences (optional)

Execution

The matched provider:

  • Pulls the container image
  • Decrypts the job payload
  • Executes in a sandboxed environment
  • Streams logs (if requested)
  • Returns encrypted results

Verification

Results are verified through:

  • Cryptographic proof of execution
  • Result hash commitment
  • Optional re-execution on dispute

Job Types

Batch Jobs

One-time execution that runs to completion.

neoengine job submit \ --image python:3.11 \ --cpu 4 \ --memory 8Gi \ --script "python train.py"

Long-Running Services

Persistent workloads like web servers or APIs.

neoengine service deploy \ --image nginx:latest \ --cpu 2 \ --memory 4Gi \ --port 80 \ --replicas 3

Long-running services require a higher stake and maintain a persistent connection to the provider.

GPU Jobs

Compute-intensive workloads requiring GPU acceleration.

neoengine job submit \ --image nvidia/cuda:12.0-runtime \ --gpu 1 \ --gpu-type "nvidia-a100" \ --script "python inference.py"

Pricing

Jobs are priced based on:

  • Resource consumption (CPU-hours, GPU-hours, GB-hours)
  • Network bandwidth used
  • Storage consumed
  • Provider’s market rate

Payment is held in escrow and released upon successful completion.

Error Handling

ScenarioBehavior
Provider offlineJob reassigned to another provider
Execution timeoutPartial payment, job can be resubmitted
Invalid resultsDispute process initiated
Provider disputeResult verified by additional providers