@garaje/base
The **agent-side substrate** for the [garaje](https://www.npmjs.com/package/garaje) framework, distributed as a [pi](https://pi.dev) package.
Package details
Install @garaje/base from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@garaje/base- Package
@garaje/base- Version
0.1.5- Published
- Jul 9, 2026
- Downloads
- 126/mo · 126/wk
- Author
- icarpenter
- License
- MIT
- Types
- extension, skill
- Size
- 137.4 KB
- Dependencies
- 0 dependencies · 5 peers
Pi manifest JSON
{
"extensions": [
"./extensions"
],
"skills": [
"./skills"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
@garaje/base
The agent-side substrate for the garaje framework, distributed as a pi package.
A garaje runs the pi coding agent against your codebases; @garaje/base is what
gives that agent its garaje-specific behavior. It ships:
- the Garaje persona, base rules, and canonical roles (planner / implementer / reviewer / doc-writer),
- the base extensions (preset/role commands, guardrails, protected-paths and command-intent guards that keep the agent from reconfiguring its own container),
- the agent skills — including park (introspect a codebase and wire it into the garaje) and upgrade-bay (re-park after upstream change),
- the generated
presets.jsonandagents/*.mdderived from the roles.
How it's consumed
A garaje pins this package declaratively — you don't install or import it by
hand. Its .pi/settings.json carries a packages entry, and pi installs and
loads the package (read-only) on session start:
{
"packages": [
{
"source": "npm:@garaje/base@0.1.1",
"extensions": ["extensions/**", "!extensions/session-name.ts"]
}
]
}
garaje init writes this pin at the CLI's own version, so a fresh garaje is
internally consistent by construction, and garaje upgrade bumps it.
Override-only customization
The base installs read-only. A garaje customizes by layering local resources
on top — extra rules in .agent/rules/, project presets in .pi/presets.json,
local roles in .pi/agents/ — which pi merges over the base at load time, with
local entries winning on name collisions. Because lower layers are never edited
in place, upgrading the framework is a version-pin bump rather than a merge, and
garaje upgrade flags any local override that now shadows or orphans a changed
base resource.
Harness portability
@garaje/base is specifically the pi adapter for garaje. The framework's
harness seam is deliberately thin: targeting a different agent harness means
shipping a different base package, not rewriting the framework. Role and rule
content is portable Markdown, so it carries across.
A pi package contributes extensions, prompts, roles, rules, and skills to a
session (packages contribute resources, not host settings). Released in lockstep
with the garaje CLI.
License
MIT