THREATBYTESTM
All systems operational

Platform docs

Engine integration

How the Python analysis engine claims work, reports results, sends heartbeats, and receives training commands through the platform API.

API-only integration01

The engine is a separate process with no database or storage credentials. Everything it needs (pending jobs, specimen downloads, training commands) and everything it produces (results, logs, labels, status) goes through the platform API using the engine's own API key. This keeps access control, auditing, and validation in one place.

Job lifecycle02
1. A researcher or importer registers a sample; the platform creates an analysis job.
2. The engine asks for the next pending job; the platform hands out each job to exactly one worker.
3. The engine downloads the specimen through a short-lived URL and runs static analysis and, where enabled, sandbox execution.
4. The engine posts a structured report (verdict, score, indicators, raw report).
5. The platform stores the report, updates the sample status, and records an audit entry.
Status and heartbeat03

The engine reports its state (idle, busy, or offline) with a regular heartbeat. The platform treats a missing heartbeat as offline, which feeds the workspace dashboard and, later, the public status indicator.

Training commands04

Model training is started, paused, resumed, or stopped from the workspace. The platform queues a training command; the engine polls for the next command, runs it, and reports progress through logs and experiment runs.

Status of this integration05

The engine's API client and the shared OpenAPI contract are being reconciled: several engine calls (log upload, labelling, VirusShare import state) are not yet in the contract, and report field names differ. The contract in shared/openapi.yaml is the source of truth; the engine and platform will both be brought in line with it before the /api/v1 routes go live.