Skip to main content

Recipe Registry CLI

The recipe registry allows you to publish, pull, and manage recipes in a centralized location.

Quick Start

# Publish a recipe to local registry
praisonai recipe publish ./my-recipe

# Pull a recipe from registry
praisonai recipe pull [email protected]

# List recipes in registry
praisonai recipe list

Commands

publish

Publish a recipe bundle or directory to the registry.
praisonai recipe publish <bundle-or-directory> [options]
Options:
OptionDescription
--registry <path-or-url>Registry path or URL (default: ~/.praison/registry)
--token <token>Authentication token for remote registry
--forceOverwrite existing version
--jsonOutput JSON format
Examples:
# Publish a bundle
praisonai recipe publish my-recipe-1.0.0.praison

# Publish a directory (auto-packs)
praisonai recipe publish ./my-recipe

# Publish to custom registry
praisonai recipe publish ./my-recipe --registry /path/to/registry

# Force overwrite existing version
praisonai recipe publish ./my-recipe --force

# JSON output
praisonai recipe publish ./my-recipe --json

pull

Pull a recipe from the registry.
praisonai recipe pull <name>[@version] [options]
Options:
OptionDescription
--registry <path-or-url>Registry path or URL
--token <token>Authentication token
-o, --output <dir>Output directory (default: current)
--jsonOutput JSON format
Examples:
# Pull latest version
praisonai recipe pull my-recipe

# Pull specific version
praisonai recipe pull [email protected]

# Pull to specific directory
praisonai recipe pull my-recipe -o ./recipes

# Pull from custom registry
praisonai recipe pull my-recipe --registry /path/to/registry

Registry Types

Local Registry

The default registry is stored at ~/.praison/registry. No configuration required.
# Uses default local registry
praisonai recipe publish ./my-recipe
praisonai recipe pull my-recipe

Custom Local Registry

Specify a custom path for the registry:
# Use custom path
praisonai recipe publish ./my-recipe --registry /shared/recipes
praisonai recipe pull my-recipe --registry /shared/recipes

Remote Registry (Future)

Remote HTTP registries will be supported with token authentication:
# Publish to remote registry
praisonai recipe publish ./my-recipe \
  --registry https://registry.example.com \
  --token $REGISTRY_TOKEN

Registry Structure

~/.praison/registry/
├── index.json           # Recipe index
└── recipes/
    └── my-recipe/
        └── 1.0.0/
            ├── manifest.json
            └── my-recipe-1.0.0.praison

Environment Variables

VariableDescription
PRAISONAI_REGISTRY_TOKENDefault authentication token

Exit Codes

CodeMeaning
0Success
2Validation error (invalid bundle)
7Recipe not found

Python API

from praisonai.recipe.registry import LocalRegistry, get_registry

# Create registry
registry = LocalRegistry()  # Uses default path
# or
registry = LocalRegistry("/custom/path")

# Publish
result = registry.publish("my-recipe-1.0.0.praison")
print(f"Published: {result['name']}@{result['version']}")

# Pull
result = registry.pull("my-recipe", version="1.0.0", output_dir="./recipes")
print(f"Pulled to: {result['path']}")

# List
recipes = registry.list_recipes()
for r in recipes:
    print(f"{r['name']} ({r['version']})")

# Search
results = registry.search("hello")

Next Steps