Give your agent a virtual machine.
A room of its own, with only the doors you open. It keeps working while the agent is away, keeps its files overnight, can be thrown away and remade in seconds. One of them, or three.
Smol Machines is the room: a hardware-isolated Linux microVM that boots in about four seconds.Monid is the one key your agent opens it with.Then ask for a machine. The API calls are free; the machine meters itself by the minute while it exists, so have the agent delete it when the job is done.
Watch the run.
Thirty-four seconds. Five things a laptop cannot give an agent, each one done on a real machine behind this page.
A room with a locked door.
Your laptop has your keys, your files and your accounts on it. An agent's code is something you did not write, and it can be talked into anything. So it gets a room: one call boots a Linux microVM in 4.3 seconds, and the door opens only to the hosts you list. From inside, example.com does not even resolve. api.monid.ai, which was on the list, answers 200.
Two shapes to know: /machines requires resources and network in the body (the upstream defaults are 4 vCPU / 8 GB and an open door, so say what you want), and the allowlist is yours to set. Nothing is locked by default.
POST /machines · 201 · 4.3 s · run 01M3MFGQ4GEZ5YDPS3T7ATBFT6image python:3.12-alpine · resources 1 vCPU, 512 MB, 1 GB · network allowCidrs: pypi.org, files.pythonhosted.org, api.monid.ai · ttl 30 min
the allowlist is a parameter you set; the upstream default is open
runs 01M3MFGVNV5ZX2VSYB8N4ZHSK8 · 01M3MFH3ZQCTWT9PBJ11VS9QGV · measured 2026-09-28
It keeps working while the agent is away.
A tool call is cut off after seconds. A laptop goes to sleep. This job ran for 45 seconds on /exec/async; the call handed it off in 0.76 seconds and the agent went and did eleven other things, including stopping and starting a second machine and reading its files back. It came back at 90 seconds and the result was waiting, nine timestamps and a finished.
Synchronous /exec is capped near 25 seconds because the answer rides on your own request. Anything longer goes to /exec/async, which returns a run id; poll GET /v1/runs/{id} when you want it, and read providerResponse.httpStatus as well as status: in our cold test one async fire came back COMPLETED with a 500 inside and a null output, and the same command succeeded on retry. Files under /workspace survive stop and start; /tmp does not. Stopping a machine ends whatever is running on it, which is why the file test happens on a second one.
exec/async run 01M3MFH8PB6G9DMK3Z0PS0S7SZ · durationMs 45048 · collected at 90.3 s
Break it. Throw it away. Make three.
We deleted the machine's own json module. Python stopped importing it. That would have ended a day on a laptop; here the machine was deleted and a fresh one answered json ok 3.8 seconds later. Then three identical machines were created in one go, 4.4 seconds wall, and each reported its own hostname, the same image and the same size.
Every machine you make meters itself until you delete it, stopped or not (a stopped machine still bills its disk). Set a ttlSeconds as a safety net and /delete when the job is done. The agent in this run deleted all seven.
$ rm -rf /usr/local/lib/python3.12/json && python3 -c "import json"ModuleNotFoundError: No module named 'json'
/delete · /machines · json ok {"fresh": true} · new machine in 3.8 s
three POST /machines at 69.2 s, all 201 by 73.6 s · runs 01M3MFK929K… · K92D6… · K92ZJ…
The calls are free.
The machine meters itself.
Every Smol Machines endpoint on Monid bills nothing per call. The machine you boot is metered while it exists, by uptime, vCPU, memory, disk and egress, and settled monthly from your Monid balance.
Metering at the size on this page, 1 vCPU · 512 MB · 1 GB: $0.04 a machine-hour, $0.05 a vCPU-hour, $0.0162 a GB-hour of memory, $0.0001 a GB-hour of disk, $0.05 a GB out. A stopped machine still bills its disk. /delete ends it; so does ttlSeconds.
One key. 1,700+ tools.
A machine is one aisle. The same key reads pages, drives a browser, searches the web and finds who to write to, so the code the agent runs in its room has something to work on.
+ 1,700 more across 80 providers
Browse the catalog →Read more
View all →
Agentic browser: when your agent actually needs one
A browser is the other room an agent sometimes needs. When a fetch is enough, and when it is not.

MCP vs API for AI agents: who does the wrapping?
Where the tool boundary sits, and what your agent should be handed versus what it should call.

A model is half an agent
One integration for the model, one for the tools. A machine to run on is the newest thing behind the second key.





