diff --git a/.env.example b/.env.example index ccab0bc..bd3c49b 100644 --- a/.env.example +++ b/.env.example @@ -235,26 +235,3 @@ JARVIS_PORT=8080 # through the check-in and is stored, so leaving an old key here cannot roll you back. To replace a # key, use Settings → Licence. #JARVIS_LICENSE_KEY= - -# Whether an instance WITHOUT a licence reports to your provider. On unless you say otherwise. -# -# It sends the same fields a licensed instance does — counts, the version it runs, its contract -# checksum and its public address — to checkin.luxit.be. No names, no conversation content, nothing -# about what you administer. The README lists every field. -# -# Set it to off and nothing leaves this network at all. You keep every community allowance and every -# feature; what stops working is the licence request form in Settings → Licence, which needs the same -# channel. Accepted values for off: off, false, 0, no. -# -# A LICENSED instance reports regardless — that is part of what a licence is, and this variable does -# not change it. -# NOTE, 24 August 2026: this line did nothing before that date, and we are sorry. Compose reads -# this file to fill in placeholders INSIDE the compose file — it does not hand it to the services — -# and the api service never listed this variable, so the API saw nothing and applied its default of -# "on". An instance that had opted out reported anyway. Pull the repository again and -# `docker compose up -d`: the fix is in the compose file, not in the images. -# -# Do not trust this file to tell you whether it took. Ask the instance: -# docker compose exec api printenv JARVIS_TELEMETRY -# Settings -> Licence answers the same question from what the API actually resolved. -#JARVIS_TELEMETRY=on diff --git a/CHANGELOG.md b/CHANGELOG.md index 8487bf2..8cb2f5d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,55 @@ one of them changed. An entry says which artefact and which version, so `web 0.1 Every version published to a channel appears here. Nothing is written from memory afterwards: a build cannot be published without its entry. +## 2026-08-24 — Reporting is no longer optional `api 0.90.0` `web 0.114.0` + +**`JARVIS_TELEMETRY` is gone, and with it the ability to stop your instance checking in.** Three days +ago this repository told you the variable worked, and apologised for the fact it had not. We are +withdrawing the option rather than leaving you to discover it stopped working: it is removed from the +compose file, from `.env.example`, from the licence screen and from the install wizard, which is +nine steps now instead of ten. + +The reason is the one already written down for why a community instance reports at all. A free tier +the publisher cannot see is a free tier nobody can warn — and the instances that opt out are exactly +the ones most likely to be running an old build unattended, which is the population a warning is for. + +**What has not changed is what leaves your network, or your ability to see it.** The field list below +is complete and unchanged: your instance id and public key, the version and contract hash it runs, +its public address, and counts of organizations, users, agents and assets. No names, no conversation +content, nothing about the machines you administer. **Settings → Licence** shows you the address and +the contents resolved by your own running instance, which is the answer that matters rather than +anything this document says. + +If that does not suit your deployment, tell us before you deploy — we would rather have the +conversation than have you find out from a packet capture. + +### Also in this release + +**The sign-in field is off on a new installation.** The orb you press and hold to reveal the sign-in +form is a deliberate piece of the product, and it is no longer what a brand-new instance greets you +with — a first-time deployer meeting an unlabelled glowing hexagon has a puzzle rather than a login. +Turn it on under **Settings → Platform → Sign-in**; instances that already have it keep it. + +## 2026-08-24 — "Open Jarvis" sent you back to the install screen `web 0.113.0` + +**If you installed on web 0.112.0, the last click of the wizard put you in a loop.** You finished, +pressed **Open Jarvis**, and landed back on the install screen reading "This instance already has an +administrator" — with a button to sign in that bounced you to the console, which sent you back to the +install screen again. Nothing was wrong with your instance and nothing was lost; a reload of the page +was enough to break out of it. It was still the worst possible moment for it, on the one screen a +new deployer meets exactly once. + +The console asks "does this instance need installing" once, when the page first loads, and it had no +way to learn the answer had changed under it — so at the end of the wizard it was still acting on +what it had been told before you started. The wizard now tells it. + +Upgrade with the usual two lines: + +```sh +docker compose pull +docker compose up -d +``` + ## 2026-08-24 — The claim no longer expires `api 0.89.0` `web 0.112.0` **The thirty-minute window on the install screen is gone.** There is no countdown, no "the window diff --git a/README.md b/README.md index 8f5941c..ed8bb15 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ licence from your provider raises the limits; it does not switch anything on. When you outgrow it, **ask for a licence from inside Jarvis** — Settings → Licence — and the key arrives on your instance by itself. A community instance reports its version and its counts so that we can see which builds are in the field; [what it sends](#licence-keys-and-what-your-instance-reports) -is listed in full below, and `JARVIS_TELEMETRY=off` stops it without costing you anything. +is listed in full below. - [What it does](#what-it-does) - [What decides whether a tool call runs](#what-decides-whether-a-tool-call-runs) @@ -646,24 +646,12 @@ whether the community edition was reaching anybody, or which builds were running warn people about one. And the licence request below needs the same channel — a form that could not reach us would just be an email with extra steps. -**`JARVIS_TELEMETRY=off` in `.env` stops it completely.** You keep every community allowance, every -feature and every machine; what you lose is the request form, and our ability to know you exist. That -is a fair trade and we would rather you took it than felt watched. - -> **This did not work before 24 August 2026, and we are sorry.** The line was read from `.env` by -> compose — which uses that file to fill in placeholders inside the compose file, not to hand values -> to the services — and the `api` service never listed the variable, so the API saw nothing and -> applied its default of "on". An instance that had opted out reported anyway. Pull this repository -> again and `docker compose up -d`; the fix is in the compose file, not in the images. -> -> **Do not trust a file to tell you.** Ask the instance: -> -> ```sh -> docker compose exec api printenv JARVIS_TELEMETRY -> ``` -> -> No output means it still has not landed. **Settings → Licence** answers the same question on -> screen, from what the API actually resolved — which is why that screen exists. +**Reporting is part of running Jarvis, and there is no switch.** Every instance checks in — +community or licensed, the same fields either way — because it is the only way we see which builds +are in the field when one of them turns out to need a warning, and because the licence request form +below travels the same channel. What leaves is listed field by field in the next section, and +**Settings → Licence** shows you the exact address and the exact contents from the running instance +rather than from this document. Everything in the next section applies to a community instance as well: the field list is the whole field list, and it is the same one. @@ -712,11 +700,10 @@ publisher can identify only by a fingerprint is one where "which of these is the about" has no answer. The screen shows you the exact address that leaves, under **Settings → Licence**. -**The whole of it is switchable off, and only on a community instance**: set `JARVIS_TELEMETRY=off` -in `.env` and nothing leaves your network at all. A licensed instance always reports — that is part -of what a licence is, and the licence screen says so rather than offering a switch that would make -the arrangement a matter of opinion. If neither suits your deployment, take it up with us before you -buy anything. +**There is no way to switch this off**, on a community instance or a licensed one. It is the same +report either way, and the licence screen states it rather than offering a control that would make +the arrangement a matter of opinion. If that does not suit your deployment, take it up with us before +you deploy anything. The reply can carry a renewed key, which your instance adopts on its own — so a renewal reaches you without anybody re-pasting anything. diff --git a/docker-compose.yml b/docker-compose.yml index d853675..ab06d40 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -186,19 +186,6 @@ services: # everything it already has, creates nothing new, and contacts nobody. See the README. JARVIS_LICENSE_KEY: ${JARVIS_LICENSE_KEY:-} - # WHETHER ANYTHING LEAVES THIS NETWORK, and it has to be passed explicitly — this line is the - # whole control. It was missing until 24 August 2026, and its absence made a published promise - # false: `.env` is read by compose for `${...}` INTERPOLATION ONLY, never injected into a - # container, and no `env_file` makes up the difference. So an operator who wrote - # `JARVIS_TELEMETRY=off` in `.env` — exactly as the README, the changelog and `.env.example` all - # told them to — was reporting to the publisher the entire time, because the api saw nothing - # and applied its default of "on". - # - # Defaulted to the word rather than to empty, deliberately. The schema defaults an ABSENT - # value to "on", but `${VAR:-}` passes an empty STRING, which is present — the same trap that - # killed WEB_ORIGIN on a zero-config boot. Passing "on" means the container never has to - # reason about the difference. - JARVIS_TELEMETRY: ${JARVIS_TELEMETRY:-on} # Which distribution channel this instance follows, shown to signed-in operators beside the # version numbers. Set `JARVIS_CHANNEL=stable` (or `dev`) in .env if you track a channel; # LEAVE IT EMPTY IF YOU PIN EXACT VERSIONS, because then you follow no channel — you follow a