Skip to main content
Integration packages bundle agents, functions, skills, components, templates, and other resources into a shareable YAML file that can be installed with one click. How packages work:
  1. Create: Select resources from your Sinas instance → export as SinasPackage YAML
  2. Share: Distribute the YAML file (GitHub, email, package registry)
  3. Install: Paste/upload the YAML → preview changes → confirm install
  4. Uninstall: Removes all resources created by the package in one operation
Package YAML format:
Key behaviors:
  • Resources created by packages are tagged with managed_by: "pkg:<name>"
  • Detach-on-edit: Editing a package-managed resource clears managed_by — the resource survives uninstall
  • Uninstall: Deletes all resources where managed_by = "pkg:<name>" + the package record
  • Upgrade: Re-installing an existing package updates its resources in place (idempotent apply)
  • Excluded types: Packages cannot include roles, users, LLM providers, or database connections (these are environment-specific)
  • Dependencies: Packages can declare Python dependencies — these are recorded in the database and installed in containers on worker restart

Install-time Variables

Packages can declare typed variables that are prompted during installation. Variables are substituted into the YAML before resources are persisted — the resulting resources contain literal values, no runtime template evaluation. Declaring variables:
Variable types: Substitution syntax: Use ${{ vars.NAME }} anywhere in the package spec. Resolved by simple string replacement before parsing — not Jinja2, so no conflicts with system prompt templates.
API:
  • POST /api/v1/packages/preview — response includes variables (declarations) and requires_input (bool). Pass variables: {NAME: value} in the request to preview with substitution.
  • POST /api/v1/packages/install — pass variables: {NAME: value} in the request. Required variables must be present.
Stored values: Variable values from the last install are stored in Package.values. On upgrade, the console pre-fills the form with previous values. Secret values are stored as "***" — the actual credential lives in the Secrets table. Endpoints:
Creating a package from existing resources:
Supported resource types: agent, function, skill, connector, manifest, component, query, collection, store, template, webhook, schedule, database_trigger.