Skip to main content
Use this guide when users submit data transformations or analysis scripts and you need strong execution isolation with predictable resource controls.

Diagram: Typical data-processing flow

Choose the right execution pattern

Baseline configuration

Pattern 1: stdin transformations

Great for row-wise mapping, filtering, and aggregation where input/output are JSON.

Pattern 2: file-based processing and artifact retrieval

Use this when jobs need multiple inputs or non-text outputs (CSV, PNG, parquet, etc.).
CLI run does not expose full generic files/outputPaths request fields. Use library or API for full file injection/retrieval workflows.

Pattern 3: multi-step persistent pipelines

Use persistent mode when later steps must reuse files from earlier ones.
Persistent containers are runtime-bound. Do not switch Python -> Node in the same persistent container.

Remote pipelines with shared sessions

For distributed workers, use remote sessionId instead of keeping local engine state.

Package strategy for stable throughput

installPackages is powerful but adds latency. For production data workloads:
  1. move stable dependencies into isol8.config.json dependencies.*
  2. run isol8 setup to pre-build custom images
  3. keep per-request installs for truly dynamic packages only

Parallel batch processing

You can schedule many independent jobs with Promise.all; engine semaphores and maxConcurrent bound active container count.

Returning chart/image artifacts

For visual outputs, write image files into /sandbox and retrieve via outputPaths.

Execution guide

Request fields, execution modes, streaming, and output semantics.

Packages and images

Pre-bake dependencies to reduce per-job install latency.

Remote server and client

Run processing jobs on centralized remote infrastructure.

Performance tuning

Tune concurrency, pool behavior, and resource limits.