---
sidebar_position: 3
slide: /diagrams/abi-stack.svg
slide_alt: Surfaces talk to the ABI kernel. The kernel loads a module of components.
---

# Architecture

ABI is a kernel that loads modules. An agent is a model, a system prompt, and tools. Everything else in the module is a class of tools that agent uses.

Surfaces talk to the kernel. They are not the kernel. The three surfaces are Nexus UI, API, and CLI. Nexus UI is an adaptive UI, the collaboration surface where humans and AI meet. Adapters sit under the kernel. `config.yaml` enables a module.

How a request moves: [Request path](/get-started/request-path).

## What a module contains

Agents and tools are the key components. The rest are classes of tools the agent uses.

| Piece | Job |
|---|---|
| **Agents** | Model + system prompt + tools. See [Agents](/customize/capabilities/agents). |
| **Tools** | What the agent calls. |
| **Apps** | Extra UI on a module. See [Apps](/customize/capabilities/apps). |
| **Ontologies** | BFO / CCO / domain RDF. See [Ontologies](/customize/capabilities/ontologies). |
| **Workflows** | Intent to execution. See [Workflows](/customize/capabilities/workflows). |
| **Pipelines** | External data into triples. See [Pipelines](/customize/capabilities/pipelines). |
| **Skills** | Tool class the agent uses. |
| **Integrations** | One API or system. See [Integrations](/customize/capabilities/integrations). |
| **Assets** | Tool class the agent uses. |

## Adapters

The kernel binds these. They are not modules.

- **Models**: OpenAI, Claude, Gemini, local (Ollama and similar)
- **Graph**: Oxigraph locally; other SPARQL stores in production
- **Store**: Postgres, object storage, Redis
- **Bus**: local or cloud message queue

## Two operators

Same source. Community: you operate it. Enterprise: we operate it with you. Details: [Community](https://naas.ai/community), [Enterprise](https://naas.ai/enterprise), [air-gapped](/scale/enterprise-deployment/air-gapped).
