Skip to main content

Hosanna Tools

Hosanna Tools (hst) is the project CLI for Hosanna applications. Run it through the application lockfile:

npx hst version
npx hst --help

The checked-in samples currently use @tantawowa/hosanna-tools ^3.10.2. Treat the output of npx hst version and npx hst <command> --help as authoritative for the application you are working in.

First Project Check

From an application repository:

nvm use
npm ci
npx hst env check
npx hst compiler:status
npx hst target:list

env check reports missing or incompatible prerequisites. Use env fix only after reviewing the proposed changes:

npx hst env fix

Use config show to inspect the effective hosanna.json model:

npx hst config show

Build or Run

run owns the complete development lifecycle for a selected destination: resolve configuration, build where required, start supporting services, install or deploy, launch, and stream logs.

HST resolving layered run selectors, BuildConfig, optional AppConfig, build steps, and a platform target actionHST resolving layered run selectors, BuildConfig, optional AppConfig, build steps, and a platform target action

# Current sample Web workflow
npx hst run web dev browser

# Select interactively from available destinations
npx hst run

# Reuse the last interactive destination
npx hst run --last

# Native simulators
npx hst run ios dev sim --device "iPhone 17 Pro"
npx hst run apple-tv dev sim --device "Apple TV 4K"
npx hst run android dev sim --device "Pixel_8"
npx hst run android-tv dev sim --device "Television_1080p"

# Physical Roku
npx hst run roku dev device --device "living room"

build resolves and builds the same target without launching, deploying, opening a browser, or streaming logs:

npx hst build web dev emulator
npx hst build roku prod device
npx hst build ios dev sim --device "iPhone 17 Pro"

Before running an unfamiliar profile, inspect its plan:

npx hst run roku dev device \
--app criterion \
--dry-run \
--explain

Use --format json when another tool needs the plan.

Platform, Target, and Device

These terms are independent:

TermExamplesMeaning
Platformweb, roku, ios, apple-tv, android, android-tvRuntime expression and platform build path
Environmentdev, qa, prodBuild-config overlay
Targetbrowser, emulator, sim, deviceWhere the expression runs
Device selectorname, IP, serial, UDID, AVD, presetWhich concrete destination to use

Discover destinations instead of guessing names:

npx hst target:list
npx hst target:list ios
npx hst device:list

emulator is a browser-hosted platform expression. sim is an Apple simulator or Android emulator. A browser profile is useful for shared behavior and layout checks, but it is not physical-device certification.

Run Configuration

Projects can store defaults and app/flavour profiles in .hosanna-tools/run.json. A selected app is passed with --app or HOSANNA_RUN_APP; a local build-config profile is selected with --profile or HS_BUILD_PROFILE.

npx hst run roku dev device --app criterion
HS_BUILD_PROFILE=local-debug npx hst run web dev browser

CLI arguments win over application and project defaults. Use --dry-run --explain to see where each resolved value came from. Production rejects a developer profile unless --allow-profile-in-prod is explicit.

Use --reuse to reuse a matching session and --replace to replace a conflicting one. HST otherwise refuses ambiguous ownership rather than silently connecting to an unrelated app.

Native Development Modes

Initialize and validate app-owned native projects with:

npx hst native:init ios
npx hst native:prepare ios
npx hst native:doctor ios

The same commands accept apple-tv, android, or android-tv.

Apple and Android targets default to bundled JavaScript for deterministic launches. Opt into the native development server with --hot-reload:

npx hst run apple-tv dev sim --device "Apple TV 4K" --hot-reload
npx hst run android-tv dev sim --device "Television_1080p" --hot-reload

Use --bundled for an explicit bundled run. --hot-reload and --bundled are mutually exclusive. Physical devices must be able to reach the development-server URL advertised by the host.

Build Config and AppConfig

Build config and AppConfig solve different problems:

  • Build config resolves environment, platform, profile, secrets, and runtime infrastructure settings.
  • AppConfig resolves presentation configuration and root-level $extendFile inheritance.

Inspect build config without exposing secret values:

npx hst build-config:resolve \
--env dev \
--platform web \
--explain

Write the canonical runtime file:

npx hst build-config:resolve \
--env prod \
--platform roku \
--out assets/meta/build-config.json

Resolve AppConfig:

npx hst app-config:resolve --expression tv --platform roku
npx hst app-config:resolve --input app.config.phone.json --out /tmp/resolved-app-config.json

The current public CLI resolves AppConfig JSON. It does not expose app-config:compile, app-config:clean, shape-delivery, font-delivery, or bundle-revision commands.

Generation and Compiler

Generate framework-owned source:

npx hst generate:all
npx hst generate:structs
npx hst generate:clean

Manage the project compiler:

npx hst compiler:status
npx hst compiler:list
npx hst compiler:install

With no explicit version, compiler:install uses transpiler-version from hosanna.json. Keep that version pinned so local development and CI use the same compiler.

SDK and Licensing

For licensed full-source projects:

npx hst license:activate "$HSC_LICENSE_KEY"
npx hst license:status
npx hst sdk:install
npx hst framework:update

license:activate stores a validated key in the user-level Hosanna key file. CI should inject the key from its secret manager and must not print or commit it.

framework:sync and framework:doctor are maintainer commands for managed framework forks; they are not normal application setup steps.

Roku

The normal development command is:

npx hst run roku dev device --device "<name-or-ip>"

Lower-level Roku commands are available when a pipeline needs them:

npx hst roku:run --help
npx hst roku:command keypress
npx hst roku:package --help
npx hst roku:map-stack --help

Use complib:package and complib:serve for app-owned Roku component-library output. Component-library build scripts live in the consuming/sample application, not in the framework repository.

Debugger and MCP

Start the debugger and the MCP server with:

npx hst debugger:start
npx hst mcp:start

hst run can start or reuse the services required by its selected workflow. Use the explicit commands when an editor or agent session needs the debugger independently.

See MCP Debugger Overview for connection and inspection workflows.

Regression Tests and RASP

Hosanna regression tests are Vitest tests using the Hosanna test fixture. Run the application repository's package scripts, for example:

npm run test:ui:web

There is no hst test:ui runner command. HST supplies launch, target, transport, diagnostic, screenshot, and reporting support to the Vitest integration.

Roku Automation Scripting Platform workflows use:

npx hst rasp:capture smoke
npx hst rasp:export <capture-id> smoke
npx hst rasp:validate rasp-scripts/smoke.rasp
npx hst rasp:run rasp-scripts/smoke.rasp

RASP capture is separate from the removed debugger test-recording command family.

Command Reference

See HST Command Reference for the current command inventory and high-value options.

Talk to us