An extension is a Python project with a pyproject.toml. golem extension add copies it into ~/.golem/extensions/<name>/, creates a venv with Python 3.12, and runs uv sync. Then golem serve starts the console script.
pyproject.toml
Golem requires name, version, and [project.scripts]. name is lowercase letters, digits, and hyphens (max 64 characters). That name is the install directory and the golem extension remove argument.
If a script has the same name as the project, Golem runs that. If there is exactly one script, Golem runs that. Otherwise it errors.
[project]
name = "golem-echo"
version = "0.1.0"
description = "Example Golem extension"
requires-python = ">=3.10"
dependencies = [
"golem-agent-sdk>=0.1.1",
]
[project.scripts]
golem-echo = "golem_echo:main"
description shows up in Settings → Extensions. Depend on golem-agent-sdk
unless you speak the protocol
yourself.
Install for development
From the extension directory, with Golem already installed:
golem extension add .
golem serve
Use --force to replace an existing install of the same name. A GitHub URL or zip works the same way; see Extensions
.