Connect an adapter
An adapter tells the CLI where your AI tool keeps its files and its MCP configuration. You need at least one.facet adapter add with no name for a picker. Third-party adapters install the same way from npm, a git URL, or a local path.Find and add a facet
facet add writes the entry to facets.json and installs it in one step. A bare name resolves to the latest registry release and is pinned to that version.See facet add for the full grammar and what is rejected.What gets written
Commit both files so teammates and CI resolve identical versions.facets.json records what your project depends on and how you want its assets named. facets.lock records exact versions, , and per-file records. The CLI owns the lockfile; never hand-edit it.A third file, the machine-local install receipt, lives outside your project under $FACET_DIR. It tracks what this machine wrote and holds your MCP approvals, which is why neither travels to teammates.Where assets land
Text assets are written into every connected adapter at project scope. Withopencode, adding cowsay writes:README.md or LICENSE ships in the archive but is never written into your tools.facet remove deletes only what your machine’s receipt records installing, so a file the CLI never wrote is left in place.When two facets want one name
Two facets can publish a text asset with the same name. Nothing picks a winner for you, so the install pauses and asks:facets.json, so it happens once:facets.json
Approve MCP servers
A facet can declare MCP servers. Because that configuration lets your tool run a command or open a connection, the CLI asks before writing it. One screen lists every server, the facets that want it, and the exact command, arguments, and environment values or URL. Decline is selected by default.You are asked again only when a declaration changes. Approval is stored per machine, so a teammate approves on their own.In CI, pre-approve the set:facets.json
Reinstall after a clone
facet install materializes every declared facet at the versions in the lockfile.Manage what is installed
facet update shows what is installed next to the versions it could move to. Git and local facets are listed as unsupported, since only registry facets have releases to compare. To pin instead, re-add at an exact version with facet add viper-plans@2.0.0.facet remove drops the facet from facets.json, deletes what it still owns, and rewrites the lockfile. Assets another declared facet still wants are kept, and removing a name that is not declared is a safe no-op.Connecting an adapter later hands it everything the project already owns: the next install materializes those assets into the new tool too.