Skip to content
WIP

This guide is a work in progress — it is incomplete and parts are out of date.

Packing bags

This guide shows you how to add a bag to your Barry, and how to make a bag of your own. A bag bundles tools, instructions, and actions; packing it puts it on your identity.

Before you begin, build a Barry.

The example is the Blender bag, which renders 3D animation on your Mac. It also needs Blender and ffmpeg, which its README lists.

  1. Install the bag from its repository:

    Terminal
    barry install https://github.com/perintyler/blender-bag

    Barry clones the repository into ~/repos/bags, builds it, and registers it under the name its bag.yaml declares, blender.

  2. Pack the bag onto your identity:

    Terminal
    barry pack blender
  3. Start a session that grants the bag’s tools:

    Terminal
    barry --traits blender

    Packing loads a bag, and a trait hands its tools to a session. Empowering with traits covers the other ways to grant them.

To see everything a bag registered, run barry bag show blender.

  1. Scaffold the bag:

    Terminal
    barry new my-tools --path ~/repos/my-tools

    The scaffold holds a bag.yaml and an empty skills/ directory.

  2. Point bag.yaml at the module that exports your tools:

    name: my-tools
    description: Tools for my workflow
    tools:
    entry: tools.ts
  3. Check the bag without installing it:

    Terminal
    barry bag check ~/repos/my-tools
  4. Register and build the bag, then pack it:

    Terminal
    barry install ~/repos/my-tools
    barry pack my-tools
  5. Start a session that grants its tools:

    Terminal
    barry --traits my-tools

When you change the bag’s code, run barry install ~/repos/my-tools again to rebuild it.

A manifest needs only name and description. These are the fields a first bag uses:

Field What it does
name Required. The bag’s name, its automatic trait’s name, and the default namespace of its tools
description Required. One line on what the bag provides
tools.entry The module that exports the bag’s tools, relative to the bag. Barry bundles it on install
tools.env Environment variable names the tools read from the identity
mcp-servers An MCP server the bag owns: url for HTTP, or command and args for stdio. The server’s name becomes its tool namespace
traits Extra named grants, each with description, access (read or readwrite), and the bags it grants
dependencies Host programs the bag needs on PATH, each with a name and an optional install and reason. Barry reports a missing one and installs nothing

The schema is strict: an unknown key fails the whole manifest, and a failed manifest contributes no tools and no traits. barry bag check reports it.

Beside bag.yaml, a bag can hold instructions/<name>.md, actions/<name>/action.yaml, and skills/<name>/. Using actions covers actions.