{"record":{"id":"6f007e1ed6060504","repo":"dagger/dagger","slug":"no-runtime-implemented-6f007e","errorCode":null,"errorMessage":"no runtime implemented","messagePattern":"no runtime implemented","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"core/module.go","lineNumber":2173,"sourceCode":"\t\t\tifaceID, err := ResultIDInput(updatedIface)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"patched interface typedef id: %w\", err)\n\t\t\t}\n\t\t\tif err := dag.Select(ctx, iface, &mod.InterfaceDefs[i], dagql.Selector{\n\t\t\t\tField: \"__withInterfaceTypeDef\",\n\t\t\t\tArgs:  []dagql.NamedInput{{Name: \"interfaceTypeDef\", Value: ifaceID}},\n\t\t\t}); err != nil {\n\t\t\t\treturn fmt.Errorf(\"patch interface typedef enum defaults: %w\", err)\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (mod *Module) LoadRuntime(ctx context.Context) (ModuleRuntime, error) {\n\truntimeImpl, ok := mod.Source.Value.Self().SDKImpl.AsRuntime()\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"no runtime implemented\")\n\t}\n\n\tif !mod.Source.Valid {\n\t\treturn nil, fmt.Errorf(\"no source\")\n\t}\n\n\truntime, err := runtimeImpl.Runtime(ctx, mod.Deps, mod.Source.Value)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to load runtime: %w\", err)\n\t}\n\n\treturn runtime, nil\n}\n\n/*\nMod is a module in loaded into the server's DAG of modules; it's the vertex type of the DAG.\nIt's an interface so we can abstract over user modules and core and treat them the same.\n*/","sourceCodeStart":2155,"sourceCodeEnd":2191,"githubUrl":"https://github.com/dagger/dagger/blob/82ba2681dbe30d3547a1dc50ea495900ab5b6047/core/module.go#L2155-L2191","documentation":"Module.LoadRuntime requires the module's SDK to implement the ModuleRuntime interface. AsRuntime() returns false when the SDK config (e.g. a config-only or static SDK) does not provide a runtime implementation, so Dagger cannot instantiate code execution for this module and throws 'no runtime implemented'.","triggerScenarios":"Calling Module.LoadRuntime (directly or via module loading internals) on a module whose ModuleSource resolves to an SDKImpl that does not implement Runtime — e.g. an SDK registered without a runtime, or a placeholder/sdk-config-only SDKImpl.","commonSituations":"Developing a custom Dagger SDK that only implements part of the ModuleRuntime interface; using an SDK kind the engine does not recognize as runnable; loading a module whose SDK field points to an unsupported or stub SDK.","solutions":["Verify the module's dagger.json sdk field names a supported SDK (go, python, typescript, etc.) that implements ModuleRuntime","If writing a custom SDK, implement the Runtime(ctx, deps, source) method so AsRuntime() succeeds","Re-generate or update the module so SDKImpl is populated with a runtime-capable implementation"],"exampleFix":"// before: custom SDK missing runtime\nfunc (s *mySDK) AsRuntime() (ModuleRuntime, bool) { return nil, false }\n// after\nfunc (s *mySDK) AsRuntime() (ModuleRuntime, bool) { return s, true }\nfunc (s *mySDK) Runtime(ctx context.Context, deps ... , src *ModuleSource) (ModuleRuntime, error) { ... }","handlingStrategy":"validation","validationCode":"if src, err := mod.GetSource(); err == nil && src.SDKConfig != nil { /* SDK present */ }\n// only proceed to LoadRuntime when the module's dagger.json sdk field is set and supported","typeGuard":"rt, ok := mod.Source.Value.Self().SDKImpl.AsRuntime()\nif !ok { return fmt.Errorf(\"SDK does not implement a runtime\") }","tryCatchPattern":"rt, err := mod.LoadRuntime(ctx)\nif err != nil {\n    if strings.Contains(err.Error(), \"no runtime implemented\") {\n        // fall back to static/config-only handling\n    }\n    return err\n}","preventionTips":["Always set a supported sdk entry in dagger.json","Implement Runtime() when authoring custom SDKs","Guard LoadRuntime calls with AsRuntime() when the SDK kind is dynamic"],"tags":["dagger","sdk","module-runtime","go"],"backgroundTag":"sdk-runtime-not-implemented","analyzedSha":"82ba2681dbe30d3547a1dc50ea495900ab5b6047","analyzedAt":"2026-09-05T07:21:37.930Z","contentChangedAt":"2026-09-05T07:21:37.930Z","schemaVersion":2},"datasetVersion":"2026-09-12T12:17:11.808Z"}