kpkg — Universal Package Manager
- Area: Developer Platform
- Path:
dev/kpkg - Kind: CLI tool + Go library
- Version: 0.5.3
Role in the stack
kpkg is the toolchain for packaging, distributing, and installing Koder apps across all platforms. It defines the .kpkg format — a bootstrap-prepended ZIP that is self-executable on Linux/macOS — and provides the installer library consumed by khub (the Koder Hub CLI) and future tooling.
The design follows the aptdpkg model: one library (`dev.koder.kpkginstaller`), multiple consumers, no subprocess duplication.
Key capabilities:
kpkg build— assembles.kpkgfrom a manifest + platform payload directories; exports.deb,.rpm,.AppImage,.msixvia external toolchainskpkg build --from-bundle— packs a pre-built Flutter bundle without re-runningbuild_cmd; used by CI (koder-releaseaction) to produce.kpkgalongsidetar.gzkpkg install— extracts the platform payload, creates symlinks, and registers OS launchers (Linux.desktop, macOS.appstub, Windows Start Menu.lnk)kpkg publish— signs with the developer's Koder ID ed25519 key and uploads to the Koder Hub viaPOST /api/v1/publish/<slug>- Public library packages —
dev.koder.kpkg/installeranddev.koder.kpkg/manifestcan be imported by any Go module; avoids reimplementing install logic in each consumer
Install paths by OS
| OS | Payload prefix | Bin symlink | Launcher |
|---|---|---|---|
| Linux | /opt/koder/<slug>/ (or ~/.local/opt/koder/<slug>/ unprivileged) |
/usr/local/bin/<name> |
dev.koder.<slug>.desktop + hicolor icon |
| macOS | ~/.local/opt/koder/<slug>/ |
~/.local/bin/<name> |
~/Applications/<Name>.app stub with Info.plist |
| Windows | %APPDATA%koder<slug> |
— | Start Menu .lnk via PowerShell WScript.Shell |
.kpkg format
<bootstrap shell script>
PK... (ZIP archive)
├── kpkg.toml — manifest
├── icon.png — 512×512 app icon
├── screenshots/ — optional
├── assets/ — optional
├── linux-amd64/ — platform payload (entry point = kpkg.toml [platforms] value)
├── macos-arm64/
├── win-x64/
└── kpkg.sig — ed25519 signature (optional, warns if absent)The bootstrap executes on chmod +x && ./app.kpkg: detects OS/arch, unzips the matching platform dir to a tempdir, and execs the entry point. If koder-hub is in PATH, it delegates to the Store installer instead.
Primary couplings
| Module | Relationship |
|---|---|
products/dev/store/cli (khub) |
Imports dev.koder.kpkg/installer for .kpkg installs |
products/dev/kterm/app |
Has kpkg.toml; built and packaged by kpkg CI |
products/dev/store/app |
Has kpkg.toml; kpkg packages the Store itself |
.gitea/actions/koder-release |
Calls kpkg build --from-bundle in Linux build step |
meta/docs/stack/specs/kpkg/format.kmd |
Normative format spec |
meta/docs/stack/specs/releases/packaging.kmd |
Format hierarchy: .kpkg primary > .deb/.rpm > tar.gz |