Error reference

HTTP adapter requires url configuration

2 min read

HttpAdapter's constructor validates config.url before building a client, so this fires at startup rather than on the first dispatch.

What causes it

You selected HTTP mode without giving it an endpoint:

devpilot bridge connect --mode http          # no --http-url

Or a config file sets the mode but omits the URL, or supplies it under a different key than the adapter reads.

How to fix it

devpilot bridge connect --mode http --http-url http://127.0.0.1:3001

Point it at whatever speaks the bridge protocol — the ao daemon, your own service, anything honouring the published wire contract.

Why the check is in the constructor

Validating at construction rather than at first use is a deliberate choice, and it is the same instinct as guards that throw rather than return.

A dispatch-time check means the process starts, reports healthy, registers a machine, and appears to be working. The failure arrives later, once a real issue has been assigned — at which point the symptom is a dispatch that went nowhere, which is a far worse thing to debug than a process that refused to start.

Configuration errors should be startup errors. The window between "started" and "first used" is where a misconfigured service does its most confusing damage.

A related adapter has the same shape: claude-session requires sessionApiUrl unless a transport is injected directly, and validates it in the same place for the same reason.

Verifying the endpoint before you rely on it

Speaking HTTP is not the same as speaking the bridge protocol. A service can accept the connection and return 200 to something entirely different from what the adapter expects.

curl -s -X POST http://127.0.0.1:3001/dispatch -d '{}' -i | head -1

A 404 there means the endpoint exists but the paths do not match — which is the failure mode that consumed real time when the ao daemon changed its API. The adapter called /dispatch and /jobs/:id/status; the daemon had moved to POST /api/v1/sessions. Both sides were healthy and neither could talk to the other.

Check the shapes, not just the connection.