1. Bootstrap an organization
org create saves the returned human session in the default profile. The
one-time API token it prints is for automation — store it somewhere a script
can read, or discard it and keep using the profile.
Organization bootstrap is one of the few unauthenticated routes. It returns the
organization, the runtime target, a once-visible
apiToken, and a human
sessionToken.2. Look at the manifest
examples/hello-private is the smallest app that proves identity, routing, and
lifecycle work. It needs nothing beyond a minimally configured target.
examples/hello-private/tiny.yaml
examples/hello-private/src/index.ts
tiny.app(handler). The handler
receives standard Web Request and Response objects plus a verified
Tinycloud context.
3. Validate, check, plan, deploy
Each step is separately useful, and the first three are all non-mutating.1
validate — parse and check tiny.yaml locally
2
doctor — check credentials, files, and reachability
3
plan — upload an artifact and compute the diff
4
deploy — enqueue the rollout and watch it finish
202 and a worker rolls out afterwards. The command waits
for a terminal state and exits non-zero if the deployment failed, repeating
the deployer’s own reason and remediation.4. Open it
visibility: private means only subjects named in access.subjects plus
organization admins can reach it — and your owner email was added as an app
admin during normalization. Everyone else gets a login redirect and then a
denial.
Grant someone else access without redeploying:
5. Watch it work
context.log, plus context.audit events and the runtime
host’s own structured output.
When something goes wrong
The deploy failed
The deploy failed
tiny deploy exits non-zero and repeats the deployer’s reason and
remediation. GET /v1/deployments/:deploymentId carries the same detail.
Traffic never moved — the previous deployment is still serving.APPROVAL_REQUIRED
APPROVAL_REQUIRED
The change widened blast radius in production. Pass
--yes to send
approval intent with the request, or approve the pending deployment
afterwards. --yes does not bypass role or policy checks. See
Approvals.The plan refused before uploading anything
The plan refused before uploading anything
The manifest asked for something this target does not have — Postgres
without a configured cluster,
build.command without a build image, or
egress without the operator setting. That is the platform reporting
honestly rather than failing halfway through a deploy.You want the previous version back
You want the previous version back
Next
Add a database
SQLite needs no infrastructure, and the app never holds a credential.
Choose who can open it
Private, organization-wide, or genuinely public.
Call a vendor API safely
Named broker operations instead of secrets inside the app.
Browse the examples
Seven manifests, from trivial to a full build-and-Postgres app.