Skip documentation navigation
Architecture & Wire Protocol
Docs/Reference/Architecture & Wire Protocol

Architecture & Wire Protocol

avm isolates plugins as standalone processes communicating over standard input/output using a strongly typed JSON wire protocol.

Typed Wire Protocol Commands

Queries (Read)
# Metadata:
avm-plugin-<name> manifest
# Versions:
avm-plugin-<name> versions
# Env exports:
avm-plugin-<name> env-vars <version>
Lifecycle (Write)
# Install:
avm-plugin-<name> install <version>
# Uninstall:
avm-plugin-<name> uninstall <version>
# Executable:
avm-plugin-<name> executable-path <version>

Discovery and plugin development

All native providers use the same protocol: bundled executables beside avm-bin, then user-installed plugins, then the permanent legacy asdf adapter. No provider implementation is linked into the CLI.

Additional query verbs are is-installed and installed-versions. Optional resolve and install-locked verbs provide exact download metadata and checksum-verified installs. Native plugins can also expose custom commands, such as android avd.

Run avm create kotlin for template instructions. Read the plugin author guide for every wire verb, the ToolProvider contract, timeouts and release packaging.