**Handling DevTools Layer Noise When Server Unavailable**

DevTools Layer: Should It Be Silent When Server Unavailable?

We're building a CLI tool that exports data from Notion databases, validates it with Effect Schema, transforms it, and commits the results to GitHub. The pipeline uses Effect extensively for:
-Streaming large datasets from Notion API
-Schema validation and transformation
-File operations and git commands
-Telemetry with Effect spans for debugging the multi-step pipeline

When running(our command) ex. uzu primedata update with LOG_LEVEL=debug or LOG_LEVEL=trace without the DevTools server running, we see hundreds of SocketErrors in the logs. This makes it difficult to debug actual application issues.
Current Behavior:

-DevTools layer is resilient - doesn't crash when server unavailable
- Very noisy on debug/trace levels - connection retry attempts flood the logs

Is this the intended behavior, or should the DevTools layer fail more silently when no server is present?
We've tried implementing an optional layer:
const OptionalDevTools = Effect.gen(function* () {
  const isAvailable = yield* Effect.tryPromise({
    try: () => fetch("http://localhost:34437").then(() => true),
    catch: () => false,
  }).pipe(Effect.orElseSucceed(() => false));

  return isAvailable 
    ? DevTools.layer("ws://localhost:34437") 
    : Layer.empty;
}).pipe(Layer.unwrapEffect);

This eliminates the noise but prevents connection if the server starts mid-execution
Additional Questions:

Should we handle this at application level with optional services, or should DevTools itself provide graceful degradation?
When DevTools server starts mid-execution, does it catch up on previously emitted spans/traces, or are those lost?

Thanks for any guidance on whether this is expected behavior or if we should implement custom handling!
Was this page helpful?