AI agents
go physical.
Elvi is a general-purpose robotic interface that lets AI agents learn and operate unfamiliar physical devices.
01const device = await elvi.connect()0203// drive it step by step04await device.when("controller offline") // the alert05await device.run("turn it off and on again")0607// or just give it the goal08await device.learn("keep it online")09await device.run() // finds the fault, fixes it1011elvi.mcp.add(device.skill()) // your agent learns tooHow it works
SEE
The overhead camera watches the device panel or a touchscreen like a human operator sitting in front of it.
UNDERSTAND
A vision model reads the unfamiliar interface: text, icons, physical controls, without requiring any native APIs.
ACT
Elvi defines universal primitives: tap, swipe, type, press. Called from the SDK, executed on the physical interface itself.
VERIFY + LEARN
The camera confirms the new state. The workflow can be saved as a semantic skill for the agent to learn it and repeat.
Use cases
Phones, kiosks, terminals, physical buttons: if a person can use it, Elvi can operate it.
Agent hands on a real phone
Give an agent hands on a real phone: banking, messengers, anything that exists only behind a touchscreen on your desk.
QA on real devices
Test the actual app on the actual device: push notifications, camera flows, flaky animations. The things emulators lie about.
RPA where software can’t reach
Automate what has no API at all: no jailbreak, no USB debugging, no cooperation from the vendor, no integration to wait for.
Beyond phones: kiosks & POS
Kiosks, POS terminals, payment hardware: sealed screens you cannot instrument and vendors who will never open them.
Unattended watch and recover
It watches the panel around the clock and acts when something goes wrong: clears the alert, restarts the flow, sends the video.
Machines with no API
Lab analyzers, industrial panels, terminals whose vendor is long gone: no ports, no docs, no integration path. Now there is one.
Write it. Teach it. Or hand it over.
Developer surface: a Playwright-like SDK. Selectors, waits, assertions. Executed against the physical layer.
01await device.get("Power").hold()02await device.expect("steady green")01await device.learn("keep it online")02await device.run() // the night shift01elvi.mcp.serve(device.skills())02// hands for any agentWatch it learn.
One incident, start to finish: noticed, learned, fixed, kept.
01$ elvi connect // device found · camera on02await device.when("controller offline") // the event listener03! ALERT · controller offline · 02:1404await device.learn("keep it online") // the goal, not the steps05exploring the panel · mapping: 4 screens · 9 controls06path found · saved as skill power-cycle07await device.run()08PRESS Power · 2.0 s · verify: steady green ✓ camera09video saved · run-0042.mp410elvi.mcp.add(device.skill()) // hands for your agent11! ALERT · controller offline · 04:4112skill hit · fixed in 4 s · no exploration13$ Every task it solves, it keeps.
Skills, not scripts: learned once, they survive UI updates and transfer to the next device.
01elvi.mcp.serve(device.skills())02// Claude, GPT, any agent: hands as toolsElvi is the MCP server for the physical world.
npm install elviRUNS ON THE SIMULATOR TODAY · ON YOUR RIG WHEN IT SHIPSBuilt for whatever your business runs on.
Analyzers and machine panels with no ports.
Racks and panels that need hands on site.
Dashboards, control panels, physical buttons.
Sealed terminals, no instrumentation.
Test the app your device farm can’t run.
Stories and DMs the API won’t post.
The first Elvi, on a desk.
An overhead camera, a stylus on a gantry, any device on the mat. Built to prove one thing: an agent can operate hardware it has never seen.
Get Elvi on your bench.
Batch 01 is small. It goes to teams with a device that nothing else can automate. Leave your address and you will hear from us before it ships.
OR WRITE TO HELLO@ELVI.ENGINEERING