kairo.toml manifest at its root, one or more .ak source files, and a declared kind: either an application or a library.
Package kinds
application
Has an entrypoint. Directly executable by Pulse. Produces a runnable artifact.
library
No entrypoint. Provides types and functions to other packages. Not directly runnable.
kairo.toml:
Standard layout
Kairo packages follow a predictable folder structure:File paths are conventions for humans. The authoritative name for a module is its
module declaration inside the source file, not its folder path.The manifest
Every package has akairo.toml at its root. It declares:
- Package identity: name, version, kind
- Application settings (entrypoint, runtime target) when the kind is
application - Dependencies on other packages
- Publish metadata when relevant
Modules within a package
A package contains one or more modules. Each.ak file declares exactly one module.
Dependencies
Packages depend on other packages by name and version, declared inkairo.toml. Forge resolves dependencies deterministically and writes the result to forge.lock.
Applications vs. libraries
Only packages withkind = "application" can be executed by Pulse. Library packages are consumed by other packages via [dependencies].
Next steps
Manifest reference
Every
kairo.toml field explained.Dependencies
Declaring, restoring, and locking dependencies.
