> For the complete documentation index, see [llms.txt](https://docs.hylo-lang.org/hylo-ir/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.hylo-lang.org/hylo-ir/concepts/modules.md).

# Modules

IR code is organized into *modules*. A module consists of an application programming interface (API), an application binary interface (ABI), a collection of lowered type definitions, a collection of lowered functions, and a collection of resources.

An API is a collection of type, function, subscript, and property signatures which document how to interact with Hylo code present in the module at source or IR level.

An ABI is a collection of type and function signatures which document how to interact with compiled Hylo code present in the module.

A resource is an arbitrary file that is part of a module and not processed as a source file.

A module is represented using a target-independent binary format called the *hylomodule* format. Module files should use `.hylomodule`extension and `application/octet-stream` media type.

<mark style="color:orange;">TBD: Describe the valmodule format.</mark>&#x20;
