---
question: "Where does the API serve a module's public assets?"
kind: overview
---

# Assets

An asset is a file a module ships that is not code: a logo, an agent's avatar, an image an app shows, or a template that a Nexus section starts from. Agents and apps point at assets; the engine never imports them.

<!-- matrix -->

## Key concepts

- **Public assets.** A module's `assets/public/` folder. The API serves it, for every module the engine loads, at `/modules/<module path>/assets/public/<file>`: the module's import path with dots turned into slashes. `naas_abi_marketplace.domains.intelligence` serves `/modules/naas_abi_marketplace/domains/intelligence/assets/public/osint-researcher.png`.
- **Open to anyone.** That mount takes no API key. Put nothing private in `assets/public/`.
- **Who points at them.** An agent's `logo_url`, an app manifest's `avatar_url`, and a workspace's `logo_url` in the `config.yaml` seed. Nexus turns a module path such as `assets/public/reviewer.png` into the full URL on the API host (`public_api_host`).
- **Template trees.** Seeds for Nexus Slides, Documents and Sheets: a folder of `<id>.html` files plus an optional `catalog.json`. ABI's own are served as `abi/<id>`. A deploy adds more under a namespace of its own with `slides_template_sources`, `documents_template_sources` or `sheets_template_sources` in `nexus_config`.
- **In-engine modules only.** The `/modules/` mount covers the modules the engine loads, not remote modules.
- **Not artifacts.** An asset is a file a module ships. [Artifacts](/user-guide/build/artifacts/overview), things you author inside a module, are coming soon.

The place of assets among a module's parts is on [Overview](/architecture/overview#what-a-module-contains).
