pray-cli

Ruby pray CLI and library for Prayfile: a package manager for the language placed before inference.

Resolve, lock, render, verify, and publish shared instructions, policies, templates, and related input as versioned packages. Consumes path, git, and registry distribution points. The installed executable is pray.

Website: pray.kisko.dev

Maintainer: Andrei Makarov (contact@kiskolabs.com)

Repository: kiskolabs/pray

Community docs: CHANGELOG.md · LICENSE.md · SECURITY.md

Install

gem install pray-cli

From this repository:

cd rubygems/pray-cli
bundle install
bundle exec pray version

Commands

Core workflow:

pray init
pray install
pray plan
pray verify
pray drift
pray manifest

Package management:

pray add sample/base "~> 1.0" --path packages/base
pray remove sample/base
pray update
pray unlock sample/base
pray list
pray tree
pray explain sample/base
pray outdated

Package authoring:

pray prayer init
pray package

Auth, trust, and federation:

pray login --server URL --email EMAIL --passkey-key PATH --credential-id ID
pray confess sample/base --accepted
pray sync --root PATH --peer URL
pray trust list
pray trust show
pray trust add-key KEY --match-prefix PREFIX
pray trust check [SOURCE]

Maintenance:

pray render
pray format
pray clean

Deferred in this release (clear unsupported errors): pray_ssh sources, serve --stdio, confess/sync over pray+ssh, trust --host-key for pray+ssh.

Git sources clone into .pray/cache/git, discover distribution roots at v1/packages or prayers/v1/packages, and resolve packages through registry metadata.

Local publish writes v1/index.json, package metadata, and .praypkg artifacts. serve exposes the distribution tree over HTTP, including federation discovery and sync endpoints.

Layout

lib/pray/
  literal.rb       Prayfile and prayspec literal parser
  manifest.rb      Prayfile parser and model
  package_spec.rb  prayspec parser
  lockfile.rb      Prayfile.lock read/write
  resolve.rb       dependency resolution
  render.rb        target rendering and skill materialization
  verify.rb        verify and drift checks
  registry.rb      HTTP and local registry resolution
  archive.rb       .praypkg archive read/write (requires tar and zstd)
  cli.rb           command dispatch

Tests

make lint
make test

Coverage-gated parallel run:

POLYRUN_COVERAGE=1 bundle exec polyrun parallel-rspec --workers 5 --merge-failures

From the repository root:

make ruby-test

Compatibility

Manifest hashing, lockfile fields, pray markers, and tree hashes match the Rust reference for path-based projects. Registry resolution uses HTTP or a local distribution tree with v1/packages/*.json metadata.