Enable Remote Taskfiles:
export TASK_X_REMOTE_TASKFILES=1Build the CLI binary:
task cliThe binary is placed at dist/unikraft.
To generate documentation (Markdown docs and man pages):
# Generate all docs
task docs
# Generate man pages only
task docs:man
# Generate markdown docs only
task docs:mdxOutput is placed in dist/docs/ and dist/man/.
Run unit tests:
task testRun offline golden (snapshot) tests:
task goldenIf golden test expectations change, update them:
task golden-updateNever edit files in testdata/ manually β always use task golden-update
to regenerate them.
Run integration tests (requires cloud credentials):
task integrationRun the linter:
task lintRun tests and linting locally before pushing; CI also runs them.
Releases are performed by merging into the prod-stable branch and pushing it. CI
automatically determines the git tag β no manual tagging is needed.
The CLI follows a resource-oriented architecture:
- Commands (
internal/cmd/) β Kong-based command definitions with subcommand routing - Resources (
internal/resource/) β Unified interface for API objects with field introspection - Multi-Metro (
internal/multimetro/) β Client abstraction for global infrastructure operations - Configuration (
internal/config/) β Profile and credential management - Telemetry (
internal/telemetry/) β Anonymous usage analytics (opt-out via--no-telemetry)
- Kong β CLI parsing and command wiring
- Bubble Tea β Terminal UI components
- Unikraft Cloud SDK β API client library