kairo.toml is the manifest at the root of every Kairo package. It declares who the package is, what kind of package it is, what it depends on, and (for applications) how Pulse should run it. It is the single source of truth for package-level metadata. TOML was chosen because it is readable, stable, and version-control friendly.
Minimal application manifest
Minimal library manifest
manifest_version
The manifest schema version. Currently 1.
[package]
Identity and kind of the package.
Package names use the same PascalCase dot-separated convention as module names. They do not have to match any specific module inside the package.
[application]
Required only when kind = "application".
- Must resolve to a module-level
public func. - Name does not have to be
main, thoughmainis recommended. - Supported signatures:
func(),func(): Int32,func(): Result<Int32, E>, and theirasyncforms.
[runtime]
Required only when kind = "application".
The runtime contract is an explicit compatibility promise. Pulse rejects artifacts that target an unsupported contract before executing any application code.
[dependencies]
Declares packages this package depends on. Applies to both applications and libraries.
[publish]
Optional. Declares where the package publishes to.
Complete example
Validation rules
Forge validates the manifest before building. Common failure modes:- Missing
[application]on an application package entrythat does not resolve to a public module-level function- Missing
[runtime]on an application package - Circular or unresolved dependencies
Next steps
Dependencies
Declaring versions and locking with
forge.lock.Pulse Runtime
Entrypoint signatures and exit codes.
