Elizon Docs
Guides & Walkthroughs

Your first Package

Build a product-support assistant as a Package, from an empty folder to installed in an Organization.

You'll build Support Bot: an Agent that answers product questions from the installer's own documentation. It's small, but it uses everything that makes a Package portable: an entry point, a Knowledge Base, and Slots for everything the installer brings.

You need: Node.js 22+, and for the last steps an Elizon Organization where your role can install Packages (Owner, Admin or Editor). See Prerequisites.

Scaffold

npx @elizon/cli init support-bot --starter=single-agent
cd support-bot

Pick your coding agent when asked (or pass --agent=). The starter is already valid. Look at what you got:

elizon.yaml
support-assistant.yaml
product-docs.yaml
config.yaml

Open .elizon/config.yaml and note cliVersion. This guide writes 0.5.0; use yours in every command below.

Give it an identity

In elizon.yaml, set who you are and what this is:

metadata:
  name: support-bot
  namespace: acme # your organization, kept the same across all your Packages
  version: 0.1.0
  displayName: Support Bot
  description: Answers product questions from your own documentation.
  license: UNLICENSED

Write the instructions

In agents/support-assistant.yaml, replace config.instructions.content:

instructions:
  content: |
    You answer questions about the customer's products using only their documentation.
    If the documentation doesn't answer the question, say so and suggest contacting support.
    Never invent product features, prices or dates.

Validate, and read what it tells you

npx @elizon/cli@0.5.0 validate

Now make a mistake on purpose: change entryPoint to agents.support-assistent and validate again.

✗ [ENTRY_POINT_NOT_FOUND] entryPoint
  `entryPoint` names `agents.support-assistent`, which this Package does not declare
  Did you mean `agents.support-assistant`? Declare `support-assistent` under `agents[]`, or point the reference at one of: agents.support-assistant. Every trigger fires the entry point, so it must exist.

Every error names where (path), what kind (code) and what to do (the hint). Fix it, validate again, and you're back to green.

Be honest about data

Support Bot handles customers' questions, so declare it in compliance:

compliance:
  dataCategories: [personal_data]
  retention:
    conversations: 30d
    documents: retained_until_deleted
  autonomy: advisory
  providers: []

regions is optional. Add it (for example regions: [EU]) only if the Package really commits to where data is processed; the installer reads it as your promise.

The installer sees this before installing anything. See The manifest → compliance.

Build

npx @elizon/cli@0.5.0 validate
npx @elizon/cli@0.5.0 build

You now have acme-support-bot-0.1.0.pkg. It's unsigned, and nobody can install it yet.

Connect and sign

npx @elizon/cli@0.5.0 target add <your-elizon-address>
npx @elizon/cli@0.5.0 sign acme-support-bot-0.1.0.pkg --yes

Approve the device in your browser when asked. See Connect a device.

Install

In Studio, open Packages → Install a Package and upload the signed file. The wizard shows what will be created and asks for exactly what the Slots declare:

  • LLM: a model for reasoning, and on the Knowledge Base step a model for embedding,
  • Knowledge Base: your product documentation (upload files, connect a source, or skip for now),
  • Validate and Activate.

The full walkthrough is in Installing a Package.

Try it

Open the installed Agent from Studio → Packages → Support Bot and ask it a question your documentation answers, then one it doesn't. The second answer should say so.

What you've learned

  • A Package carries behaviour, never accounts, keys or documents. Those are Slots.
  • validate is your feedback loop, and it's designed to be read by a coding agent as well as by you.
  • build is offline and unsigned; sign involves your Organization; installing is the installer's decision.

Next