Skip to main content

A client library for accessing an IVCAP cluster

Project description

ivcap-client — Python SDK for IVCAP

ivcap-client is a Python library for interacting with an IVCAP (Intelligent Visual Computing and Analytics Platform) deployment from the outside — from your laptop, a notebook, a data pipeline, or an AI agent.

Use it to:

  • Discover and invoke services — find registered analytic capabilities by name or URN and submit jobs to them
  • Monitor jobs — poll status and retrieve results as jobs move through the platform
  • Manage artifacts — upload data files and download results (images, CSV, NetCDF, …)
  • Work with the Datafabric — read and write typed metadata (Aspects) attached to any platform entity; query provenance across the emergent knowledge graph
  • Orchestrate workflows — chain service calls, fan out parallel jobs, and integrate IVCAP into broader data pipelines or agentic systems

Want to build and deploy your own analytic service on IVCAP? Use the ivcap-service-sdk instead. Packaging your code as an IVCAP service lets it take full advantage of the platform's managed compute and storage, and makes it a reusable, discoverable building block that other users and agents can invoke through the same API described here.


Contents


Installation

pip install ivcap-client

Quick Start

from ivcap_client.ivcap import IVCAP

# Reads IVCAP_URL and IVCAP_JWT from environment variables (or a .env file)
ivcap = IVCAP()

# List available services
for service in ivcap.list_services(limit=10):
    print(service)

# Find a service by name and run a job
# request_job accepts a Pydantic BaseModel, dataclass, or IO[str] (JSON)
import io, json
service = ivcap.get_service_by_name("hello-world-python")
job = service.request_job(io.StringIO(json.dumps({"msg": "Hello, IVCAP!"})))

# Wait for the result
while not job.finished:
    import time; time.sleep(5)
    job.refresh()

print(job.result)

Credentials

You need an IVCAP deployment URL and a JWT access token. The easiest way to get a token is via the ivcap-cli:

ivcap context get access-token

Set your credentials as environment variables or in a .env file:

IVCAP_URL=https://api.your-ivcap-deployment.net
IVCAP_JWT=<your-jwt-token>
IVCAP_ACCOUNT_ID=urn:ivcap:account:<uuid>   # optional

Core Concepts

IVCAP is built around five first-class concepts:

Concept What it is
Service A registered, executable analytic capability (Docker image + parameter schema)
Job One invocation of a service — tracks lifecycle from pendingexecutingsucceeded
Artifact A binary or structured data blob (image, CSV, model, …) stored in object storage
Aspect A typed JSON assertion attached to any entity URN — forms the Datafabric knowledge graph
URN The universal identifier for every platform entity (urn:ivcap:service:<uuid>, etc.)

The platform supports multiple execution backends (Lambda, Batch, Nextflow, Argo) — you don't need to know which one a service uses; the request_job() call is the same for all of them.


Common Patterns

Upload data, run a service, download the result

from ivcap_client.ivcap import IVCAP

ivcap = IVCAP()

# Upload an input artifact
artifact = ivcap.upload_artifact(name="input-image", file_path="/data/photo.jpg")

# Find the service and submit a job
import io, json
service = ivcap.get_service_by_name("my-image-processor")
job = service.request_job(io.StringIO(json.dumps({"image": artifact.id, "threshold": 0.8})))

# Poll until done
import time
while not job.finished:
    time.sleep(5)
    job.refresh()

# Download the output artifact
output = ivcap.get_artifact(job.result["output_artifact"])
with output.as_local_file() as path:
    print(f"Result saved at: {path}")

Attach metadata to any entity

ivcap.add_aspect(
    entity="urn:ivcap:artifact:<uuid>",
    aspect={
        "$schema": "urn:my-project:schema:image-annotation.1",
        "label": "coral reef",
        "confidence": 0.97,
    },
)

Async usage

All major operations have _async variants for use with asyncio:

import asyncio
from ivcap_client.ivcap import IVCAP

async def run():
    ivcap = IVCAP()
    svc = ivcap.get_service("urn:ivcap:service:<uuid>")
    Model = await svc.request_model_async()
    job = await svc.request_job_async(Model(param="value"))
    result = await job.result_async()
    print(result)

asyncio.run(run())

Examples

The examples/ directory contains ready-to-run scripts covering the most common use cases:

Script What it demonstrates
list_services.py List and inspect all available services
find_service_by_name.py Look up a service by name
run_async_job.py Async job submission and monitoring
upload_artifact.py Upload a local file as an artifact
download_artifact.py Download artifact content
list_artifacts.py Browse artifacts in the platform
search_aspect.py Query the Datafabric for aspects
run_crewai_agent.py Run a CrewAI agent via IVCAP
batch_stress_test.py Submit and monitor many parallel jobs
lambda_stress_test.py Stress-test a Lambda-mode service

All examples read credentials from a .env file (or environment variables). See examples/_common.py for the shared setup logic.


Going Deeper

AGENT.md is a comprehensive reference guide — written primarily for AI agents, but equally useful for developers who want the full picture. It covers:

  • A detailed explanation of every platform concept (Services, Jobs, Artifacts, Aspects, URNs, the Datafabric)
  • The complete end-to-end request lifecycle
  • Full API reference with parameter tables for every operation
  • Async patterns and parallel job management
  • Error handling and all exception types
  • Environment variable reference

If you want to understand why the API works the way it does, or need exhaustive parameter documentation, start with AGENT.md.


Related Projects

Project Purpose
ivcap-core The IVCAP platform itself
ivcap-service-sdk Build and deploy services on IVCAP
ivcap-cli Command-line tool (also the easiest way to get a JWT token)

License

See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ivcap_client-0.47.16.tar.gz (123.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ivcap_client-0.47.16-py3-none-any.whl (293.0 kB view details)

Uploaded Python 3

File details

Details for the file ivcap_client-0.47.16.tar.gz.

File metadata

  • Download URL: ivcap_client-0.47.16.tar.gz
  • Upload date:
  • Size: 123.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.14.5 Darwin/24.6.0

File hashes

Hashes for ivcap_client-0.47.16.tar.gz
Algorithm Hash digest
SHA256 d13cdcc6b413bb685cab2d63d1148081b96b309529da8711046a77579b4b413d
MD5 4c8a7653c242f4a70cc51ad9435cc976
BLAKE2b-256 5357ccd7fecddbe1d4e65ffc0bf585f9a71ff11c9f8738e142e0d59c32741fb8

See more details on using hashes here.

File details

Details for the file ivcap_client-0.47.16-py3-none-any.whl.

File metadata

  • Download URL: ivcap_client-0.47.16-py3-none-any.whl
  • Upload date:
  • Size: 293.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.14.5 Darwin/24.6.0

File hashes

Hashes for ivcap_client-0.47.16-py3-none-any.whl
Algorithm Hash digest
SHA256 e3b91d98c9ae81a320225b5f4535c1949653bd184e226f8c938f94ba5dca7e6c
MD5 77635e66c98c45a503016e2bc10a37c7
BLAKE2b-256 bb2503c2957dd1798529ee35805052fabfeb9f492479c87f61d63255e14b6581

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page