Adom Bridge
Public Made by Adomby adom
Adom Bridge unleashes your AI onto your full PC: full power, full safety. The AI breaks out of the container it runs in and onto your real machine, managing and running your entire laptop as you: launch apps, move files, drive any window, control KiCad, Fusion 360 or your real signed-in browser. Works with any AI, cloud or local (Claude Desktop, Claude Code, Codex), no Hydrogen required. Bridge and its bridges are an operating system for AI, with managed Node and Python runtimes, and a human-onl
web-control /command 413s any staged file over ~2 MB: real .step 3D models cannot be attached (write_file base64 body exceeds the cap)
web-control /command 413s any staged file over ~2 MB, so no real .step 3D model can be attached
ab 2.0.65, web-control on 127.0.0.1:24680. Distinct from #34 (footprint-open plugin, fixed) and #89 (/status LNA, resolved). The KiCad "Open in Footprint Editor" Quick Action now reaches the bridge and installs the footprint, but attaching the 3D body fails: staging a multi-MB .step through write_file exceeds the /command request-body cap and comes back 413 Payload Too Large.
Repro (a real user, machine k-zephyrus, real Firefox)
Part: adom/ads1220irvar. The footprint action stages two files onto the PC via write_file, then calls kicad_install_footprint:
| staged file | raw bytes | base64 body (~+33%) | result |
|---|---|---|---|
ads1220irvar.kicad_mod |
8,162 | ~11 KB | OK |
ads1220irvar.step |
1,930,666 | ~2.57 MB | 413 Payload Too Large |
Browser console on the failing click:
XHR POST http://127.0.0.1:24680/command [HTTP/1.1 413 Payload Too Large 7ms]
The symbol button on the same part works because a .kicad_sym is a few KB. That size split (KB symbol succeeds, ~2.5 MB model 413s) is the whole "symbol works, footprint fails" asymmetry we chased. It is not version, LNA, or CORS related; the bridge is 2.0.65 and reachable.
Root cause
The /command HTTP body limit is under ~2.5 MB, and write_file carries file bytes as base64 inside the JSON command body. A base64-in-JSON body is a poor transport for MB-scale binaries, and 3D models routinely run 1-10 MB, so effectively no genuine .step can be staged this way.
Two asks (either unblocks the feature; the second is the durable one)
- Raise the
/commandbody cap to comfortably hold a real model (a base64.stepup to, say, 24-32 MB). Quick, but it still holds the whole body in memory. - Add a chunked or streamed large-file transfer verb (offset-appended writes, or a dedicated upload path) so
write_fileof a big binary does not depend on a single oversized JSON body. This is the transport the feature wants.
Secondary: the 413 body is not JSON
ab's 413 (and other error pages) returns a plain-text body. A cross-origin client that does response.json() gets a parse error, so a clean 413 surfaced to the user as SyntaxError: JSON.parse ... / a "NetworkError", which is what made this look like a mystery instead of "file too large". A JSON error body would let clients react precisely, for example:
{ "success": false, "errorCode": "payload_too_large", "limit": 2097152 }
What is already handled on the wiki side (so this is contained, not urgent-broken)
The wiki client now degrades gracefully: if staging the model fails for any reason it drops the model and opens the Footprint Editor anyway, reporting "3D model skipped (file too large for Adom Bridge); opening the footprint without it". It also tolerates a non-JSON error body so the status reads as 413 rather than a JSON.parse error. So users get a working footprint today; the missing piece is attaching the 3D body, which is blocked here on the /command cap.
Happy to test any build live against adom/ads1220irvar (the 1.93 MB .step is a good fixture) once a raised cap or a chunked verb lands. If you tell me the exact current cap I will also tune the client's pre-flight so it never sends a body you will reject.