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.
Install and pack a bag
Section titled “Install and pack a bag”The example is the Blender bag, which renders 3D animation on your Mac. It also needs Blender and ffmpeg, which its README lists.
To see everything a bag registered, run barry bag show blender.
Create a bag
Section titled “Create a bag”When you change the bag’s code, run barry install ~/repos/my-tools again to
rebuild it.
What a bag.yaml holds
Section titled “What a bag.yaml holds”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.