v2.6 · July 2026

HAMi

Heterogeneous AI Computing Virtualization Middleware

Reza Jelveh
Solution Architect, Dynamia AI — Makers of HAMi
github.com/fishman @fishmanticoder reza@dynamia.ai
1

GPU Architecture

HAMi shares a GPU in two modes. Standard mode (HAMi-core) intercepts CUDA calls in software, no container changes needed. MIG mode hands out hardware partitions of the GPU.

  • Standard: memory and compute limits enforced per call
  • MIG: isolation comes from the GPU itself
  • Same pod spec, the node picks the mode
Standard Mode Application Memory Interception Compute Interception Physical GPU
MIG Mode Application MIG instance Physical GPU
2

Agenda

Architecture

How HAMi schedules GPU workloads across heterogeneous clusters

Deployment

Single-node to multi-cluster scaling patterns

Performance

Benchmarks: throughput, latency, GPU utilization

Roadmap

Q3 2026 priorities and community contributions

> HAMi reduces GPU fragmentation by 40% in production inference clusters

3

GPU Scheduling Architecture

HAMi intercepts CUDA API calls at the library level to enable fine-grained GPU sharing. The scheduler runs as a Kubernetes device plugin and supports MIG, MPS, and time-slicing for NVIDIA GPUs.

  • Device plugin registers GPU resources per node
  • HAMi-core intercepts cuInit, cuMemAlloc, cuLaunchKernel
  • Scheduler bins workloads by memory footprint and priority
  • Fractional GPU allocation down to 1% granularity

Ecosystem Pyramid

4

Performance Benchmarks

CNCF Logo

HAMi demonstrates near-linear scaling with concurrent inference workloads across 8× A100 GPUs. The key metric is GPU utilization efficiency -- HAMi achieves 92% average utilization vs. 65% baseline with default Kubernetes scheduling.

  • 3.2× throughput improvement on BERT-large inference
  • < 2% latency overhead from CUDA interception
  • 40% reduction in GPU idle time across the cluster
  • Supports mixed-precision (FP16/BF16/INT8) workloads
5

Deployment Patterns

Standalone: Single binary with embedded etcd, suitable for edge inference

  • Kubernetes Native: Helm chart with device plugin, custom scheduler, and CRDs
  • Multi-Cluster: Federation via HAMi-gateway with cross-cluster GPU sharing
  • Air-Gapped: Offline mode with signed container images and local model registry

Monitoring: Prometheus metrics for GPU utilization, memory pressure, scheduling latency

  • Autoscaling: HPA integration based on GPU queue depth and pending workload count
  • Security: OPA/Gatekeeper policies for GPU resource quotas and tenant isolation
6

Resource Specification

ResourceMinimumRecommendedMaximum
GPUs per node1816
GPU memory (GB)44080
CPU cores2832
System RAM (GB)864512
Nodes per cluster110100
Concurrent workloads150200
HAMi supports all NVIDIA GPUs from T4 to H100, plus upcoming B200 Blackwell architecture
7

Community & Ecosystem

CNCF Sandbox

Accepted Q1 2026. Currently in incubation review with 12 maintainers across 6 organizations.

Integrations

Native support for PyTorch, TensorFlow, vLLM, TGI, Ollama. One-click integration with KServe and Ray Serve.

Contributors

850+ GitHub stars, 120 contributors, monthly community calls, Slack with 2k+ members.

Enterprise

Production deployments at ByteDance, Alibaba Cloud, Xiaohongshu, and 15+ Fortune 500 companies.

8

Before & After

Without HAMi

GPU utilization at 65%, idle GPUs

across the cluster, manual bin-packing

required for each workload

With HAMi

GPU utilization at 92%, automatic

fractional allocation, zero manual

intervention needed

HAMi is the only CNCF project that provides hardware-level GPU sharing without requiring vendor-specific drivers or kernel modifications.
9

Enterprise vs Open Source

FeatureOpen SourceEnterprise
GPU sharing✓✓
Fractional GPU✓✓
MIG support✓✓
Multi-cluster federation-✓
SSO / RBAC-✓
Audit logging-✓
SLA guarantee-✓
24/7 supportCommunityDedicated
10

Installation

helm repo add hami https://project-hami.github.io/charts
helm install hami hami/hami \
  --set devicePlugin.version=v2.6.0 \
  --set scheduler.enabled=true

Deploy HAMi with a single Helm command. The device plugin registers GPU resources and the scheduler handles workload placement. Requires Kubernetes 1.24+ and NVIDIA GPU operator.

11

Workload Spec

Request GPU resources via standard Kubernetes resource limits. HAMi supports fractional allocation down to 1% of a GPU and memory limits in MiB. No container modification required.

apiVersion: v1
kind: Pod
metadata:
  name: inference-test
spec:
  containers:
  - name: bert
    image: hami-demo/bert-inference:latest
    resources:
      limits:
        nvidia.com/gpu: 1
        nvidia.com/gpumem: 8000

HAMi v2.6 supports fractional GPU with memory limits in MiB

12

GPU Utilization Trends

2026-10-30T16:09:50.792985 image/svg+xml Matplotlib v3.11.2, https://matplotlib.org/
13

Scheduling Flow

HAMi routes GPU requests through device plugins, custom scheduling, and library-level CUDA interception. The hot path (inference) bypasses the scheduler entirely after initial placement.

User

HAMi Scheduler

GPU Node A

GPU Node B

14

Key Metrics

10x

Operational cost improvement

50%

GPU utilization improvement

10x

Workload density per GPU

92%

Average GPU utilization

15

Key Takeaways

Zero-Downtime

Live migration of GPU workloads between nodes without service interruption

Cost Efficiency

Reduce GPU costs by 40-60% through intelligent bin-packing and fractional allocation

Open Standard

Apache 2.0 license, vendor-neutral governance, CNCF-hosted project infrastructure

16

Lucide Icons

{icon:star} syntax inline in text paragraphs and tables.

IconCheck
Pass
Fail
Warn

Security

End-to-end encrypted by default. SOC 2 Type II certified infrastructure.

Performance

Sub-millisecond P99 latency. 99.99% uptime SLA with automatic failover.

Resilience

Multi-region active-active deployment. Zero-downtime rolling updates.

17

Open Source vs Enterprise

FeatureOpen SourceEnterprise
Core engine
Community support
SLA guarantees
SSO / SAML
Audit logging
RBAC
Priority fixes
Dedicated support
18

Where We Are Today

@layout metrics: big numbers with a source line

100%

Hardware pool utilization

Ke Holdings

10x

GPU utilization in CI

NIO

30%

Fewer GPU hours

China Merchants Bank

11

Device types

NVIDIA, Ascend, Cambricon, ...

19

Rollout Plan

@layout timeline-horizontal with {label=...} cards; ::: notes underneath

1

Measure

Find the 5-15% jobs

2

Enforce

Memory + compute

3

Schedule

Your scheduler

4

Sell

SKUs + quotas

5

Operate

Upgrades, usage

Step zero: decide what stays whole. Big training jobs keep whole cards.
20

Community & Adopters

@layout ecosystem: #### section labels over metric rows and logo cards

Open Source, CNCF Backed

4.1k

GitHub stars

325k

Docker pulls

500+

Contributors

Device Support

NVIDIA AMD Ascend Cambricon Hygon Metax Moore Threads Kunlunxin Enflame AWS

Getting Started

21

Blueprint Diagram

::: card {blueprint} around a ```pdg diagram; this slide has @transition none

Pod Webhook hami-scheduler Device plugin
Pod Webhook hami-scheduler Device plugin
22

Config And Output

{
  "nvidia.com/gpu": 1,
  "nvidia.com/gpumem": 3000,
  "nvidia.com/gpucores": 30
}
$ nvidia-smi
|  0  NVIDIA H200   3000MiB / 3000MiB   30% |
23

Embedding A Demo Video

@video plays in the HTML deck; PDF shows the poster image next to the clip

@video assets/demo/llm_test.mp4
24

Talk Credits

@contributor sits beside @speaker; both take github, linkedin, twitter, email, website

Reza Jelveh
Solution Architect, Dynamia AI — Makers of HAMi
github.com/fishman @fishmanticoder linkedin.com/in/rezajelveh
Contributor
Contributor Name
LFX Mentorship mentee
github.com/example linkedin.com/in/example
25

Questions

Thank You

Reza Jelveh
reza@dynamia.ai
26
1 / 26

v2.6 · July 2026

HAMi

Heterogeneous AI Computing Virtualization Middleware

Reza Jelveh
Solution Architect, Dynamia AI — Makers of HAMi
github.com/fishman @fishmanticoder reza@dynamia.ai

GPU Architecture

HAMi shares a GPU in two modes. Standard mode (HAMi-core) intercepts CUDA calls in software, no container changes needed. MIG mode hands out hardware partitions of the GPU.

  • Standard: memory and compute limits enforced per call
  • MIG: isolation comes from the GPU itself
  • Same pod spec, the node picks the mode
Standard Mode Application Memory Interception Compute Interception Physical GPU
MIG Mode Application MIG instance Physical GPU

Agenda

Architecture

How HAMi schedules GPU workloads across heterogeneous clusters

Deployment

Single-node to multi-cluster scaling patterns

Performance

Benchmarks: throughput, latency, GPU utilization

Roadmap

Q3 2026 priorities and community contributions

> HAMi reduces GPU fragmentation by 40% in production inference clusters

GPU Scheduling Architecture

HAMi intercepts CUDA API calls at the library level to enable fine-grained GPU sharing. The scheduler runs as a Kubernetes device plugin and supports MIG, MPS, and time-slicing for NVIDIA GPUs.

  • Device plugin registers GPU resources per node
  • HAMi-core intercepts cuInit, cuMemAlloc, cuLaunchKernel
  • Scheduler bins workloads by memory footprint and priority
  • Fractional GPU allocation down to 1% granularity

Ecosystem Pyramid

Performance Benchmarks

CNCF Logo

HAMi demonstrates near-linear scaling with concurrent inference workloads across 8× A100 GPUs. The key metric is GPU utilization efficiency -- HAMi achieves 92% average utilization vs. 65% baseline with default Kubernetes scheduling.

  • 3.2× throughput improvement on BERT-large inference
  • < 2% latency overhead from CUDA interception
  • 40% reduction in GPU idle time across the cluster
  • Supports mixed-precision (FP16/BF16/INT8) workloads

Deployment Patterns

Standalone: Single binary with embedded etcd, suitable for edge inference

  • Kubernetes Native: Helm chart with device plugin, custom scheduler, and CRDs
  • Multi-Cluster: Federation via HAMi-gateway with cross-cluster GPU sharing
  • Air-Gapped: Offline mode with signed container images and local model registry

Monitoring: Prometheus metrics for GPU utilization, memory pressure, scheduling latency

  • Autoscaling: HPA integration based on GPU queue depth and pending workload count
  • Security: OPA/Gatekeeper policies for GPU resource quotas and tenant isolation

Resource Specification

ResourceMinimumRecommendedMaximum
GPUs per node1816
GPU memory (GB)44080
CPU cores2832
System RAM (GB)864512
Nodes per cluster110100
Concurrent workloads150200
HAMi supports all NVIDIA GPUs from T4 to H100, plus upcoming B200 Blackwell architecture

Community & Ecosystem

CNCF Sandbox

Accepted Q1 2026. Currently in incubation review with 12 maintainers across 6 organizations.

Integrations

Native support for PyTorch, TensorFlow, vLLM, TGI, Ollama. One-click integration with KServe and Ray Serve.

Contributors

850+ GitHub stars, 120 contributors, monthly community calls, Slack with 2k+ members.

Enterprise

Production deployments at ByteDance, Alibaba Cloud, Xiaohongshu, and 15+ Fortune 500 companies.

Before & After

Without HAMi

GPU utilization at 65%, idle GPUs

across the cluster, manual bin-packing

required for each workload

With HAMi

GPU utilization at 92%, automatic

fractional allocation, zero manual

intervention needed

HAMi is the only CNCF project that provides hardware-level GPU sharing without requiring vendor-specific drivers or kernel modifications.

Enterprise vs Open Source

FeatureOpen SourceEnterprise
GPU sharing✓✓
Fractional GPU✓✓
MIG support✓✓
Multi-cluster federation-✓
SSO / RBAC-✓
Audit logging-✓
SLA guarantee-✓
24/7 supportCommunityDedicated

Installation

helm repo add hami https://project-hami.github.io/charts
helm install hami hami/hami \
  --set devicePlugin.version=v2.6.0 \
  --set scheduler.enabled=true

Deploy HAMi with a single Helm command. The device plugin registers GPU resources and the scheduler handles workload placement. Requires Kubernetes 1.24+ and NVIDIA GPU operator.

Workload Spec

Request GPU resources via standard Kubernetes resource limits. HAMi supports fractional allocation down to 1% of a GPU and memory limits in MiB. No container modification required.

apiVersion: v1
kind: Pod
metadata:
  name: inference-test
spec:
  containers:
  - name: bert
    image: hami-demo/bert-inference:latest
    resources:
      limits:
        nvidia.com/gpu: 1
        nvidia.com/gpumem: 8000

HAMi v2.6 supports fractional GPU with memory limits in MiB

GPU Utilization Trends

2026-10-30T16:09:50.792985 image/svg+xml Matplotlib v3.11.2, https://matplotlib.org/

Scheduling Flow

HAMi routes GPU requests through device plugins, custom scheduling, and library-level CUDA interception. The hot path (inference) bypasses the scheduler entirely after initial placement.

User

HAMi Scheduler

GPU Node A

GPU Node B

Key Metrics

10x

Operational cost improvement

50%

GPU utilization improvement

10x

Workload density per GPU

92%

Average GPU utilization

Key Takeaways

Zero-Downtime

Live migration of GPU workloads between nodes without service interruption

Cost Efficiency

Reduce GPU costs by 40-60% through intelligent bin-packing and fractional allocation

Open Standard

Apache 2.0 license, vendor-neutral governance, CNCF-hosted project infrastructure

Lucide Icons

{icon:star} syntax inline in text paragraphs and tables.

IconCheck
Pass
Fail
Warn

Security

End-to-end encrypted by default. SOC 2 Type II certified infrastructure.

Performance

Sub-millisecond P99 latency. 99.99% uptime SLA with automatic failover.

Resilience

Multi-region active-active deployment. Zero-downtime rolling updates.

Open Source vs Enterprise

FeatureOpen SourceEnterprise
Core engine
Community support
SLA guarantees
SSO / SAML
Audit logging
RBAC
Priority fixes
Dedicated support

Where We Are Today

@layout metrics: big numbers with a source line

100%

Hardware pool utilization

Ke Holdings

10x

GPU utilization in CI

NIO

30%

Fewer GPU hours

China Merchants Bank

11

Device types

NVIDIA, Ascend, Cambricon, ...

Rollout Plan

@layout timeline-horizontal with {label=...} cards; ::: notes underneath

1

Measure

Find the 5-15% jobs

2

Enforce

Memory + compute

3

Schedule

Your scheduler

4

Sell

SKUs + quotas

5

Operate

Upgrades, usage

Step zero: decide what stays whole. Big training jobs keep whole cards.

Community & Adopters

@layout ecosystem: #### section labels over metric rows and logo cards

Open Source, CNCF Backed

4.1k

GitHub stars

325k

Docker pulls

500+

Contributors

Device Support

NVIDIA AMD Ascend Cambricon Hygon Metax Moore Threads Kunlunxin Enflame AWS

Getting Started

  • Install the chart
  • Label your GPU nodes
  • Request nvidia.com/gpumem in a pod

Blueprint Diagram

::: card {blueprint} around a ```pdg diagram; this slide has @transition none

Pod Webhook hami-scheduler Device plugin
Pod Webhook hami-scheduler Device plugin

Config And Output

{
  "nvidia.com/gpu": 1,
  "nvidia.com/gpumem": 3000,
  "nvidia.com/gpucores": 30
}
$ nvidia-smi
|  0  NVIDIA H200   3000MiB / 3000MiB   30% |

Embedding A Demo Video

@video plays in the HTML deck; PDF shows the poster image next to the clip

@video assets/demo/llm_test.mp4
  • Put llm_test.png next to the clip as its poster and print image
  • Presenter view keeps play, pause and seek in sync across windows
  • ODP skips the video (add a screenshot slide if you need one there)

Talk Credits

@contributor sits beside @speaker; both take github, linkedin, twitter, email, website

Reza Jelveh
Solution Architect, Dynamia AI — Makers of HAMi
github.com/fishman @fishmanticoder linkedin.com/in/rezajelveh
Contributor
Contributor Name
LFX Mentorship mentee
github.com/example linkedin.com/in/example

Questions

Thank You

Reza Jelveh
reza@dynamia.ai

v2.6 · July 2026

HAMi

Heterogeneous AI Computing Virtualization Middleware

Reza Jelveh
Solution Architect, Dynamia AI — Makers of HAMi
github.com/fishman @fishmanticoder reza@dynamia.ai

GPU Architecture

HAMi shares a GPU in two modes. Standard mode (HAMi-core) intercepts CUDA calls in software, no container changes needed. MIG mode hands out hardware partitions of the GPU.

  • Standard: memory and compute limits enforced per call
  • MIG: isolation comes from the GPU itself
  • Same pod spec, the node picks the mode
Standard Mode Application Memory Interception Compute Interception Physical GPU
MIG Mode Application MIG instance Physical GPU

Agenda

Architecture

How HAMi schedules GPU workloads across heterogeneous clusters

Deployment

Single-node to multi-cluster scaling patterns

Performance

Benchmarks: throughput, latency, GPU utilization

Roadmap

Q3 2026 priorities and community contributions

> HAMi reduces GPU fragmentation by 40% in production inference clusters

GPU Scheduling Architecture

HAMi intercepts CUDA API calls at the library level to enable fine-grained GPU sharing. The scheduler runs as a Kubernetes device plugin and supports MIG, MPS, and time-slicing for NVIDIA GPUs.

  • Device plugin registers GPU resources per node
  • HAMi-core intercepts cuInit, cuMemAlloc, cuLaunchKernel
  • Scheduler bins workloads by memory footprint and priority
  • Fractional GPU allocation down to 1% granularity

Ecosystem Pyramid

Performance Benchmarks

CNCF Logo

HAMi demonstrates near-linear scaling with concurrent inference workloads across 8× A100 GPUs. The key metric is GPU utilization efficiency -- HAMi achieves 92% average utilization vs. 65% baseline with default Kubernetes scheduling.

  • 3.2× throughput improvement on BERT-large inference
  • < 2% latency overhead from CUDA interception
  • 40% reduction in GPU idle time across the cluster
  • Supports mixed-precision (FP16/BF16/INT8) workloads

Deployment Patterns

Standalone: Single binary with embedded etcd, suitable for edge inference

  • Kubernetes Native: Helm chart with device plugin, custom scheduler, and CRDs
  • Multi-Cluster: Federation via HAMi-gateway with cross-cluster GPU sharing
  • Air-Gapped: Offline mode with signed container images and local model registry

Monitoring: Prometheus metrics for GPU utilization, memory pressure, scheduling latency

  • Autoscaling: HPA integration based on GPU queue depth and pending workload count
  • Security: OPA/Gatekeeper policies for GPU resource quotas and tenant isolation

Resource Specification

ResourceMinimumRecommendedMaximum
GPUs per node1816
GPU memory (GB)44080
CPU cores2832
System RAM (GB)864512
Nodes per cluster110100
Concurrent workloads150200
HAMi supports all NVIDIA GPUs from T4 to H100, plus upcoming B200 Blackwell architecture

Community & Ecosystem

CNCF Sandbox

Accepted Q1 2026. Currently in incubation review with 12 maintainers across 6 organizations.

Integrations

Native support for PyTorch, TensorFlow, vLLM, TGI, Ollama. One-click integration with KServe and Ray Serve.

Contributors

850+ GitHub stars, 120 contributors, monthly community calls, Slack with 2k+ members.

Enterprise

Production deployments at ByteDance, Alibaba Cloud, Xiaohongshu, and 15+ Fortune 500 companies.

Before & After

Without HAMi

GPU utilization at 65%, idle GPUs

across the cluster, manual bin-packing

required for each workload

With HAMi

GPU utilization at 92%, automatic

fractional allocation, zero manual

intervention needed

HAMi is the only CNCF project that provides hardware-level GPU sharing without requiring vendor-specific drivers or kernel modifications.

Enterprise vs Open Source

FeatureOpen SourceEnterprise
GPU sharing✓✓
Fractional GPU✓✓
MIG support✓✓
Multi-cluster federation-✓
SSO / RBAC-✓
Audit logging-✓
SLA guarantee-✓
24/7 supportCommunityDedicated

Installation

helm repo add hami https://project-hami.github.io/charts
helm install hami hami/hami \
  --set devicePlugin.version=v2.6.0 \
  --set scheduler.enabled=true

Deploy HAMi with a single Helm command. The device plugin registers GPU resources and the scheduler handles workload placement. Requires Kubernetes 1.24+ and NVIDIA GPU operator.

Workload Spec

Request GPU resources via standard Kubernetes resource limits. HAMi supports fractional allocation down to 1% of a GPU and memory limits in MiB. No container modification required.

apiVersion: v1
kind: Pod
metadata:
  name: inference-test
spec:
  containers:
  - name: bert
    image: hami-demo/bert-inference:latest
    resources:
      limits:
        nvidia.com/gpu: 1
        nvidia.com/gpumem: 8000

HAMi v2.6 supports fractional GPU with memory limits in MiB

GPU Utilization Trends

2026-10-30T16:09:50.792985 image/svg+xml Matplotlib v3.11.2, https://matplotlib.org/

Scheduling Flow

HAMi routes GPU requests through device plugins, custom scheduling, and library-level CUDA interception. The hot path (inference) bypasses the scheduler entirely after initial placement.

User

HAMi Scheduler

GPU Node A

GPU Node B

Key Metrics

10x

Operational cost improvement

50%

GPU utilization improvement

10x

Workload density per GPU

92%

Average GPU utilization

Key Takeaways

Zero-Downtime

Live migration of GPU workloads between nodes without service interruption

Cost Efficiency

Reduce GPU costs by 40-60% through intelligent bin-packing and fractional allocation

Open Standard

Apache 2.0 license, vendor-neutral governance, CNCF-hosted project infrastructure

Lucide Icons

{icon:star} syntax inline in text paragraphs and tables.

IconCheck
Pass
Fail
Warn

Security

End-to-end encrypted by default. SOC 2 Type II certified infrastructure.

Performance

Sub-millisecond P99 latency. 99.99% uptime SLA with automatic failover.

Resilience

Multi-region active-active deployment. Zero-downtime rolling updates.

Open Source vs Enterprise

FeatureOpen SourceEnterprise
Core engine
Community support
SLA guarantees
SSO / SAML
Audit logging
RBAC
Priority fixes
Dedicated support

Where We Are Today

@layout metrics: big numbers with a source line

100%

Hardware pool utilization

Ke Holdings

10x

GPU utilization in CI

NIO

30%

Fewer GPU hours

China Merchants Bank

11

Device types

NVIDIA, Ascend, Cambricon, ...

Rollout Plan

@layout timeline-horizontal with {label=...} cards; ::: notes underneath

1

Measure

Find the 5-15% jobs

2

Enforce

Memory + compute

3

Schedule

Your scheduler

4

Sell

SKUs + quotas

5

Operate

Upgrades, usage

Step zero: decide what stays whole. Big training jobs keep whole cards.

Community & Adopters

@layout ecosystem: #### section labels over metric rows and logo cards

Open Source, CNCF Backed

4.1k

GitHub stars

325k

Docker pulls

500+

Contributors

Device Support

NVIDIA AMD Ascend Cambricon Hygon Metax Moore Threads Kunlunxin Enflame AWS

Getting Started

  • Install the chart
  • Label your GPU nodes
  • Request nvidia.com/gpumem in a pod

Blueprint Diagram

::: card {blueprint} around a ```pdg diagram; this slide has @transition none

Pod Webhook hami-scheduler Device plugin
Pod Webhook hami-scheduler Device plugin

Config And Output

{
  "nvidia.com/gpu": 1,
  "nvidia.com/gpumem": 3000,
  "nvidia.com/gpucores": 30
}
$ nvidia-smi
|  0  NVIDIA H200   3000MiB / 3000MiB   30% |

Embedding A Demo Video

@video plays in the HTML deck; PDF shows the poster image next to the clip

@video assets/demo/llm_test.mp4
  • Put llm_test.png next to the clip as its poster and print image
  • Presenter view keeps play, pause and seek in sync across windows
  • ODP skips the video (add a screenshot slide if you need one there)

Talk Credits

@contributor sits beside @speaker; both take github, linkedin, twitter, email, website

Reza Jelveh
Solution Architect, Dynamia AI — Makers of HAMi
github.com/fishman @fishmanticoder linkedin.com/in/rezajelveh
Contributor
Contributor Name
LFX Mentorship mentee
github.com/example linkedin.com/in/example

Questions

Thank You

Reza Jelveh
reza@dynamia.ai
7s