# embeddedos-org/eai architecture

> Architecture diagram of the GitHub repository embeddedos-org/eai, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/embeddedos-org/eai
- Repository: https://github.com/embeddedos-org/eai
- Video tour (about a minute): https://gitdiagram.com/embeddedos-org/eai/video

## Overview

eAI is an embedded, on-device AI runtime with lightweight and industrial variants, model-format loaders, optional acceleration, platform adapters, and a BCI module. A user can invoke the CLI to run a configured agent: it registers built-in tools, then selects EAI-Min or initializes Framework services. The BCI pipeline separately reads device samples, preprocesses and buffers signals, decodes intents, and dispatches outputs. The graph also preserves documented model, deployment, connector, and update capabilities. Some subsystems are represented from the README and file tree; their internal links are omitted where source excerpts do not establish calls.

Main entry points: [`cli/src/main.c`](https://github.com/embeddedos-org/eai/blob/master/cli/src/main.c) (Command line), [`bci/src/pipeline.c`](https://github.com/embeddedos-org/eai/blob/master/bci/src/pipeline.c) (Signal pipeline), [`min/src/agent.c`](https://github.com/embeddedos-org/eai/blob/master/min/src/agent.c) (EAI-Min agent), [`framework/src/orchestrator.c`](https://github.com/embeddedos-org/eai/blob/master/framework/src/orchestrator.c) (Workflow orchestrator)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["User entry"]
  node_cli["Command line<br/>[main.c]"]
end

subgraph group_shared["Shared runtime"]
  node_common["Shared contracts<br/>[common.h]"]
  node_tools["Built-in tools<br/>[tools_builtin.c]"]
  node_eipc["EIPC listener<br/>[eipc_listener.c]"]
end

subgraph group_inference["Inference and platforms"]
  node_min_agent["EAI-Min agent<br/>[agent.c]"]
  node_min_runtime["Lightweight runtime<br/>[runtime.c]"]
  node_router["Inference router<br/>[router.c]"]
  node_memory["Lightweight memory<br/>[memory_lite.c]"]
  node_formats["Model loaders<br/>[format_registry.c]"]
  node_gguf["GGUF loader<br/>[gguf_loader.c]"]
  node_onnx["ONNX loader<br/>[onnx_loader.c]"]
  node_accel["Accelerator dispatch<br/>[accel.c]"]
  node_cpu["CPU backend<br/>[backend_cpu.c]"]
  node_platform["Platform adapters<br/>[platform.c]"]
end

subgraph group_industrial["Industrial framework"]
  node_framework["Workflow orchestrator<br/>[orchestrator.c]"]
  node_fw_runtime["Runtime manager<br/>[runtime_manager.c]"]
  node_connectors["Industrial connectors<br/>[connector_mqtt.c]"]
  node_updates["Update manager<br/>[update_manager.c]"]
end

subgraph group_bci["Brain-computer interface"]
  node_bci_devices["BCI devices<br/>[device_manager.c]"]
  node_bci_pipeline["Signal pipeline<br/>[pipeline.c]"]
  node_bci_signal["Signal processing<br/>[signal.c]"]
  node_bci_decoder["Intent decoders<br/>[decoder_snn.c]"]
  node_bci_output["Intent outputs<br/>[output_log.c]"]
end

node_user(("CLI user"))

node_user -->|"invokes"| node_cli
node_cli -->|"registers"| node_tools
node_cli -->|"detects platform"| node_platform
node_cli -->|"runs agent"| node_min_agent
node_cli -->|"initializes memory"| node_memory
node_cli -->|"starts listener"| node_eipc
node_cli -->|"initializes manager"| node_fw_runtime
node_cli -->|"initializes workflow"| node_framework
node_min_agent -.->|"runs inference"| node_min_runtime
node_min_agent -.->|"uses tools"| node_tools
node_min_agent -.->|"uses memory"| node_memory
node_router -.->|"routes locally"| node_min_runtime
node_formats -.->|"dispatches GGUF"| node_gguf
node_formats -.->|"dispatches ONNX"| node_onnx
node_accel -.->|"dispatches compute"| node_cpu
node_framework -.->|"orchestrates"| node_fw_runtime
node_framework -.->|"uses connectors"| node_connectors
node_bci_pipeline -->|"reads samples"| node_bci_devices
node_bci_pipeline -->|"preprocesses signals"| node_bci_signal
node_bci_pipeline -->|"decodes intent"| node_bci_decoder
node_bci_pipeline -->|"executes output"| node_bci_output

click node_cli "https://github.com/embeddedos-org/eai/blob/master/cli/src/main.c"
click node_common "https://github.com/embeddedos-org/eai/blob/master/common/include/eai/common.h"
click node_tools "https://github.com/embeddedos-org/eai/blob/master/common/src/tools_builtin.c"
click node_eipc "https://github.com/embeddedos-org/eai/blob/master/common/src/eipc_listener.c"
click node_min_agent "https://github.com/embeddedos-org/eai/blob/master/min/src/agent.c"
click node_min_runtime "https://github.com/embeddedos-org/eai/blob/master/min/src/runtime.c"
click node_router "https://github.com/embeddedos-org/eai/blob/master/min/src/router.c"
click node_memory "https://github.com/embeddedos-org/eai/blob/master/min/src/memory_lite.c"
click node_formats "https://github.com/embeddedos-org/eai/blob/master/formats/src/format_registry.c"
click node_gguf "https://github.com/embeddedos-org/eai/blob/master/formats/src/gguf_loader.c"
click node_onnx "https://github.com/embeddedos-org/eai/blob/master/formats/src/onnx_loader.c"
click node_accel "https://github.com/embeddedos-org/eai/blob/master/accel/src/accel.c"
click node_cpu "https://github.com/embeddedos-org/eai/blob/master/accel/src/backend_cpu.c"
click node_platform "https://github.com/embeddedos-org/eai/blob/master/platform/src/platform.c"
click node_framework "https://github.com/embeddedos-org/eai/blob/master/framework/src/orchestrator.c"
click node_fw_runtime "https://github.com/embeddedos-org/eai/blob/master/framework/src/runtime_manager.c"
click node_connectors "https://github.com/embeddedos-org/eai/blob/master/framework/src/connector_mqtt.c"
click node_updates "https://github.com/embeddedos-org/eai/blob/master/framework/src/update_manager.c"
click node_bci_devices "https://github.com/embeddedos-org/eai/blob/master/bci/src/device_manager.c"
click node_bci_pipeline "https://github.com/embeddedos-org/eai/blob/master/bci/src/pipeline.c"
click node_bci_signal "https://github.com/embeddedos-org/eai/blob/master/bci/src/signal.c"
click node_bci_decoder "https://github.com/embeddedos-org/eai/blob/master/bci/src/decoder_snn.c"
click node_bci_output "https://github.com/embeddedos-org/eai/blob/master/bci/src/output_log.c"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli,node_user toneBlue
class node_common,node_tools,node_eipc toneAmber
class node_min_agent,node_min_runtime,node_router,node_memory,node_formats,node_gguf,node_onnx,node_accel,node_cpu,node_platform toneMint
class node_framework,node_fw_runtime,node_connectors,node_updates toneRose
class node_bci_devices,node_bci_pipeline,node_bci_signal,node_bci_decoder,node_bci_output toneIndigo
```

## Components

### User entry

- [Command line](https://github.com/embeddedos-org/eai/blob/master/cli/src/main.c): `cli/src/main.c`

### Shared runtime

- [Shared contracts](https://github.com/embeddedos-org/eai/blob/master/common/include/eai/common.h): `common/include/eai/common.h`
- [Built-in tools](https://github.com/embeddedos-org/eai/blob/master/common/src/tools_builtin.c): `common/src/tools_builtin.c`
- [EIPC listener](https://github.com/embeddedos-org/eai/blob/master/common/src/eipc_listener.c): `common/src/eipc_listener.c`

### Inference and platforms

- [EAI-Min agent](https://github.com/embeddedos-org/eai/blob/master/min/src/agent.c): `min/src/agent.c`
- [Lightweight runtime](https://github.com/embeddedos-org/eai/blob/master/min/src/runtime.c): `min/src/runtime.c`
- [Inference router](https://github.com/embeddedos-org/eai/blob/master/min/src/router.c): `min/src/router.c`
- [Lightweight memory](https://github.com/embeddedos-org/eai/blob/master/min/src/memory_lite.c): `min/src/memory_lite.c`
- [Model loaders](https://github.com/embeddedos-org/eai/blob/master/formats/src/format_registry.c): `formats/src/format_registry.c`
- [GGUF loader](https://github.com/embeddedos-org/eai/blob/master/formats/src/gguf_loader.c): `formats/src/gguf_loader.c`
- [ONNX loader](https://github.com/embeddedos-org/eai/blob/master/formats/src/onnx_loader.c): `formats/src/onnx_loader.c`
- [Accelerator dispatch](https://github.com/embeddedos-org/eai/blob/master/accel/src/accel.c): `accel/src/accel.c`
- [CPU backend](https://github.com/embeddedos-org/eai/blob/master/accel/src/backend_cpu.c): `accel/src/backend_cpu.c`
- [Platform adapters](https://github.com/embeddedos-org/eai/blob/master/platform/src/platform.c): `platform/src/platform.c`

### Industrial framework

- [Workflow orchestrator](https://github.com/embeddedos-org/eai/blob/master/framework/src/orchestrator.c): `framework/src/orchestrator.c`
- [Runtime manager](https://github.com/embeddedos-org/eai/blob/master/framework/src/runtime_manager.c): `framework/src/runtime_manager.c`
- [Industrial connectors](https://github.com/embeddedos-org/eai/blob/master/framework/src/connector_mqtt.c): `framework/src/connector_mqtt.c`
- [Update manager](https://github.com/embeddedos-org/eai/blob/master/framework/src/update_manager.c): `framework/src/update_manager.c`

### Brain-computer interface

- [BCI devices](https://github.com/embeddedos-org/eai/blob/master/bci/src/device_manager.c): `bci/src/device_manager.c`
- [Signal pipeline](https://github.com/embeddedos-org/eai/blob/master/bci/src/pipeline.c): `bci/src/pipeline.c`
- [Signal processing](https://github.com/embeddedos-org/eai/blob/master/bci/src/signal.c): `bci/src/signal.c`
- [Intent decoders](https://github.com/embeddedos-org/eai/blob/master/bci/src/decoder_snn.c): `bci/src/decoder_snn.c`
- [Intent outputs](https://github.com/embeddedos-org/eai/blob/master/bci/src/output_log.c): `bci/src/output_log.c`

### Other components

- **CLI user**

## Connections

- CLI user → Command line: invokes
- Command line → Built-in tools: registers (evidence: `cli/src/main.c`)
- Command line → Platform adapters: detects platform (evidence: `cli/src/main.c`)
- Command line → EAI-Min agent: runs agent (evidence: `cli/src/main.c`)
- Command line → Lightweight memory: initializes memory (evidence: `cli/src/main.c`)
- Command line → EIPC listener: starts listener (evidence: `cli/src/main.c`)
- Command line → Runtime manager: initializes manager (evidence: `cli/src/main.c`)
- Command line → Workflow orchestrator: initializes workflow (evidence: `cli/src/main.c`)
- EAI-Min agent → Lightweight runtime: runs inference
- EAI-Min agent → Built-in tools: uses tools
- EAI-Min agent → Lightweight memory: uses memory
- Inference router → Lightweight runtime: routes locally
- Model loaders → GGUF loader: dispatches GGUF
- Model loaders → ONNX loader: dispatches ONNX
- Accelerator dispatch → CPU backend: dispatches compute
- Workflow orchestrator → Runtime manager: orchestrates
- Workflow orchestrator → Industrial connectors: uses connectors
- Signal pipeline → BCI devices: reads samples (evidence: `bci/src/pipeline.c`)
- Signal pipeline → Signal processing: preprocesses signals (evidence: `bci/src/pipeline.c`)
- Signal pipeline → Intent decoders: decodes intent (evidence: `bci/src/pipeline.c`)
- Signal pipeline → Intent outputs: executes output (evidence: `bci/src/pipeline.c`)
