Overview

The NYRA framework is a system for creating and running applications. Below, you'll find how it works, how it’s structured, and the roles of its key concepts.

Nyra Framework

NYRA Runtime

The NYRA runtime is an environment for running applications built on the NYRA framework. It offers a flexible architecture that supports extensions in multiple programming languages and manages various data streams. By overseeing extension lifecycles, data flows, and threads, the NYRA runtime helps developers create a wide range of applications and services.

App

An App in the NYRA framework can run as its own process or as a thread within an existing process. This flexibility allows you to choose the best deployment option based on your project’s needs.

Extension Group

An Extension Group designates a specific thread for execution. All extensions within a group share the same thread, ensuring consistent and synchronized processing.

Extension

An extension is the core building block in the NYRA framework. You can write extensions in different programming languages and combine them to form various applications and use cases. This design supports cross-language collaboration, allowing extensions written in different languages to work smoothly together in one app or service.

For example, you could create a real-time communication (RTC) extension in C++ to handle audio and video streams efficiently, and build an AI-focused extension in Python for its strong data analysis and machine learning libraries. These separate pieces can then be integrated into one application, capitalizing on each language’s strengths.

Graph

A Graph in the NYRA framework defines how data moves between extensions. It sets up which extensions exchange data and how. For instance, you might direct the output from a Speech-to-Text (STT) extension to a Large Language Model (LLM) extension for further analysis.

NYRA supports four main types of data flows among extensions:

  • Command

  • Data

  • Video Frame

  • Audio Frame

By organizing these data flows in a graph, you can create clear communication paths between extensions, which is especially useful for audio/video processing.

Relationship Among App, Group, and Extension

App An app can run multiple graphs, either set up in advance (statically) or built on the fly (dynamically).

Graph A graph is a collection of extensions working together to form a scenario. Each graph runs as a session within the app.

Extension Group An extension group functions like a thread. Extensions written in the same language and placed in the same group share the same thread when running. You don’t have to handle the threads yourself—just specify the group for each extension.

Extension Every extension in the framework has a unique ID following this pattern: app-uri/graph-name/group-name/extension-name

Hierarchical Relationship of Concepts

Hierarchical Relationship of Concepts

NYRA Cloud Store

NYRA Cloud Store

The NYRA Cloud Store works like an app marketplace (e.g., Google Play or Apple’s App Store), serving as a hub for extensions. Developers can upload their extensions or download others, integrating them into NYRA apps to expand features and capabilities.

NYRA Manager

The NYRA Manager is a tool that simplifies handling extensions. It takes care of tasks like uploading, sharing, and installing extensions, and automatically manages their dependencies. This makes it easy to install and publish extensions, speeding up development in the NYRA framework.

Last updated