dapr/dapr · error
couldn't find conversation %s/%s
Error message
couldn't find conversation %s/%s
What it means
Thrown by the conversation component registry when Registry.Create cannot find a conversation factory for the requested name/version. Lookup is case-insensitive on 'name/version', with a fallback to the bare name when the version is an initial version ('', 'v0', 'v1'). The runtime therefore has no conversation component registered under that type+version.
Source
Thrown at pkg/components/conversation/registry.go:55
func NewRegistry() *Registry {
return &Registry{
Logger: logger.NewLogger("dapr.conversation.registry"),
conversations: make(map[string]func(logger.Logger) conversation.Conversation),
}
}
// RegisterComponent adds a new conversation to the registry.
func (s *Registry) RegisterComponent(componentFactory func(logger.Logger) conversation.Conversation, names ...string) {
for _, name := range names {
s.conversations[createFullName(name)] = componentFactory
}
}
func (s *Registry) Create(name, version, logName string) (conversation.Conversation, error) {
if method, ok := s.getConversation(name, version, logName); ok {
return method(), nil
}
return nil, fmt.Errorf("couldn't find conversation %s/%s", name, version)
}
func (s *Registry) getConversation(name, version, logName string) (func() conversation.Conversation, bool) {
name = strings.ToLower(name)
version = strings.ToLower(version)
stateStoreFn, ok := s.conversations[name+"/"+version]
if ok {
return s.wrapFn(stateStoreFn, logName), true
}
if components.IsInitialVersion(version) {
stateStoreFn, ok = s.conversations[name]
if ok {
return s.wrapFn(stateStoreFn, logName), true
}
}
return nil, falseView on GitHub (pinned to 74ad417027)
Solutions
- Check spec.type/spec.version in the conversation component YAML against the components reference for your runtime version.
- List registered components with 'dapr components' / 'dapr components -k' and correct the type or version to a registered entry.
- Upgrade the Dapr runtime to the version whose conversation components the manifest targets.
- In custom builds, ensure the conversation contrib package is blank-imported so RegisterComponent ran.
Example fix
# before (conversation.yaml) spec: type: conversation.ech0 version: v1 # after — use a name listed by `dapr components` for your runtime spec: type: conversation.echo version: v1
Defensive patterns
Strategy: validation
Validate before calling
// validate conversation component type+version before Create
func conversationSupported(supported map[string][]string, ctype, version string) bool {
vers, ok := supported[strings.ToLower(ctype)] // names from `dapr components` for your runtime
if !ok {
return false
}
v := strings.ToLower(version)
for _, reg := range vers {
if reg == v || (reg == "v1" && (v == "" || v == "v0")) {
return true
}
}
return false
} Try / catch
conv, err := registry.Create(name, version, logName)
if err != nil {
// config bug, not transient — abort startup with actionable context
return fmt.Errorf("conversation component %s/%s not registered: %w", name, version, err)
} Prevention
- Conversation is an alpha API — pin manifests and runtime to the same release line and re-verify after upgrades
- Check `dapr components` output for conversation entries before deploying a manifest
- Add a deploy-time dry-run that resolves every component spec against the registry
When it happens
Trigger: Creating a conversation component whose type string does not match a registered one: typo in spec.type for a conversation.yaml, a version not present in this runtime's contrib set, or the conversation contrib package not imported into a custom build.
Common situations: Using the alpha Conversational AI building block with a manifest copied from a newer Dapr release than the running runtime; misspelled component name; self-hosted install where the component is not included; CI deploying manifests validated against a different runtime version.
Related errors
- couldn't find configuration store %s/%s
- couldn't find crypto provider %s/%s
- couldn't find lock store %s/%s
- couldn't find message bus %s/%s
- couldn't find secret store %s/%s
AI-assisted analysis of dapr/dapr@74ad417027 (2026-08-16).
Data as JSON: /api/errors/63e89c84995cffa6.
Report an issue: GitHub.