All docs
Docs · Get started
Hello, world in the cloud
Deploy your first stack to the hosted service — no local runtime. You sign in, pull a published package, deploy it, and get a public URL back. About two minutes.
Everything here runs on Thanks, Computer, the hosted
service. The txco CLI on your machine is the remote control: it signs you in, pulls a
package, and pushes it to your cloud tenant. Nothing executes locally — there’s no txco serve, no chassis to run.
Cloud or local? This tutorial uses our hosted chassis — it has a free tier, needs no
setup, and gives your stack a public URL. To run the very same stack on your own machine
instead, skip txco login and use txco dev: it boots a self-contained local chassis,
applies your OPS/, and serves the stack at a printed http://hello-<rand>.localhost:8099.
Same package, same rules — just no account and a local URL.
1. Install the CLI
brew tap loremlabs/txco && brew install txco or
curl -fsSL https://get.thanks.computer/install.sh | bash 2. Sign in
txco login Your browser opens to sign in. The first time, you pick a tenant slug — your workspace
handle in the cloud — and the service provisions it and enrolls a signing key on this
machine. From now on, txco commands target your cloud tenant.
3. Pull a published package
A package is a shareable stack: a tree of rules, versioned and
published to a registry. We’ll pull hello-world — a single rule that returns a JSON
greeting.
mkdir hello && cd hello
txco install hello-world --as hello ✔ verified: signed by txco [SHA256:Zzh39Nrs…]
installed hello-world 0.1.1 as stack "hello" (1 file)
Review OPS/hello/, then run `txco apply` to deploy. The ✔ verified line means the package’s signature checked out — the CLI fetched the
registry’s signing key automatically (from its .well-known), so there’s nothing for you
to configure. Install then materializes and stops: it writes plain, reviewable text
into your workspace and never touches the cloud. Rules are text, not a black box — read
what you’re about to run:
cat OPS/hello/100/hello.txcl WHEN @src == "http"
EMIT .say = "hello world" Fire on any web request (@src == "http") and set .say. The web inlet returns the
envelope as JSON (its default projection — every key except _-prefixed internals), so
the response is {"say":"hello world"}. No external services to wire — it deploys as-is.
4. Deploy to the cloud
txco apply apply pushes the stack to your tenant and activates it, then prints the public URL the
service minted:
hello v1 activated (1 files)
→ https://hello-a1b2c3.stacks.thanks.computer 5. Visit it
curl https://hello-a1b2c3.stacks.thanks.computer {
"say": "hello world"
} Open it in a browser too — it’s live on the public internet, served from your cloud tenant.
Change it
Edit the rule and ship again — the same one command:
# edit OPS/hello/100/hello.txcl …
txco apply Each apply is a new version; the URL stays the same.
What you just did
You deployed a stack to the hosted service without running anything locally — sign in, pull a package, apply, done. The CLI held your files; the runtime was ours. From here:
- Packages — pull other published stacks, or bundle and publish your own.
- CLI reference —
txco login,cloud, profiles, and the rest. - More tutorials are coming — real ingress, AI as an operation, and a human in the loop.