Involute Technologies Routedge

On-device inference routing

The traffic controller for physical AI.

A drop-in OpenAI-compatible proxy that runs on the vehicle. It reads temperature, memory, load and link state on every request, then sends it to an on-device model, to the cloud, or to a safe default — and signs that decision into a record. Change one base URL; nothing else moves.

One base URL 6,226 requests, 0 failed 0 audit contradictions Runs with no link
Built for Unmanned aircraft Underwater vehicles Ground robots Vehicle-mounted compute Industrial gateways

The gap

The field is not the bench

On a bench, inference is fast, cool and connected. On a vehicle it is none of the three, and that gap is where the failures live.

01

The link is a variable

A satellite backhaul, an acoustic modem, a tether, a congested mesh. Calling a cloud model is an assumption that stops holding the moment the platform goes where it was built to go.

02

The hardware throttles

Pull the cooling on a loaded board and it starts slowing itself down inside four minutes. A stock local model server quietly used up all 8 GB of memory in half an hour. Both measured; neither showed up on the desk.

03

Nothing leaves a record

After an incident, the question is what the system decided and under what conditions. Without a record written at the time, the answer is reconstruction from memory.

Capabilities

Four jobs, one process on the device

Adoption is a base URL, not a rewrite. Every ✓ below is a result from a run on real hardware.

01 — ROUTE

Route on what the hardware is actually doing

Every request is weighed against the live state of the device and how each model option is performing, then sent to the best one available — on-device first, or cloud first, whichever the mission calls for.

  • Watches each model option in the background, and stops sending work to one that has started failing
  • Anything answered on the device costs no API spend and no uplink bandwidth
  • MeasuredOver a 20-minute run the on-device model handled 100% of requests while it was healthy — then shed 99.997% of them to the cloud once something else started competing for the processor, with no flip-flopping between the two
02 — TEST

Break it on the bench, on purpose

Put the failure conditions in deliberately, against whatever inference you already run. We point it at our own hardware — which is how we caught our own record noting conditions a moment too late. Found, fixed and re-verified on the board.

  • Overheating, memory pressure, processor saturation, responses that crawl
  • Intermittent and completely lost connectivity; cloud services that fail or degrade
  • Every scenario is versioned and repeatable, so a result can be re-run later
  • MeasuredFour separate runs with the cooling pulled, each taken to overheating, produced the same answer every time — no missed events, no false alarms
03 — GOVERN

Make degraded behavior a written rule

Declare what the platform does under named conditions — which model answers, when to hold for a human, when to fall back to a safe default — as configuration, reviewed like any other requirement.

  • Rules read measured conditions only — temperature, memory, load, link, latency, urgency — never the model's own confidence, so the same conditions always give the same decision
  • A rule set is checked before it loads; a malformed one is refused rather than guessed at
  • MeasuredLink genuinely cut, with an urgent request arriving at the exact instant of every cut: the rule held all 38 of them. Not one slipped through to the on-device model
  • MeasuredWith the cooling pulled, the temperature rule raised the alarm 42–56 seconds before the hardware began slowing itself down — repeatably, across four runs
04 — RECORD

Record every decision, replay any incident

Every decision joins a signed, tamper-evident chain on the device that made it, and any one of them can be pulled back out and run again against the rules you have now — or the ones you are considering.

  • Captures what was decided, which rule decided it, and the conditions at that moment
  • Verifiable later without the device present, and mirrored to a store you control, so its integrity does not rest on the device alone
  • MeasuredAn independent re-check of every entry against the rules found zero contradictions across roughly 900 of them, including an hour with the link cut four separate times. A full 8-hour shift — 6,226 entries — verified in under a second
  • MeasuredRe-running 28 recorded decisions on the same hardware reproduced all 28. That covers the decision itself; the replay does not re-run the AI model

Use cases

Three shapes of one problem

Compute that has to keep answering when the uplink will not — and account for what it did afterwards.

SUBSEA

ROV and UUV inspection

ProblemA tether or acoustic modem carries kilobits while a hull survey produces continuous imagery. For most of the dive, the cloud is unreachable.

SolutionRequests are answered on the vehicle by default; the cloud is used only in the windows where the rules and the measured link allow it. The vehicle surfaces with a signed record of what answered what.

On the benchAn hour of real link cuts: 840 requests, none failed, every urgent request held through the outage, and the whole record verified afterwards.

AIRBORNE

Long-endurance UAS

ProblemSatellite backhaul is metered and shared. A sun-loaded avionics bay throttles the compute exactly when tasking gets heavy.

SolutionRoutine work stays on the aircraft. Escalation is gated on priority, measured link latency and the temperature the board is actually running at — so the expensive path is spent on requests that earn it.

On the benchCooling pulled under load: the temperature rule raised the alarm 42–56 seconds before the hardware began slowing itself down, repeatably across four runs.

GROUND

Warehouse and ground robotics

ProblemA fleet on shared Wi-Fi hits latency spikes and dead zones as it moves. An assistant that stalls mid-aisle is a stopped robot and a ticket.

SolutionLocal inference answers through the spike; the cloud is used when the link is genuinely healthy. Latency and spend are logged per robot, so fleet cost is a number rather than an estimate.

On the benchAn 8-hour shift: 6,226 requests, zero failures, memory flat to within 1 MB, and no thermal throttling.

Integration

One base URL. No rewrite.

Routedge accepts the same requests your client library already sends. Point the client at it and leave the rest alone — body, streaming and response shape are unchanged.

Your application · Pythonone line changes

# before — the client talks straight to a cloud endpoint
client = OpenAI(base_url="https://api.provider.example/v1")

# after — same client, now routed on the device
client = OpenAI(base_url="http://localhost:8000/v1")

# every call below is untouched
msgs = [{"role": "user", "content": "Describe this frame."}]
resp = client.chat.completions.create(messages=msgs)

Anything that speaks HTTP · curlsame API

# the endpoint your stack already targets, on the device
curl http://localhost:8000/v1/chat/completions \
  -H "content-type: application/json" \
  -d '{"messages": [{"role": "user", "content": "..."}],
       "stream": true}'

# no link, no cloud key, no change: the same call is
# answered by the on-device model instead.
Which model answeredEvery response says which model answered it, and whether that was a fallback.
What it cost and tookLatency and spend come back per request, and accumulate locally.
Which rule firedIf a written rule decided the request rather than the usual routing, the response says so.

Architecture

How it fits together

One on-device process on the advisory path between your application and its models. Everything else attaches to that single point.

Fig. 1 — Runtime topologyOne process, on the platform

Your platform Application Autonomy stack, mission software, operator tooling — calling a model exactly as it already does.
On the device Routedge Reads the conditions, applies the written rules, routes or steps down, signs the decision.
  • Rule evaluation
  • Route selection and fallback
  • Signed decision record
Primary Local model No link required, no API spend.
When the link permits Cloud model Reached only when the rules and the measured link both allow it.
In — device stateMeasured, not inferred.
In — rule setReviewed configuration; no code change to alter it.
Out — signed recordAppend-only and tamper-evident, signed on the device.

Fig. 2 — LifecycleBench to field and back

01 · BENCHTestInject field conditions. Classify each failure.
02 · BENCHWrite the rulesState the behavior per condition. Review it.
03 · FIELDRouteRules govern every request on the device.
04 · FIELDRecordEach decision is signed into the chain as it happens.
05 · BENCHReplayReconstruct an incident. Re-run it against any rule set.
05 → 01Replayed incidents become the next cycle's scenarios
BenchOn the device

Platforms

On the device, alongside what you already built

A small Linux service on the platform's own compute. The cloud is an upgrade, not a dependency.

ComputeARM and x86 Linux, from single-board computers upward
Measured onAn 8 GB Raspberry Pi 5 — the whole system, end to end
InterfaceOpenAI-compatible API, streaming included
ModelsAny local or remote OpenAI-compatible endpoint, language or vision
ConnectivityFully offline operation; cloud is optional and rule-gated
DeploymentNative service or container; configuration is plain files

What Routedge is not, and what the numbers cover

Routedge governs the AI advisory path — which model answers, what the platform does as conditions degrade, and what record that leaves. It is not a certified safety component and is not built to sit in a control loop that drives hardware directly. Where a request returns slowly or not at all, the application around it stays responsible for behaving correctly. Its job is to make degradation predictable and to leave evidence of it — not to promise it will not happen.

Every measured figure here comes from bench runs on one 8 GB Raspberry Pi 5; nothing is claimed for other hardware until it has been run there. Those figures are for a link that drops cleanly. A link that goes quiet instead of refusing is the harder case: it now fails fast rather than hanging, and an automated test holds the request through it — but that one has not been re-run on the Pi. Better you hear it from us than find it on the second call.

Contact

Request a briefing

In active development, focused on defense and dual-use autonomy. If you are putting inference on hardware that has to keep working as conditions get worse, tell us what you are building.

Program and platform teamsEvaluating on-device inference for an unmanned system.
Integrators and primesNeeding a defensible answer to "what does it do when the link drops?"
Test and evaluationNeeding repeatable degradation scenarios and a record that holds up.

Delivered directly to Involute Technologies. Nothing is stored by this page. Or write to contact@involutetech.com.