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 the linter:
task lintRun integration tests:
task integrationIf integration test expectations change, update the golden files with:
task integration-updateNever edit files in testdata/ manually — always use task integration-update
to regenerate them.
Run tests and linting locally before pushing; CI also runs them.
Releases are performed by merging into the 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