tiny is a single binary. Install it with Homebrew or download one from Releases (macOS and Linux, amd64/arm64; Windows works for the CLI too).
$ brew install tiny-systems/tap/tiny
$ tiny setup
$ tiny new "make the tests not lie"
One wizard, four steps, each skipped when already done:
--context/-n
skip it everywhere.Session, Question) and one
ServiceAccount for the sidecar. It installs no pods, so an idle
install is just metadata.claude setup-token (Claude
Pro/Max) or an Anthropic API key; if you've run codex login on this
machine it offers to store that too (both agents).
tiny writes the cluster Secret itself (tiny-agent-env) — you never
touch kubectl or a Secret manifest.~/.ssh.Re-run it any time: it offers only what's missing and asks before replacing an existing token. Rotation is the same wizard with a new token.
Work and home clusters stop needing memorized context strings — name them once:
tiny profile save work --context gke_yourco_prod -n team-a
tiny profile save home --context k3s-nuc -n tiny
tiny -p work # any command takes -p
tiny profile list shows what's saved. With two or more profiles, the
bare tiny start asks which fleet with an arrow-key list — last-used
first, so enter-enter repeats yesterday's choice. Scripted and flagged
calls never see the prompt. tiny setup prints its target
before touching anything, so the wrong-cluster token mistake announces
itself.
tiny init is the scriptable subset: runtime install, no questions.
tiny init --context prod -n team-a --yes
A session with an expired token says so on the fleet screen in the
agent's own words (Invalid API key, OAuth token has expired).
Replace the token with tiny setup, cycle the session's pod
(kubectl delete pod -l tinysystems.io/session=<name>), and the
transcript resumes where it stopped.
Delete the sessions, then the two CRDs and the ServiceAccount. Nothing else was installed.