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 3Long-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
| Scenario | Behavior |
|---|---|
| Provider offline | Job reassigned to another provider |
| Execution timeout | Partial payment, job can be resubmitted |
| Invalid results | Dispute process initiated |
| Provider dispute | Result verified by additional providers |