Skip to content
Agent Registry

Agent Registry

How agents register themselves and get resolved by stable ID.

Registration

Every concrete Agent subclass registers in django_ai_sdk.agents.registry on definition via __init_subclass__. The two public mechanisms are just ways to ensure the module is imported:

Settings-based (recommended):

# settings.py
AI_SDK_AGENTS = ["myapp.agents.PirateAgent"]

Decorator:

from django_ai_sdk.agents import auto_register

@auto_register
class PirateAgent(Agent):
    ...

Both work together. Skipped classes: abstract shared bases (abstract = True) and self-registering subclasses (e.g. runtime agents). A class is registered only once.

Stable IDs

Each agent receives a deterministic UUID5 derived from module.ClassName, so IDs never change between restarts or deployments:

str(uuid.uuid5(NAMESPACE, "myapp.agents.PirateAgent"))

Registry API

from django_ai_sdk.agents.registry import registry

agent = registry.get(agent_id)          # by stable UUID
for agent_id in registry.ids():         # all registered agent IDs
    ...

registry.setup() instantiates registered classes. It is populated when agent modules are imported (via AI_SDK_AGENTS, @auto_register, or your own ready() hook).

AgentService

Prefer AgentService over the raw registry: it also resolves runtime (DB-configured) agents:

from django_ai_sdk.agents.services import AgentService

agent = await AgentService.get(agent_id)

Next: Stream and Run, the adapter hooks’ return values.