Skip to main content

Kumiho Python SDK

PyPI version Python versions Documentation Status License

The official Python SDK for Kumiho Cloud — a graph-native creative and AI asset management platform for VFX, animation, and AI-driven workflows.

Features

  • Graph-Native Design: Built on Neo4j for tracking asset relationships and lineage
  • Revision Control: Semantic versioning for creative assets with full history
  • AI Lineage Tracking: Track AI model training data / GenAI image, video output provenance and dependencies
  • BYO Storage: Files stay on your local/NAS/on-prem storage — only metadata is in the cloud
  • Multi-Tenant SaaS: Secure, region-aware multi-tenant architecture
  • Event Streaming: Real-time notifications for asset changes with tier-based capabilities
  • Graph Traversal: Powerful dependency analysis and impact assessment
  • Type-Safe: Full type hints for IDE autocomplete and static analysis

Installation

pip install kumiho

For development:

pip install kumiho[dev]

Quick Start

1. Authenticate

Run the built-in CLI to cache your Firebase credentials:

kumiho-auth login

This stores credentials at ~/.kumiho/kumiho_authentication.json and automatically refreshes tokens when needed.

2. Connect and Use

import kumiho

# Auto-configure from cached credentials and discovery
kumiho.auto_configure_from_discovery()

# Create a project
project = kumiho.create_project(
    name="my-vfx-project",
    description="VFX assets for 2025 film"
)

# Create a space (organizational container)
space = project.create_space("characters")

# Create an item (versioned asset)
item = space.create_item(
    item_name="hero",
    kind="model"
)

# Create a revision with metadata
revision = item.create_revision(
    metadata={
        "artist": "jane",
        "software": "maya-2024",
        "notes": "Initial model with base topology"
    }
)

# Attach file artifacts (files stay on your storage)
artifact = revision.create_artifact(
    name="hero_model.fbx",
    location="smb://studio-nas/projects/film/hero_model.fbx"
)

# Tag the revision
revision.tag("approved")

Core Concepts

Entity Hierarchy

Project
  └── Space (organizational container)
        └── Item (versioned asset)
              └── Revision (immutable snapshot)
                    └── Artifact (file reference)

Kref URIs

Kumiho uses URI-based references to address any entity:

kref://project/space/item.kind?r=revision&a=artifact

Examples:

# Reference an item (latest revision)
item = kumiho.get_item("kref://my-project/characters/hero.model")

# Reference a specific revision
revision = kumiho.get_revision("kref://my-project/characters/hero.model?r=3")

# Reference a specific artifact
artifact = kumiho.get_artifact("kref://my-project/characters/hero.model?r=3&a=mesh.fbx")

# Reference by tag
published = kumiho.get_revision("kref://my-project/characters/hero.model?t=published")

Edges (Relationships)

Track dependencies and lineage between revisions:

# Create a dependency edge
texture = kumiho.get_revision("kref://my-project/textures/skin.texture?r=2")
revision.create_edge(
    target_revision=texture,
    edge_type=kumiho.DEPENDS_ON,
    metadata={"usage": "skin material"}
)

# Query edges
outgoing = revision.get_edges(direction=kumiho.OUTGOING)
incoming = revision.get_edges(direction=kumiho.INCOMING)

Graph Traversal

Analyze dependencies and impact:

# Find all dependencies (what this revision uses)
deps = revision.get_all_dependencies(max_depth=5)
for kref in deps.revision_krefs:
    print(f"Depends on: {kref}")

# Find all dependents (what uses this revision)
dependents = revision.get_all_dependents(max_depth=5)

# Impact analysis (what would be affected by changes)
impact = revision.analyze_impact()
for impacted in impact:
    print(f"Would affect: {impacted.revision_kref} at depth {impacted.impact_depth}")

# Find shortest path between revisions
path = source.find_path_to(target)

Bundles

Aggregate items into versioned collections:

# Create a bundle
bundle = project.create_bundle("character-bundle")

# Add items
bundle.add_member(hero_model)
bundle.add_member(hero_rig)
bundle.add_member(hero_textures)

# Get members and history
members = bundle.get_members()
history = bundle.get_history()  # Full audit trail

Event Streaming

React to changes in real-time:

import kumiho

# Stream all events with filtering
for event in kumiho.event_stream(routing_key_filter="revision.*"):
    print(f"{event.action}: {event.kref}")

# Filter by kref pattern (glob syntax)
for event in kumiho.event_stream(kref_filter="kref://my-project/**/*.model"):
    print(f"Model changed: {event.kref}")

Tier-Based Streaming Capabilities

Feature Free Creator Studio Enterprise
Real-time streaming
Routing key filters
Kref glob filters
Event persistence in-memory 1 hour 24 hours 30 days
Cursor-based resume
Consumer groups
# Check your tier's capabilities
caps = kumiho.get_event_capabilities()
print(f"Tier: {caps.tier}, Replay: {caps.supports_replay}")

# Resumable streaming (all tiers)
for event in kumiho.event_stream(cursor=saved_cursor):
    process(event)
    save_cursor(event.cursor)  # Persist for recovery

Environment Variables

Variable Required Description
KUMIHO_SERVER_ENDPOINT No gRPC endpoint. Defaults to localhost:8080.
KUMIHO_AUTH_TOKEN For live calls Firebase ID token (JWT).
KUMIHO_AUTH_TOKEN_FILE No Path to file containing the Firebase token.
KUMIHO_CONTROL_PLANE_URL No Control plane URL. Defaults to https://control.kumiho.cloud.
KUMIHO_AUTO_CONFIGURE No Set to true to auto-bootstrap on import.
KUMIHO_DISCOVERY_CACHE_FILE No Discovery cache path. Defaults to ~/.kumiho/discovery-cache.json.

Multi-Tenant Usage

# Use discovery to auto-configure for your tenant
kumiho.auto_configure_from_discovery()

# Or specify a tenant explicitly
kumiho.auto_configure_from_discovery(tenant_hint="my-studio")

# Switch between tenants using context managers
tenant_a = kumiho.connect(endpoint="tenant-a.kumiho.cloud:443")
tenant_b = kumiho.connect(endpoint="tenant-b.kumiho.cloud:443")

with kumiho.use_client(tenant_a):
    projects_a = kumiho.get_projects()

with kumiho.use_client(tenant_b):
    projects_b = kumiho.get_projects()

MCP Server (Model Context Protocol)

Kumiho includes an MCP server that enables AI assistants (GitHub Copilot, Claude, Cursor, etc.) to interact with your asset graph.

Installation

pip install kumiho[mcp]

Running the MCP Server

# Ensure you're authenticated first
kumiho-auth login

# Start the MCP server
kumiho-mcp

VS Code Configuration

Add to your VS Code settings.json:

{
    "mcp": {
        "servers": {
            "kumiho": {
                "command": "kumiho-mcp"
            }
        }
    }
}

Available Tools

The MCP server exposes 39 tools organized by category:

Read Operations

Tool Description
kumiho_list_projects List all accessible projects
kumiho_get_project Get project details by name
kumiho_get_spaces Get spaces within a project
kumiho_get_item Get an item by kref URI
kumiho_search_items Search items with filters
kumiho_get_revision Get a revision by kref
kumiho_get_artifacts Get all artifacts for a revision
kumiho_resolve_kref Resolve kref to file location

Graph Traversal

Tool Description
kumiho_get_dependencies Get what a revision depends on
kumiho_get_dependents Get what depends on a revision
kumiho_analyze_impact Analyze downstream impact of changes
kumiho_find_path Find shortest path between revisions
kumiho_get_edges Get edges (relationships) for a revision

Create Operations

Tool Description
kumiho_create_project Create a new project
kumiho_create_space Create a space within a project
kumiho_create_item Create an item within a space
kumiho_create_revision Create a new revision for an item
kumiho_create_artifact Create an artifact for a revision
kumiho_create_edge Create relationship between revisions
kumiho_tag_revision Apply a tag to a revision

For full MCP documentation, see the MCP Server Guide.

Running Tests

# Run all tests
pytest tests/ -v

# Run with coverage
pytest tests/ --cov=kumiho

Documentation

Requirements

  • Python 3.10+
  • Kumiho Cloud account (sign up)

License

MIT - See LICENSE for details.

Contributing

Contributions are welcome! See CONTRIBUTING.md for guidelines.

Links

Download files

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

Source Distribution

kumiho-0.12.0.tar.gz (148.7 kB view details)

Uploaded Source

Built Distribution

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

kumiho-0.12.0-py3-none-any.whl (147.8 kB view details)

Uploaded Python 3

File details

Details for the file kumiho-0.12.0.tar.gz.

File metadata

  • Download URL: kumiho-0.12.0.tar.gz
  • Upload date:
  • Size: 148.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.15

File hashes

Hashes for kumiho-0.12.0.tar.gz
Algorithm Hash digest
SHA256 3e31ddf1686bc2546f3a5fcafd55a4e5b3e77c3bb707641719b3234cd3fc6a6f
MD5 17a36362b97f0087a415aa5a4fff9ebc
BLAKE2b-256 11f765d597092927a038f125e9b9991ca2c01cae575166b5f0bf79ec8e7d4b91

See more details on using hashes here.

File details

Details for the file kumiho-0.12.0-py3-none-any.whl.

File metadata

  • Download URL: kumiho-0.12.0-py3-none-any.whl
  • Upload date:
  • Size: 147.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.15

File hashes

Hashes for kumiho-0.12.0-py3-none-any.whl
Algorithm Hash digest
SHA256 14d6a382a93637e67975b222a2fdf1a77d79ff183bdcf6bce442e94bd4b67dac
MD5 42598790dedafe7390a46d71301e710c
BLAKE2b-256 4a3edf93a1c18b5f2927067c07447866015d365126857fb6048be79c26c58bd9

See more details on using hashes here.

Release history Release notifications | RSS feed

0.13.0

2 files

0.12.2

2 files

0.12.1

2 files

This release

0.12.0 This release

2 files

0.11.0

2 files

0.10.8

2 files

0.10.7

2 files

0.10.6

2 files

0.10.5

2 files

0.10.4

2 files

0.10.3

2 files

0.10.2

2 files

0.10.1

2 files

0.10.0

2 files

0.9.24

2 files

0.9.23

2 files

0.9.22

2 files

0.9.21

2 files

0.9.20

2 files

0.9.19

2 files

0.9.18

2 files

0.9.17

2 files

0.9.16

2 files

0.9.15

2 files

0.9.14

2 files

0.9.13

2 files

0.9.12

2 files

0.9.11

2 files

0.9.9

2 files

0.9.8

2 files

0.9.7

2 files

0.9.6

2 files

0.9.5

2 files

0.9.4

2 files

0.9.3

2 files

0.9.1

2 files

0.9.0

2 files

0.8.6

2 files

0.8.5

2 files

0.8.4

2 files

0.8.3

2 files

0.8.2

2 files

0.8.1

2 files

0.8.0

2 files

0.7.0

2 files

0.6.0

2 files

0.5.0

2 files

0.4.1

2 files

0.4.0

2 files

0.3.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page