Akri logo

Akri

Akri is a CNCF Sandbox project that exposes heterogeneous leaf devices (such as IP cameras and USB devices) as resources in a Kubernetes cluster. It enables dynamic discovery and utilization of IoT edge devices through protocol-specific Discovery Handlers for ONVIF, OPC UA, and udev, with automatic workload scheduling and high availability.

1 APIs 10 Features
Device ManagementEdge ComputingIoTKubernetesCNCFOpen SourceOPC UAONVIFudev

APIs

Akri Metrics API

Akri exposes Prometheus metrics on port 8080 at /metrics for the Agent, Controller, and broker pods. Metrics include instance count, discovery response results and latency, and ...

Features

Dynamic Device Discovery

Automatically discovers heterogeneous leaf devices (IP cameras, USB devices, industrial sensors) across Kubernetes cluster nodes using protocol-specific Discovery Handlers.

ONVIF Discovery Handler

Discovers IP cameras via ONVIF standards and RTSP streams, with filtering by IP address, MAC address, ONVIF scopes, and device UUIDs.

OPC UA Discovery Handler

Discovers industrial automation servers and Local Discovery Servers via OPC UA protocol, supporting x509 certificate authentication for secure connections.

udev Discovery Handler

Discovers locally attached hardware (USB devices, cameras, microphones) on Linux nodes using udev rules with kernel device name and capability filtering.

Automatic Workload Scheduling

Automatically schedules broker Pods or Jobs per discovered device based on Akri Configuration specifications, managing the full workload lifecycle.

High Availability

Multiple nodes can access a single leaf device, ensuring service continuity if a node fails. Supports multi-node device reservation.

Kubernetes Custom Resources

Two CRDs: configurations.akri.sh for discovery specification and instances.akri.sh representing each discovered device as a Kubernetes resource.

Extensible Discovery Handler Framework

Community can implement custom Discovery Handlers as DaemonSets using the akri-discovery-handler-template, enabling support for any device protocol.

Prometheus Metrics

Built-in Prometheus metrics on port 8080 for instance count, discovery response results, discovery latency, and broker pod count, with Grafana visualization support.

Multi-Architecture Support

Supports Linux nodes on amd64, arm64v8, and arm32v7 architectures with Kubernetes v1.16+, K3s, and MicroK8s distributions.

Use Cases

Edge IoT Device Management

Expose and manage IoT leaf devices such as IP cameras and USB sensors as first-class Kubernetes resources for edge computing workloads.

Industrial Automation Integration

Connect industrial OPC UA servers and automation equipment to Kubernetes clusters for real-time monitoring and control workflows.

Computer Vision at the Edge

Deploy ONVIF-compliant IP camera brokers automatically as cameras are discovered, enabling distributed computer vision processing.

Dynamic Hardware Resource Scheduling

Automatically schedule GPU, FPGA, or specialized hardware workloads based on real-time device availability across cluster nodes.

Heterogeneous Device Fleet Management

Manage fleets of diverse edge devices with different protocols from a single Kubernetes control plane using unified Configuration resources.

Integrations

Prometheus

Native Prometheus metrics integration via ServiceMonitor and PodMonitor custom resources, with Grafana visualization support.

Helm

Official Helm chart packaging for deploying Akri Controller, Agent DaemonSet, and Discovery Handler DaemonSets.

Kubernetes Device Plugin Framework

Extends the Kubernetes Device Plugin Framework with edge-specific capabilities for heterogeneous leaf device management.

ONVIF

Built-in ONVIF protocol support for discovering and managing standards-compliant IP cameras and video devices.

OPC UA

Built-in OPC UA protocol support for industrial automation device discovery with certificate-based security.

Linux udev

Built-in udev integration for discovering locally attached hardware devices on Linux Kubernetes nodes.

CNCF Ecosystem

CNCF Sandbox project integrating with cloud native tooling including K3s, MicroK8s, and standard Kubernetes distributions.

Semantic Vocabularies

Akri Akri Context

6 classes · 19 properties

JSON-LD

API Governance Rules

Akri API Rules

25 rules · 12 errors 12 warnings 1 info

SPECTRAL

Resources

👥
GitHubOrganization
GitHubOrganization
👥
GitHubRepository
GitHubRepository
🔗
Documentation
Documentation
🚀
GettingStarted
GettingStarted
📄
ChangeLog
ChangeLog
📦
Helm Chart
SDK
💻
Example Brokers and Applications
CodeExamples
📦
Discovery Handler Template (Rust)
SDK
🔗
SpectralRules
SpectralRules
🔗
Vocabulary
Vocabulary
🔗
JSONLD
JSONLD
🔗
LLMsTxt
LLMsTxt

Sources

Raw ↑
aid: akri
url: https://raw.githubusercontent.com/api-evangelist/akri/refs/heads/main/apis.yml
name: Akri
tags:
- Device Management
- Edge Computing
- IoT
- Kubernetes
- CNCF
- Open Source
- OPC UA
- ONVIF
- udev
type: Index
image: https://kinlane-productions.s3.amazonaws.com/apis-json/apis-json-logo.jpg
description: Akri is a CNCF Sandbox project that exposes heterogeneous leaf devices (such as IP cameras and USB devices) as
  resources in a Kubernetes cluster. It enables dynamic discovery and utilization of IoT edge devices through protocol-specific
  Discovery Handlers for ONVIF, OPC UA, and udev, with automatic workload scheduling and high availability.
created: '2025-01-01'
modified: '2026-05-19'
specificationVersion: '0.19'
apis:
- aid: akri:metrics-api
  name: Akri Metrics API
  tags:
  - Monitoring
  - Prometheus
  - Metrics
  - Observability
  properties:
  - url: https://docs.akri.sh/
    type: Documentation
  - url: https://github.com/project-akri/akri
    type: GitHubRepository
  - url: openapi/akri-metrics-openapi.yaml
    type: OpenAPI
  - url: json-schema/akri-prometheus-metrics-schema.json
    type: JSONSchema
  - url: json-schema/akri-akri-instance-count-schema.json
    type: JSONSchema
  - url: json-schema/akri-akri-discovery-response-result-schema.json
    type: JSONSchema
  - url: json-schema/akri-akri-discovery-response-time-schema.json
    type: JSONSchema
  - url: json-schema/akri-akri-broker-pod-count-schema.json
    type: JSONSchema
  - url: json-schema/akri-akri-configuration-schema.json
    type: JSONSchema
  - url: json-schema/akri-akri-instance-schema.json
    type: JSONSchema
  - url: json-structure/akri-prometheus-metrics-structure.json
    type: JSONStructure
  - url: json-structure/akri-akri-instance-count-structure.json
    type: JSONStructure
  - url: json-structure/akri-akri-discovery-response-result-structure.json
    type: JSONStructure
  - url: json-structure/akri-akri-discovery-response-time-structure.json
    type: JSONStructure
  - url: json-structure/akri-akri-broker-pod-count-structure.json
    type: JSONStructure
  - url: json-structure/akri-akri-configuration-structure.json
    type: JSONStructure
  - url: json-structure/akri-akri-instance-structure.json
    type: JSONStructure
  - url: examples/akri-prometheus-metrics-example.json
    type: Example
  - url: examples/akri-akri-instance-count-example.json
    type: Example
  - url: examples/akri-akri-discovery-response-result-example.json
    type: Example
  - url: examples/akri-akri-discovery-response-time-example.json
    type: Example
  - url: examples/akri-akri-broker-pod-count-example.json
    type: Example
  - url: examples/akri-akri-configuration-example.json
    type: Example
  - url: examples/akri-akri-instance-example.json
    type: Example
  - type: NaftikoCapability
    url: capabilities/metrics-metrics.yaml
  humanURL: https://docs.akri.sh/
  baseURL: http://localhost:8080
  description: Akri exposes Prometheus metrics on port 8080 at /metrics for the Agent, Controller, and broker pods. Metrics
    include instance count, discovery response results and latency, and broker pod count. Supports Prometheus Operator ServiceMonitor
    for metric scraping.
common:
- url: https://github.com/project-akri
  type: GitHubOrganization
- url: https://github.com/project-akri/akri
  type: GitHubRepository
- url: https://docs.akri.sh/
  type: Documentation
- url: https://docs.akri.sh/user-guide/getting-started
  type: GettingStarted
- url: https://github.com/project-akri/akri/blob/main/CHANGELOG.md
  type: ChangeLog
- url: https://artifacthub.io/packages/helm/akri-helm-charts/akri
  type: SDK
  title: Helm Chart
- url: https://github.com/project-akri/examples
  type: CodeExamples
  title: Example Brokers and Applications
- url: https://github.com/project-akri/akri-discovery-handler-template
  type: SDK
  title: Discovery Handler Template (Rust)
- url: rules/akri-spectral-rules.yml
  type: SpectralRules
- url: vocabulary/akri-vocabulary.yaml
  type: Vocabulary
- url: json-ld/akri-akri-context.jsonld
  type: JSONLD
- type: Features
  data:
  - name: Dynamic Device Discovery
    description: Automatically discovers heterogeneous leaf devices (IP cameras, USB devices, industrial sensors) across Kubernetes
      cluster nodes using protocol-specific Discovery Handlers.
  - name: ONVIF Discovery Handler
    description: Discovers IP cameras via ONVIF standards and RTSP streams, with filtering by IP address, MAC address, ONVIF
      scopes, and device UUIDs.
  - name: OPC UA Discovery Handler
    description: Discovers industrial automation servers and Local Discovery Servers via OPC UA protocol, supporting x509
      certificate authentication for secure connections.
  - name: udev Discovery Handler
    description: Discovers locally attached hardware (USB devices, cameras, microphones) on Linux nodes using udev rules with
      kernel device name and capability filtering.
  - name: Automatic Workload Scheduling
    description: Automatically schedules broker Pods or Jobs per discovered device based on Akri Configuration specifications,
      managing the full workload lifecycle.
  - name: High Availability
    description: Multiple nodes can access a single leaf device, ensuring service continuity if a node fails. Supports multi-node
      device reservation.
  - name: Kubernetes Custom Resources
    description: 'Two CRDs: configurations.akri.sh for discovery specification and instances.akri.sh representing each discovered
      device as a Kubernetes resource.'
  - name: Extensible Discovery Handler Framework
    description: Community can implement custom Discovery Handlers as DaemonSets using the akri-discovery-handler-template,
      enabling support for any device protocol.
  - name: Prometheus Metrics
    description: Built-in Prometheus metrics on port 8080 for instance count, discovery response results, discovery latency,
      and broker pod count, with Grafana visualization support.
  - name: Multi-Architecture Support
    description: Supports Linux nodes on amd64, arm64v8, and arm32v7 architectures with Kubernetes v1.16+, K3s, and MicroK8s
      distributions.
- type: UseCases
  data:
  - name: Edge IoT Device Management
    description: Expose and manage IoT leaf devices such as IP cameras and USB sensors as first-class Kubernetes resources
      for edge computing workloads.
  - name: Industrial Automation Integration
    description: Connect industrial OPC UA servers and automation equipment to Kubernetes clusters for real-time monitoring
      and control workflows.
  - name: Computer Vision at the Edge
    description: Deploy ONVIF-compliant IP camera brokers automatically as cameras are discovered, enabling distributed computer
      vision processing.
  - name: Dynamic Hardware Resource Scheduling
    description: Automatically schedule GPU, FPGA, or specialized hardware workloads based on real-time device availability
      across cluster nodes.
  - name: Heterogeneous Device Fleet Management
    description: Manage fleets of diverse edge devices with different protocols from a single Kubernetes control plane using
      unified Configuration resources.
- type: Integrations
  data:
  - name: Prometheus
    description: Native Prometheus metrics integration via ServiceMonitor and PodMonitor custom resources, with Grafana visualization
      support.
  - name: Helm
    description: Official Helm chart packaging for deploying Akri Controller, Agent DaemonSet, and Discovery Handler DaemonSets.
  - name: Kubernetes Device Plugin Framework
    description: Extends the Kubernetes Device Plugin Framework with edge-specific capabilities for heterogeneous leaf device
      management.
  - name: ONVIF
    description: Built-in ONVIF protocol support for discovering and managing standards-compliant IP cameras and video devices.
  - name: OPC UA
    description: Built-in OPC UA protocol support for industrial automation device discovery with certificate-based security.
  - name: Linux udev
    description: Built-in udev integration for discovering locally attached hardware devices on Linux Kubernetes nodes.
  - name: CNCF Ecosystem
    description: CNCF Sandbox project integrating with cloud native tooling including K3s, MicroK8s, and standard Kubernetes
      distributions.
- type: LLMsTxt
  url: https://docs.akri.sh/llms.txt
maintainers:
- FN: Kin Lane
  email: [email protected]