Run thinqOS on your own infrastructure.
thinqOS installs into your cloud account or onto a single machine you control. Your data stays in your database, on your storage, behind your sign-in. We publish releases; your install fetches them itself. Nothing we run reaches into your environment.
Before you start
You need three things: a machine or cloud account you control, Docker (or a container runtime) if you are installing on a single box, and the install token we issued you. The token is yours alone. It is what fetches releases, and it is the only credential involved.
Install
Set your token as an environment variable, then run the installer. Passing the token as a command-line argument would leave it visible to other users on the machine while the install runs, so this form is the one to use.
$ curl -fsSL https://thinqos.com/install.sh | bash
If you would rather read the script before running it, and for a security review you should, download it and check it against the published checksum first:
$ curl -fsSL https://thinqos.com/install.sh.sha256 | shasum -a 256 -c -
$ less install.sh # read it
$ bash install.sh
To see what would happen without changing anything, add --dry-run. It fetches and verifies the release, reports what it found, and stops.
What the installer actually does
1. Fetches its own tools
Downloads the two utilities it needs and checks each against a published fingerprint before running them. It will not use a copy already on your machine, because it cannot verify one.
2. Proves the release is ours
Checks the cryptographic signature on the release before anything is unpacked. A release we did not sign is refused, and nothing is written to disk.
3. Downloads the software
Pulls the container images. You never receive our source code, and you do not need access to our code repository.
4. Hands you the controls
Unpacks the topology and points you at a short list of values to supply: your database, your sign-in provider, and where your files live.
Choosing a release
There are two lanes. Stable is the tested release and is the default. Early access gets changes sooner and is where problems surface first. Pass --channel canary for early access. If you need a specific, known version, pass --version with the version string and the install is pinned to exactly that release.
Updates are yours to control
After installation, your install checks for a new release on a schedule and applies it itself. Every step is gated: the signature is verified, database changes run first, a new copy starts serving no traffic until it passes a health check, and only then does traffic move. If any step fails, the version you were already running keeps serving.
Inside thinqOS, under Admin, an Updates screen shows the version you are on, every update your install has attempted and what came of it, and three settings you control: whether updates install automatically, which lane you follow, and an optional window of hours during which updates may land. Turn automatic updates off and nothing installs until you turn them back on.
What your install reports back
In exchange for updates, your install reports a small, fixed set of facts about itself: which version it is on, whether its last few updates succeeded, whether its database is healthy, how fresh its reference data is, where it is deployed, and roughly how many seats it has, in broad bands.
It never sends your content. No messages, no prompts, no documents, no file names, and nothing identifying your users. You can see the exact payload on the Updates screen every time it is sent.
When something goes wrong
The registry refused that token
The token is wrong, has been revoked, or belongs to a different install. Each install has its own; they are not interchangeable.
Signature check failed
Stop. This means the release did not come from us. Nothing was installed. Tell us before trying again.
Checksum mismatch
A tool the installer downloaded is not the one we expect. It refuses to run it. Usually a corrupted download; retry, and tell us if it persists.
No release on that channel
The lane you asked for has no published release, or your token cannot read it.