Skip to main content

Golem SDK

Python SDK for creating Golem extensions. This includes adding new channels, providers, and other long-running processes.

Installation

This package is available on PyPI:

pip install golem-agent-sdk

Usage

Import as golem. Golem injects GOLEM_URL and GOLEM_TOKEN into the process. The wire protocol lives in Golem: docs/extensions.md.

The smallest extension registers, prints a line, and stays alive until it is stopped:

from golem import Extension


def hello(client, stop):
    print("hello world")
    stop.wait()


Extension.from_env("echo").task(hello).run()

Provider Extensions

A provider is a model backend. Golem calls your process for chat, structured output, and/or embeddings. Implement at least one of those methods; run() binds a loopback callback, registers, and heartbeats.

from golem import Extension, Message, Provider


class Echo(Provider):
    def chat(self, model, messages, tools=None) -> Message:
        return Message(role="assistant", content=messages[-1].content)


Extension.from_env("golem-echo").provider("echo", Echo()).run()

The id passed to provider() is the name used in Golem conf (default_model.provider or memory.embedding.provider). Override chat_structured or embed to advertise those routes. An embeddings-only class can omit chat:

class Embed(Provider):
    def embed(self, model, texts):
        return [[0.1] for _ in texts]


Extension.from_env("golem-embed").provider("local-embed", Embed()).run()

Channel Extensions

A channel feeds messages into Golem (Telegram, CLI, and so on). task() runs your loop; client.send() posts a turn and returns the assistant reply. capability() advertises the channel.

from golem import Extension


def cli(client, stop):
    while not stop.is_set():
        line = input("you: ").strip()
        if not line:
            continue
        print(client.send("local", "cli", line))


(
    Extension.from_env("golem-cli")
    .capability({"kind": "channel", "id": "cli"})
    .task(cli)
    .run()
)

post_turn and stream_turn expose the same flow as SSE events (log, done, error).

Packaging Extensions

Ship the extension as a Python package. Golem takes the name and description from pyproject.toml, then runs the first [project.scripts] entry whose name matches the package:

[project]
name = "golem-openrouter"
description = "OpenRouter provider for Golem"

[project.scripts]
golem-openrouter = "golem_openrouter:main"

Development

Using uv is strongly recommended:

uv sync --dev
uv run pytest

Release files for golem-agent-sdk 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for golem-agent-sdk 0.1.1
File Size Uploaded
golem_agent_sdk-0.1.1.tar.gz 9.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for golem-agent-sdk 0.1.1
File Interpreter ABI Platform
golem_agent_sdk-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 20.9 kB

Release files / golem_agent_sdk-0.1.1.tar.gz

Download URL golem_agent_sdk-0.1.1.tar.gz
Size 9.3 kB
Tags Source
SHA-256 checksum
How to use checksums
f8db9a78fd11df2645d4e1d5b4aa113b09611b791c80f3aa84e1202180de3872
BLAKE2b-256 checksum
How to use checksums
c2aa297c1d34a233c1e15325f96bf7a4a7e8c05e7b204a524374fa9e0b128dfd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / golem_agent_sdk-0.1.1-py3-none-any.whl

Download URL golem_agent_sdk-0.1.1-py3-none-any.whl
Size 11.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
80d025dc457ee0ffcd77ae71bb6512975ba84f322e32cd448565f54661d24385
BLAKE2b-256 checksum
How to use checksums
e694e57e55e8c851b7c8c08db2876e808dc116e3c0b0bb9ad290175280dfaa47
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

0.1.3

2 release files

0.1.2

2 release files

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page