TINY_API_URL / TINY_TOKEN, or
the current CLI profile when those are absent.
The CLI and the MCP server both use the same remote REST API. This keeps an
agent and a human from getting different answers to the same request.
The loop that works
1
Probe the target before generating anything
2
Validate the manifest
3
Plan
4
Deploy, then poll
5
Read logs on failure
Errors are results, not transport failures
Tool errors are returned as structured tool results with stable codes, remediation, retryability, and next actions.next_actions directly. It never has to parse prose to
decide what to do next.
What an agent can do without a human
Ungated, because none of it widens blast radius:- redeploy an app whose permissions did not change;
- create and delete previews — including with capabilities, which previews do not gate;
- read status, logs, environments, access, audit events, and usage;
- roll back.
- a new production capability, raw secret, outbound host, widened visibility, or destructive migration. See Approvals.
Writing manifests an assistant can deploy
Prefer capabilities over secrets and egress
Prefer capabilities over secrets and egress
A capability is the only outbound path that needs no approval in a preview
and leaves nothing in the VM to leak.
Prefer SQLite unless the app needs concurrent writers
Prefer SQLite unless the app needs concurrent writers
It needs no operator configuration at all, so it deploys on a minimally
configured target.
Skip build.command when you can
Skip build.command when you can
Plain TypeScript with no build step deploys on a target that never installed
the build image.
@tinycloud/runtime-sdk is supplied by the runtime.Use relative URLs for browser assets
Use relative URLs for browser assets
On a single-host install, apps live below
/apps/<route>/. An absolute
/styles.css resolves above the prefix and 404s.