Skip to main content
Version: 2026.05

External workflow logs

External workflow logs record runs of work performed outside Istari — a verification script on your workstation, a CI job, a batch run on an HPC cluster — against the system the work targeted. Output files are uploaded back to the system as workflow outputs, and a workflow log entry ties the run together with a title, status, and the configuration that was active at the time of the run.

External workflows are distinct from Istari jobs, which run on Istari agents and are scheduled and tracked end-to-end by the platform. With external workflows, the work happens wherever you run it; Istari stores the record and the outputs.

Experimental feature

External workflow logs are experimental. An administrator must enable Experimental — External Workflows in Application Settings before the Workflow log tab and the related SDK endpoints are available.

A typical run

A common pattern: pull a tracked file from a system, do some work locally, then upload the artifacts and a single log entry back to Istari.

Initialize the clients

from istari_digital_client import Client, V3Client, Configuration

config = Configuration(
registry_url="https://your-instance.istari.digital",
registry_auth_token="your-personal-access-token",
)

client = Client(config)
v3 = V3Client(config)

Pull the source from the system

file = client.get_file(file_id="<file_id>")
source_bytes = file.revisions[-1].read_bytes()

Upload your outputs

Once your workflow has produced one or more files on disk, register each as a workflow output:

output_ids = []
for path in ["out/results.xml", "out/summary.json", "out/plot.png"]:
output = v3.create_workflow_output(system_id="<system_id>", path=path)
output_ids.append(output.id)

Create the log entry

from istari_digital_client.v3.models import WorkflowLogEntryCreateDto

entry = v3.create_workflow_log_entry(
system_id="<system_id>",
workflow_log_entry_create_dto=WorkflowLogEntryCreateDto(
title="Design verification — iter-1",
status="FAILED", # SUCCESS | FAILED | UNSPECIFIED
configuration_id="<configuration_id>",
workflow_output_ids=output_ids,
),
)

The entry now appears on the system's Workflow log tab.

status and workflow_type

Use one of SUCCESS, FAILED, or UNSPECIFIED for status — these are the values the Workflow log tab renders with the appropriate icon and colour. UNSPECIFIED is the default if you omit the field.

workflow_type should be "external" for runs created by the SDK against an external workflow. It is also the default if you omit the field.

Outputs and entries

A workflow log entry owns its outputs. Create the outputs first, then create one entry that references them — a single workflow run should map to a single entry that holds all of its outputs.

Listing and reading entries

page = v3.list_workflow_log_entries(system_id="<system_id>")
for entry in page.items:
print(entry.created, entry.status, entry.title)

detail = v3.get_workflow_log_entry(system_id="<system_id>", entry_id="<entry_id>")
for output in detail.workflow_outputs:
print(output.name, output.size)

What's next