A free tier is not a smaller paid tier. It is a different shape.
Some work fits it beautifully — streaming a model response costs almost no
CPU, because time spent waiting on a socket is not CPU time — and other
work cannot fit at all, no matter how you arrange it.
Here are the limits that decide the answer, checked against the
platforms' own documentation by CI rather than remembered.
Loading verified limits…
Want your agent to do this for you?
shipfree is the Agent Skill version of this page. It teaches
any AI coding agent how to deploy an AI service on a free tier — the
limits, the architecture that fits inside them, and the traps.
Comparison of free hosting platforms for AI services
Platform
Best for
WebSockets
Streaming
Card
Cold start
The limits that actually bite
Every number below is asserted in a single file and re-checked against
upstream documentation on every push. When a limit moves, the build fails
and the drift is reported.
Will your workload fit?
What breaks, and what to do about it
10 ms of CPU is not 10 ms of wall clock
Time spent waiting on a socket is not CPU time. A
fetch() to a slow model costs almost nothing even when
the model takes eight seconds to answer. What costs CPU is work:
JSON parsing, string manipulation, crypto.
So: stream the response. Never buffer it.
Durable Objects are the escape hatch
30 seconds of CPU per request against a Worker's 10 ms. Anything
stateful, anything realtime, anything that needs real sockets goes
in a Durable Object. Use the WebSocket Hibernation API so an idle
agent session is not billed.
Queues get five minutes of CPU
A queue consumer gets 5 minutes against a Worker's 10 ms — thirty
thousand times more. Embedding, summarising, scraping and
transcoding belong in a queue, never in the request path.
Reads are cheap, writes are not
KV gives you 100,000 reads a day and 1,000 writes a day, and only one
write per second to any single key. That asymmetry is the trap. KV is
a cache; D1 is a database.