@rtorr/nah
v1.0.24
Published
Native Application Host - Manage native applications, NAKs, profiles, and launch contracts
Maintainers
Readme
NAH - Native Application Host
NAH is a launch contract system for native applications.
When you deploy a native application, someone must figure out how to launch it: which binary, what library paths, which environment variables, what SDK version. This information typically lives in documentation that drifts, install scripts that diverge, or tribal knowledge that doesn't scale.
NAH eliminates this by making applications self-describing. Apps declare what they need. SDKs declare what they provide. Hosts declare policy. NAH composes these into a launch contract - the exact parameters needed to run the application.
Example
# Install packages
nah install vendor-sdk-2.1.0.nak
nah install myapp-1.0.0.nap
# Query the launch contract
nah status com.example.myappApplication: com.example.myapp v1.0.0
NAK: com.vendor.sdk v2.1.0
Binary: /opt/nah/apps/com.example.myapp-1.0.0/bin/myapp
CWD: /opt/nah/apps/com.example.myapp-1.0.0
Library Paths: /opt/nah/naks/com.vendor.sdk/2.1.0/libThe contract is deterministic. Same inputs, same output. Auditable before execution.
CLI
nah install <source> Install app (.nap) or SDK (.nak)
nah uninstall <id> Remove a package
nah list List installed packages
nah pack <dir> Create a package
nah status [target] Show status and diagnose issues
nah init <type> <dir> Create new project (app, nak, root)
nah profile list|set Manage host profilesInstallation
# npm (recommended)
npm install -g @rtorr/nah
# Linux
curl -L https://github.com/rtorr/nah/releases/latest/download/nah-linux-x64.tar.gz | tar xz
sudo mv nah /usr/local/bin/
# macOS
curl -L https://github.com/rtorr/nah/releases/latest/download/nah-macos-arm64.tar.gz | tar xz
sudo mv nah /usr/local/bin/Library Integration
include(FetchContent)
FetchContent_Declare(nah GIT_REPOSITORY https://github.com/rtorr/nah.git GIT_TAG v1.0.0)
FetchContent_MakeAvailable(nah)
target_link_libraries(your_target PRIVATE nahhost)Platform Support
| Platform | Status | |----------|--------| | Linux (x64, arm64) | Supported | | macOS (x64, arm64) | Supported | | Windows | Code exists, not actively tested | | Android | Planned for future release |
Documentation
- How It Works - Internals of the launch contract system
- Concepts - Core terminology: manifests, NAKs, profiles, contracts
- Getting Started: Host - Set up a host and deploy applications
- Getting Started: SDK - Package an SDK for distribution
- Getting Started: App - Build an application with a manifest
- CLI Reference - Command-line interface documentation
- Troubleshooting - Common issues and solutions
- Specification - Normative specification
- Contributing - Development setup and releasing
License
MIT
