tau-cloud
tau's cloud mode: the same Python hub (tau hub run) runs as a Cloudflare Container that
the owner's spine Worker manages, in the owner's own Cloudflare account, and keeps its life
data in the spine: sessions in D1, tau.toml and the persona files in KV. Nothing moves to
Cloudflare until the owner deploys the cloud configuration of the spine and runs
tau cloud push. The decision is ADR 0007; the contract is §5 of
docs/reference/tau-network.md; the walkthrough is docs/guides/cloud-mode.md.
It is its own distribution (tau-cloud, import tau_cloud), uses only the public API of
tau-core and tau-net, and plugs in through two entry points:
| group | name | what |
|---|---|---|
tau.sessions |
spine |
the session backend [sessions] backend = "spine" |
tau.commands |
cloud |
tau cloud push|pull|status|run |
The spine session backend
SpineSessionStore stores sessions through the spine's session API with tau-net's
SpineClient, with the semantics of the file store: ids are validated before any request,
creating a session or a message twice and updating what does not exist raise Strands'
SessionException, updates keep created_at, meta merges and events append (both create a
missing session), and nothing is ever deleted. A spine that cannot be reached, or that says
no, raises SpineStoreError with its URL and error code: a write is never dropped silently.
[sessions]
backend = "spine" # tau cloud run sets this in the container
It reads TAU_SPINE_URL and TAU_SPINE_TOKEN (the environment on top of .env). Opening the
store sends no request.
Commands
tau cloud push # tau.toml, persona/persona.md, persona/net.md, persona/subs/*.md; asks first
tau cloud push --include-user # also persona/user.md (stored in your Cloudflare account)
tau cloud push --yes # no question (scripts); user.md still needs --include-user
tau cloud pull # download into TAU_HOME; keeps local files that differ
tau cloud pull --force # replace them
tau cloud status # spine health and mode, the files it holds, the brain
tau cloud run # the brain container's entrypoint
- The file set is exactly
tau.toml,persona/persona.md,persona/user.md,persona/net.mdand the sub-tau files (ADR 0012):persona/subs/<file>, where<file>matches[A-Za-z0-9][A-Za-z0-9._-]{0,80}\.md(definitions such ascoach.md, public notes such ascoach.public.md). Nothing else is read or sent;.envis never uploaded. - Sub-tau files.
pushsends the.mdfiles directly inpersona/subs/and refuses the rest of that directory, naming each with its reason (Skipped persona/subs/Bad Name.md: only .md files with a plain name ...): an odd name (spaces, a leading dot, another extension), a subdirectory, or a symbolic link, which could send a file from outside such aspersona/user.md. Whenpersona/subs/exists here, sub-tau files the spine holds that are gone here are removed from the spine (DELETE /hub/files/<name>) and listed before the question; a machine without the directory leaves them alone.pullchecks every name the spine lists again, skips the ones outside the set (Skipped <name>: not a name of the cloud-mode file set.), writes sub-tau files 0600 in a 0700persona/subs/and never deletes a local file. persona/user.mdholds what tau knows about its owner.pushuploads it only with--include-user, or when the owner answers yes to its own question in a terminal. A non-interactive run without the flag leaves it out and says so.runpulls the files intoTAU_HOME(creatingpersona/; sub-tau files the spine no longer holds are removed frompersona/subs/), rewrites the pulledtau.tomlwith tomlkit so[sessions] backend = "spine"and[component.net] store = "spine"(every other key and comment stays), answersGET /healthon0.0.0.0:8080(TAU_CLOUD_HEALTH_PORToverrides the port) with{"ok": true, "version": ..., "hub": <the hub's /status or null>}, then runstau hub runin the same process and exits with its code. SIGTERM stops the hub cleanly. WithoutTAU_SPINE_URL/TAU_SPINE_TOKEN, or with a spine that is not in cloud mode, it exits 1 with one line. It refuses aTAU_HOMEthat holds atau.tomlit did not write, so it never overwrites your own configuration.
Tests
tau_cloud.testing.install_cloud_routes(fake_spine) adds the session and brain routes, with
the semantics of cloud/spine/src/store.ts, to a tau_net.testing.FakeSpine in cloud mode.
uv run pytest -q packages/tau-cloud
Metadata
Release files for tau-cloud 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tau_cloud-0.1.0.tar.gz | 44.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tau_cloud-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 75.6 kB
Release files / tau_cloud-0.1.0.tar.gz
| Download URL | tau_cloud-0.1.0.tar.gz |
|---|---|
| Size | 44.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
412fadebbd34731dbe0fd11d56f8cfb92f7f7c1f1243964d52f001758c61c0fb
|
|
BLAKE2b-256 checksum How to use checksums |
dca78767363fb96d51271132f05668366009867bf2d28100da2cffac4dd8e425
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / tau_cloud-0.1.0-py3-none-any.whl
| Download URL | tau_cloud-0.1.0-py3-none-any.whl |
|---|---|
| Size | 30.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bb9eba03924e961a238ccc215490559a1e4b6f185f1ec331ded0d63ecf3bfa21
|
|
BLAKE2b-256 checksum How to use checksums |
3702853ca88f5608a738e8853f4f0ad3648fc3efbf9476170d79439ad316f11f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency log