pack.toml, published in a git repository. graph pack add copies it into a config layer, and its items join the catalog under the pack’s name.
Install a pack
./.graph/packs/github/, adds a [packs.github] entry to config.toml and records the release in ./.graph/packs.lock. Commit all three, and everyone who clones the project gets the same pack without installing anything. --global installs into ~/.config/graph/ instead.
Names
A pack’s items are called as<pack>__<kind>__<item>:
--as <name> installs a pack under another name, when two packs share one.
A pack in the project layer shadows a pack with the same name in the global layer.
Versions
A pack’s releases are git tags named after its directory, such asgithub/v1.2.0. The ref in its config entry says which releases it follows:
graph pack update moves a pack to the newest release its ref allows. A new major release is never installed until you run graph pack update --major, which runs the pack’s migration over your files and asks before applying it.
Releases never change
packs.lock records the commit and a content hash for every installed release. graph refuses to install or update a pack whose release tag now points at a different commit, and graph pack list reports the moved tag. Packs that follow a branch are exempt.
The official packs’ tags are protected from moving or deletion, and each release on GitHub lists the content hash that packs.lock should record.
Change a pack
The installed pack is a plain copy, so you can edit its files.graph pack list reports a copy that differs from packs.lock, and graph pack update refuses to overwrite it unless you pass --force.
To hide items from your own plans and agents, list glob patterns over <kind>__<item> in the entry’s include or exclude. The pack’s own plans and agents can still call everything.
Requirements
A pack’spack.toml lists what it needs: a graph version, operating systems, programs on PATH, environment variables and MCP servers. graph refuses to install or load a pack for another graph version or system. graph config check reports anything else that’s missing, and a plan run that reaches the pack fails before its first step. See requires.
Guides
Install and update packs
Add a pack, keep it current and remove it.
Write a pack
Scaffold, test and release a pack from your own repository.