All docs

Docs · Deploy & operate

Running a chassis

You can self-host a Thanks, Computer runtime (“the chassis”), or use the hosted cloud service. This page is the self-hosted path: start a chassis, enroll your key, and deploy to it.

Start it

txco serve

When it prints -ready-, it’s listening: :8080 for web events, :5050 for TCP, :8081 for the admin API, and a cron tick every 60s. No database to provision, no containers — state lives in local files under the directory you start it from (what to back up).

Those are the default heads. Mail, IMAP, DNS, calendars, the drive and the rest are personalities you add with --personalities; every flag also reads from a TXCO_* environment variable (the runtime reference).

Enroll your key

Production chassis auth uses signed requests. Every admin call carries an ed25519 signature, with replay protection built in.

Enrolling is one command on a fresh chassis:

Note

On first boot the chassis logs a one-time secret of eight words, with the exact command to use it. Enrolling spends it; after that, admin access is by key only.

txco auth bootstrap-local    # one-time: enroll your signing key (prompts for the secret)
txco auth login              # opens the admin UI, authenticated

More people join with invitations, not the secret (identity & access).

Deploy to it

Point your workspace at the chassis in txco.yaml:

target: prod
targets:
  prod:
    chassis: https://chassis.example.com:8081

Then the loop is the one you use against txco dev:

txco apply          # deploy every changed stack in OPS/
txco status         # what differs between OPS/ and the chassis
txco trace last     # what the last request did, step by step

Every apply makes a new version of each stack it changes; txco versions <stack> lists them and txco activate <stack> --version N rolls back to one. If someone else deployed since your last sync, apply refuses rather than overwrite them (the fast-forward rule).

Where to go next

Edit this page · View as markdown