Skip to content
Beskid The Beskid Book

Beskid

Jump to a Beskid service

Beskid

Jump to a Beskid service

Publish your first package

End-to-end flow from local project to first registry release.

Publish your first package

import { Aside } from ‘@astrojs/starlight/components’;

Ensure the project .bproj has valid metadata, at least one target, and explicit dependency declarations. The registry requires an owned package record before the first artifact upload; a missing record makes the upload fail with HTTP 404 (package not found).

Terminal window
beskid pckg configure --api-key "$BESKID_PCKG_API_KEY"
beskid pckg whoami

Create the package record once through the authenticated metadata API. This is a separate operation from immutable artifact publication:

Terminal window
curl --fail-with-body --silent --show-error \
--request POST \
--header "Authorization: Bearer $BESKID_PCKG_API_KEY" \
--header 'Content-Type: application/json' \
--data '{"name":"my-package","isPublic":true,"submitForReview":false}' \
https://pckg.beskid-lang.org/api/packages

The v0.4 release publisher performs this create-before-upload step automatically for the canonical corelib and template inventory.

Terminal window
beskid pckg pack --package my-package --source . --output my-package.bpk

This selects the exact artifact version and performs local checks without uploading:

  • manifest validity
  • source/package consistency
  • deterministic package assembly
Terminal window
beskid pckg upload my-package --artifact my-package.bpk

The CLI reads the version from artifact-root package.json and sends multipart version, checksumSha256, and .bpk bytes to POST /api/packages/my-package/versions. The server validates the artifact and preserves that immutable package/version coordinate.

Terminal window
beskid pckg search my-package
beskid pckg versions my-package
beskid pckg download my-package --version 1.0.0 --output my-package.bpk