Agent Install Sources
The TypeAgent Shell and CLI
install application agents through install sources. A source describes where an
agent can come from, and every installed agent records the source it was installed from.
This page is the command reference for the @package command group: @package install,
@package update, @package uninstall, @package list, and @package source.
If you just want to get a first agent running, follow the
Creating an Agent tutorial — it uses a local path source and
the basic @package install command. This page covers the rest.
All install-related commands live under a single @package umbrella (each agent loads
from an underlying package — an npm module or a local path). The group is available
whenever the client has an agent installer; @package on its own defaults to
@package list.
Source kinds #
There are three kinds of install source:
path— a local directory on disk (a built agent package). Used during
development and for installing an agent you authored locally.catalog— a named list of agents resolved by short name. The shell ships with a
bundled catalog; you can add your own.feed— an npm-style package registry, resolved by package specifier (for
exampleecho-agent@^1.2).
Each configured source has a unique name. Names are what you pass to --source and
to the @package source commands.
Resolution order #
When you run @package install <name> <ref> without naming a source, the configured
sources are tried in priority order and the first source that can resolve ref
wins:
- A
refthat exists on disk is claimed by apathsource. - A short name is claimed by a
catalogsource. - A package specifier is claimed by a
feedsource.
Ordering is purely positional — there is no path/specifier heuristic beyond which source
matches first. Putting a local path source ahead of a feed source makes a local
agent shadow the published one automatically. Use @package source list to see the
current order and @package install --where to preview which source would win for a
given ref.
@package list #
@package list
Lists the agents you have installed (the recorded installs only — not the built-in,
system, or MCP agents). Each entry shows the agent name, the source it was installed
from, and the handle it resolves through (a feed specifier, package name, or path).
@package with no subcommand runs @package list.
@package install #
@package install <name> <ref> [--source <sourceName>] [--where]
<name>is the dispatcher agent identifier to register. It must be a legal agent
identifier and must not already be in use by any agent (installed, system/inline, or
MCP). The name is validated before anything is installed, so a bad or colliding name
fails fast.<ref>is interpreted by the resolving source (a path, a short name, or a package
specifier).--source <name>installs from a specific source, bypassing the order.<ref>is
interpreted by that source, and it is an error if that source cannot resolve<ref>.--whereperforms a dry run: it reports which source would win for<ref>(and the
candidate it found) without installing.
Examples:
@package install echo <path to echo package> # ordered resolution (path wins on disk)
@package install echo <path to echo package> --source path # force the local path source
@package install echo echo-agent --where # preview resolution without installing
If no source matches, @package install reports the order and, for enumerable sources,
the agents they advertise. A feed authentication failure surfaces the exact az login
command to run.
@package update #
@package update <name> [<range>]
@package install over an existing name is an error, not a silent reinstall. To
refresh an already-installed agent, use @package update, which re-resolves the agent
against the source it was installed from:
- feed — resolve the newest version, optionally constrained by
<range>(for
example^1.4,~2.0,>=3 <4). With no range, updates to the latest version. - path — re-materialize from the recorded path (picks up a moved or rebuilt local
agent). - catalog — re-look-up the agent's short name (picks up a catalog entry that now
points elsewhere).
A failed @package update is a no-op — the previously installed agent stays in place.
For a path or catalog agent with no upstream change, @package update is a harmless
refresh. If the recorded source is no longer configured on this host, the agent keeps
working but @package update fails with an actionable error (re-add the source, or
uninstall).
@package source #
@package source list # show sources and the current resolution order
@package source order <name>... # set the resolution order (subset allowed; rest appended)
@package source add path <name> [--baseDir <path>]
@package source add catalog <name> --catalog <path>
@package source add feed <name> --registry <url> [--scope <scope>]...
@package source remove <name> [--force]
@package source listshows the configured sources and the order they are probed in.@package source ordersets the priority. You can list a subset; any sources you omit
are appended after the ones you name. Entries that name an unknown or removed source
are ignored with a warning rather than erroring.@package source addregisters a new source.addvalidates the input: names must be
unique, afeedregistry must be a well-formed URL, and acatalogfile must be
readable JSON.@package source removedeletes a source. If installed agents still reference it,
removal warns and aborts unless you pass--force. With--force, those agents remain
loadable but cannot be@package updated until the source is added back.
A source that is configured but not listed in the order is still usable via
--source; it just is not probed automatically during ordered resolution.
Source definitions and the resolution order persist to the instance configuration, so
they survive a restart.
Host limitations #
- Remote hosts can disable path resolution with
excludePathSources. Thepath
source still appears in@package source listand remains persisted, but it is
skipped during resolution so a user path is not interpreted against the remote
server's filesystem. - Indexing-service discovery is currently a startup snapshot. Installed feed/path
agents that declare indexing services keep loading as agents, but their indexing
services are not registered dynamically on install, update, or uninstall until the
host restarts.
Uninstalling #
@package uninstall <name>
Removes the installed agent record and unloads the agent. (For feed installs this does
not prune the downloaded package from disk; that is disk-only cruft with no runtime
effect.)