ABI Job Service¶
The Job Service lets agents submit long-running work without blocking the interactive tool call.
Start¶
# In-process workers (default — no force-kill)
abi job-service --host 127.0.0.1 --port 18791 --workers 1 --store jobs.json
# Subprocess workers (force-kill enabled via SIGTERM)
abi job-service --workers 2 --subprocess-workers
--store is optional. When provided, job records are persisted as JSON and
completed jobs can be inspected after restarting the service.
HTTP API¶
POST /jobsGET /jobsGET /jobs/{id}GET /jobs/{id}/artifactsPOST /jobs/{id}/cancel
CLI Client¶
abi job submit --command run --analysis-type metatranscriptomics --confirm-execution
abi job list
abi job status JOB_ID
abi job artifacts JOB_ID
abi job cancel JOB_ID
Execution jobs are rejected with confirmation_required unless
confirm_execution=true is present.
Force-Kill¶
When started with --subprocess-workers, each job runs in an isolated
abi dispatch subprocess. Cancelling a running job sends SIGTERM to the
worker process. If the process does not exit within 3 seconds, SIGKILL is
sent.
When --subprocess-workers is not enabled (default), cancel sets
cancel_requested=true. The dispatch runs to completion but the final status is
marked cancelled.
The job record stores worker_pid for auditability.
Remote Scheduler Tracking¶
For Nextflow, HPC, and cloud backends, the Job Service extracts
remote_scheduler_job_id from the dispatch result envelope. This field
survives persistence round-trips and can be used to correlate ABI jobs with
external scheduler job IDs (Slurm, AWS Batch, etc.).
Artifact Index¶
Artifacts include paths for outdir, execution_plan.json, provenance files,
provenance/job.json, tables, reports, explicit written_files, and runtime
outputs when available. provenance/job.json records the queued command,
backend, status timestamps, cancellation flag, worker PID, remote scheduler job
ID, and any Job Service error fields so a copied result directory carries its
own job-level scheduling provenance.
Restart Semantics¶
queuedjobs are requeued.runningandcancel_requestedjobs are marked failed on restart.terminal jobs remain inspectable.