# alexa/avs-device-sdk architecture

> Architecture diagram of the GitHub repository alexa/avs-device-sdk, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/alexa/avs-device-sdk
- Repository: https://github.com/alexa/avs-device-sdk
- Video tour (about a minute): https://gitdiagram.com/alexa/avs-device-sdk/video

## Overview

The tree identifies an archived, modular Alexa Voice Service device SDK. Its central product workflow is capturing a user interaction, exchanging AVS messages with the service, dispatching returned directives to capability agents, and coordinating device behavior such as audio focus and playback. The graph also preserves major platform branches visible in the tree, including gateway management, authorization, and asset handling. The README only states that the SDK is archived, and sampled implementation excerpts are storage-focused; several runtime links therefore reflect module roles and interfaces evident in the tree rather than inspected call sites.

Main entry points: [`AVSCommon/AVS/src/CapabilityAgent.cpp`](https://github.com/alexa/avs-device-sdk/blob/master/AVSCommon/AVS/src/CapabilityAgent.cpp) (Capability agents), [`ACL/src/Transport/MessageRouter.cpp`](https://github.com/alexa/avs-device-sdk/blob/master/ACL/src/Transport/MessageRouter.cpp) (Message router), [`ACL/src/Transport/HTTP2Transport.cpp`](https://github.com/alexa/avs-device-sdk/blob/master/ACL/src/Transport/HTTP2Transport.cpp) (HTTP/2 transport), [`AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/Storage/MiscStorageInterface.h`](https://github.com/alexa/avs-device-sdk/blob/master/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/Storage/MiscStorageInterface.h) (Misc storage API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interaction["Interaction processing"]
  node_audio["Audio input<br/>[AudioInputStream.h]"]
  node_interpreter["Message interpreter"]
  node_sequencer["Directive sequencer"]
  node_router["Directive router"]
  node_agents["Capability agents"]
  node_context["AVS context<br/>[AVSContext.cpp]"]
end

subgraph group_connectivity["AVS connectivity"]
  node_requests["Message requests<br/>[MessageRequest.cpp]"]
  node_connection["Connection manager"]
  node_routermsg["Message router<br/>[MessageRouter.cpp]"]
  node_transport["HTTP/2 transport<br/>[HTTP2Transport.cpp]"]
end

subgraph group_device["Device capabilities"]
  node_focus["Focus manager<br/>[FocusManager.cpp]"]
  node_channels["Audio channels<br/>[Channel.cpp]"]
  node_speaker["Speaker manager"]
  node_calls["Call capability"]
end

subgraph group_platform["Platform services"]
  node_auth["Authorization"]
  node_lwa["LWA token storage"]
  node_gateway["Gateway verification"]
  node_assets["Asset storage<br/>[StorageManager.cpp]"]
  node_misc["Misc storage API"]
end

node_user(("Device user"))
node_avs(("AVS"))

node_user -->|"speaks"| node_audio
node_audio -->|"supplies audio"| node_requests
node_context -->|"provides context"| node_requests
node_requests -->|"submits messages"| node_connection
node_connection -->|"routes requests"| node_routermsg
node_routermsg -->|"dispatches"| node_transport
node_transport -->|"exchanges messages"| node_avs
node_avs -->|"returns directives"| node_transport
node_transport -->|"delivers responses"| node_routermsg
node_routermsg -->|"delivers messages"| node_interpreter
node_interpreter -->|"submits directives"| node_sequencer
node_sequencer -->|"dispatches directives"| node_router
node_router -->|"selects handlers"| node_agents
node_agents -->|"updates state"| node_context
node_agents -->|"requests focus"| node_focus
node_focus -->|"grants focus"| node_channels
node_channels -.->|"coordinates audio"| node_speaker
node_calls -.->|"implements capability"| node_agents
node_auth -->|"stores identity"| node_misc
node_gateway -->|"stores verification"| node_misc
node_speaker -->|"stores settings"| node_misc
node_lwa -.->|"provides token storage"| node_auth
node_assets -.->|"uses budgeted assets"| node_misc

click node_audio "https://github.com/alexa/avs-device-sdk/blob/master/AVSCommon/AVS/include/AVSCommon/AVS/AudioInputStream.h"
click node_interpreter "https://github.com/alexa/avs-device-sdk/blob/master/ADSL/src/MessageInterpreter.cpp"
click node_sequencer "https://github.com/alexa/avs-device-sdk/blob/master/ADSL/src/DirectiveSequencer.cpp"
click node_router "https://github.com/alexa/avs-device-sdk/blob/master/ADSL/src/DirectiveRouter.cpp"
click node_agents "https://github.com/alexa/avs-device-sdk/blob/master/AVSCommon/AVS/src/CapabilityAgent.cpp"
click node_context "https://github.com/alexa/avs-device-sdk/blob/master/AVSCommon/AVS/src/AVSContext.cpp"
click node_requests "https://github.com/alexa/avs-device-sdk/blob/master/AVSCommon/AVS/src/MessageRequest.cpp"
click node_connection "https://github.com/alexa/avs-device-sdk/blob/master/ACL/src/AVSConnectionManager.cpp"
click node_routermsg "https://github.com/alexa/avs-device-sdk/blob/master/ACL/src/Transport/MessageRouter.cpp"
click node_transport "https://github.com/alexa/avs-device-sdk/blob/master/ACL/src/Transport/HTTP2Transport.cpp"
click node_focus "https://github.com/alexa/avs-device-sdk/blob/master/AFML/src/FocusManager.cpp"
click node_channels "https://github.com/alexa/avs-device-sdk/blob/master/AFML/src/Channel.cpp"
click node_speaker "https://github.com/alexa/avs-device-sdk/blob/master/CapabilityAgents/SpeakerManager/SpeakerManager/src/SpeakerManagerMiscStorage.cpp"
click node_calls "https://github.com/alexa/avs-device-sdk/blob/master/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/CallManagerInterface.h"
click node_auth "https://github.com/alexa/avs-device-sdk/blob/master/core/Authorization/acsdkAuthorization/src/AuthorizationManagerStorage.cpp"
click node_lwa "https://github.com/alexa/avs-device-sdk/blob/master/core/Authorization/acsdkAuthorization/src/LWA/LWAAuthorizationStorage.cpp"
click node_gateway "https://github.com/alexa/avs-device-sdk/blob/master/AVSGatewayManager/src/Storage/AVSGatewayManagerStorage.cpp"
click node_assets "https://github.com/alexa/avs-device-sdk/blob/master/capabilities/AssetManager/acsdkAssetManager/src/StorageManager.cpp"
click node_misc "https://github.com/alexa/avs-device-sdk/blob/master/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/Storage/MiscStorageInterface.h"

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_audio,node_interpreter,node_sequencer,node_router,node_agents,node_context,node_user toneBlue
class node_requests,node_connection,node_routermsg,node_transport toneAmber
class node_focus,node_channels,node_speaker,node_calls toneMint
class node_auth,node_lwa,node_gateway,node_assets,node_misc toneRose
class node_avs toneIndigo
```

## Components

### Interaction processing

- [Audio input](https://github.com/alexa/avs-device-sdk/blob/master/AVSCommon/AVS/include/AVSCommon/AVS/AudioInputStream.h): `AVSCommon/AVS/include/AVSCommon/AVS/AudioInputStream.h`
- [Message interpreter](https://github.com/alexa/avs-device-sdk/blob/master/ADSL/src/MessageInterpreter.cpp): `ADSL/src/MessageInterpreter.cpp`
- [Directive sequencer](https://github.com/alexa/avs-device-sdk/blob/master/ADSL/src/DirectiveSequencer.cpp): `ADSL/src/DirectiveSequencer.cpp`
- [Directive router](https://github.com/alexa/avs-device-sdk/blob/master/ADSL/src/DirectiveRouter.cpp): `ADSL/src/DirectiveRouter.cpp`
- [Capability agents](https://github.com/alexa/avs-device-sdk/blob/master/AVSCommon/AVS/src/CapabilityAgent.cpp): `AVSCommon/AVS/src/CapabilityAgent.cpp`
- [AVS context](https://github.com/alexa/avs-device-sdk/blob/master/AVSCommon/AVS/src/AVSContext.cpp): `AVSCommon/AVS/src/AVSContext.cpp`

### AVS connectivity

- [Message requests](https://github.com/alexa/avs-device-sdk/blob/master/AVSCommon/AVS/src/MessageRequest.cpp): `AVSCommon/AVS/src/MessageRequest.cpp`
- [Connection manager](https://github.com/alexa/avs-device-sdk/blob/master/ACL/src/AVSConnectionManager.cpp): `ACL/src/AVSConnectionManager.cpp`
- [Message router](https://github.com/alexa/avs-device-sdk/blob/master/ACL/src/Transport/MessageRouter.cpp): `ACL/src/Transport/MessageRouter.cpp`
- [HTTP/2 transport](https://github.com/alexa/avs-device-sdk/blob/master/ACL/src/Transport/HTTP2Transport.cpp): `ACL/src/Transport/HTTP2Transport.cpp`

### Device capabilities

- [Focus manager](https://github.com/alexa/avs-device-sdk/blob/master/AFML/src/FocusManager.cpp): `AFML/src/FocusManager.cpp`
- [Audio channels](https://github.com/alexa/avs-device-sdk/blob/master/AFML/src/Channel.cpp): `AFML/src/Channel.cpp`
- [Speaker manager](https://github.com/alexa/avs-device-sdk/blob/master/CapabilityAgents/SpeakerManager/SpeakerManager/src/SpeakerManagerMiscStorage.cpp): `CapabilityAgents/SpeakerManager/SpeakerManager/src/SpeakerManagerMiscStorage.cpp`
- [Call capability](https://github.com/alexa/avs-device-sdk/blob/master/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/CallManagerInterface.h): `AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/CallManagerInterface.h`

### Platform services

- [Authorization](https://github.com/alexa/avs-device-sdk/blob/master/core/Authorization/acsdkAuthorization/src/AuthorizationManagerStorage.cpp): `core/Authorization/acsdkAuthorization/src/AuthorizationManagerStorage.cpp`
- [LWA token storage](https://github.com/alexa/avs-device-sdk/blob/master/core/Authorization/acsdkAuthorization/src/LWA/LWAAuthorizationStorage.cpp): `core/Authorization/acsdkAuthorization/src/LWA/LWAAuthorizationStorage.cpp`
- [Gateway verification](https://github.com/alexa/avs-device-sdk/blob/master/AVSGatewayManager/src/Storage/AVSGatewayManagerStorage.cpp): `AVSGatewayManager/src/Storage/AVSGatewayManagerStorage.cpp`
- [Asset storage](https://github.com/alexa/avs-device-sdk/blob/master/capabilities/AssetManager/acsdkAssetManager/src/StorageManager.cpp): `capabilities/AssetManager/acsdkAssetManager/src/StorageManager.cpp`
- [Misc storage API](https://github.com/alexa/avs-device-sdk/blob/master/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/Storage/MiscStorageInterface.h): `AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/Storage/MiscStorageInterface.h`

### Other components

- **Device user**
- **AVS**

## Connections

- Device user → Audio input: speaks
- Audio input → Message requests: supplies audio
- AVS context → Message requests: provides context
- Message requests → Connection manager: submits messages
- Connection manager → Message router: routes requests
- Message router → HTTP/2 transport: dispatches
- HTTP/2 transport → AVS: exchanges messages
- AVS → HTTP/2 transport: returns directives
- HTTP/2 transport → Message router: delivers responses
- Message router → Message interpreter: delivers messages
- Message interpreter → Directive sequencer: submits directives
- Directive sequencer → Directive router: dispatches directives
- Directive router → Capability agents: selects handlers
- Capability agents → AVS context: updates state
- Capability agents → Focus manager: requests focus
- Focus manager → Audio channels: grants focus
- Audio channels → Speaker manager: coordinates audio
- Call capability → Capability agents: implements capability
- Authorization → Misc storage API: stores identity
- Gateway verification → Misc storage API: stores verification
- Speaker manager → Misc storage API: stores settings
- LWA token storage → Authorization: provides token storage
- Asset storage → Misc storage API: uses budgeted assets
