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.13.tar.gz (121.0 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.13-py3-none-any.whl (289.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ivcap_client-0.47.13.tar.gz
  • Upload date:
  • Size: 121.0 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.13.tar.gz
Algorithm Hash digest
SHA256 3c31789a64e9675b5c652f08261a57c7b79e8b22725d08c978c1658223dd3d04
MD5 e0bdc9a8f8a07af19e23286f0d30e552
BLAKE2b-256 2a0b59269cbdb0c74ba05effa52cee06ff8612b58b4bcb35cb6d776b74dcc0fb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ivcap_client-0.47.13-py3-none-any.whl
  • Upload date:
  • Size: 289.9 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.13-py3-none-any.whl
Algorithm Hash digest
SHA256 8a421b9fb7ff3cbe5ef66d02c4ce03eec02837f390edcaac81c10f64045570ac
MD5 f07c3c981374061a78cd1acda202e429
BLAKE2b-256 66ee8c5cbcfc431024ea771a9bef771b280293b6c1ed86c5239cda37326a9658

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