Sync the self-hosting stack
This commit is contained in:
@@ -9,6 +9,84 @@ 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
|
Every version published to a channel appears here. Nothing is written from memory afterwards: a build
|
||||||
cannot be published without its entry.
|
cannot be published without its entry.
|
||||||
|
|
||||||
|
## 2026-09-25 — A licensed instance can choose the managed model while it is being installed `api 0.113.0` `web 0.138.0`
|
||||||
|
|
||||||
|
**The install screen now asks for the licence before the model, and offers the managed model
|
||||||
|
there.** The model step used to come first and knew only your own provider. The managed model can
|
||||||
|
only be offered to an instance your Jarvis provider has linked to its licence, that link is made by
|
||||||
|
the instance's licence report, and an instance being installed sent none — so a licensed customer
|
||||||
|
had to type a key for a provider they did not want, or skip the model and choose the managed one
|
||||||
|
afterwards under **Settings → Platform → Model**.
|
||||||
|
|
||||||
|
**Adding a paid or trial key on the install screen now sends the licence report straight away**,
|
||||||
|
rather than once the install is finished — and so does opening the licence step with a key the
|
||||||
|
instance already holds from `JARVIS_LICENSE_KEY`. That is a new moment of sending, so here is
|
||||||
|
exactly what it is: the same report with the same fields as every other — the licence id, this
|
||||||
|
instance's id and public key, its version, contract checksum, counts and public address, the
|
||||||
|
timestamps and the signature; no names and no conversation content. The
|
||||||
|
[README](README.md#licence-keys-and-what-your-instance-reports) lists every field. It goes early
|
||||||
|
because it is what links the instance to its licence. The licence step says so beside the key field,
|
||||||
|
and shows how the report went — linked, refused by your provider and why, or not sent and why — with
|
||||||
|
**Report now** to try again.
|
||||||
|
|
||||||
|
**Nothing else reports earlier than before.** Only the licence step sends a report while the
|
||||||
|
instance is being installed; nothing reports on its own until the install is finished, even when
|
||||||
|
the key and the address both come from the environment. An instance without a licence still sends
|
||||||
|
nothing until then, and the licence step sends nothing for a licensed one whose address is not set
|
||||||
|
yet, is `localhost` or another loopback address, or is an example address such as
|
||||||
|
`jarvis.example.com`.
|
||||||
|
|
||||||
|
**The model step is now the same choice as the settings screen**: your own provider, with the test
|
||||||
|
button and "Skip for now" as before, or the managed model, with the same statement of what it sends
|
||||||
|
and the same box to tick before it is selected. Choosing the managed model there is enough to
|
||||||
|
continue, so a licensed install can be finished without a model key of your own. Without a licence,
|
||||||
|
the managed option is shown as unavailable, with the reason and a way back to the licence step.
|
||||||
|
Reaching the model step on a licensed instance asks your provider whether the managed model is
|
||||||
|
offered, exactly as opening **Settings → Platform → Model** does: a signed request with no
|
||||||
|
conversation content.
|
||||||
|
|
||||||
|
**Also in this release.**
|
||||||
|
|
||||||
|
- "Report now", under the managed model's option in the model settings, now says what your provider
|
||||||
|
answered when a report did not link the instance — a licence it does not know, one already in use
|
||||||
|
on as many instances as it allows, one it has withdrawn — where it used to say nothing and leave
|
||||||
|
the option unavailable.
|
||||||
|
- When your provider refused to link the instance for a reason another report cannot change — the
|
||||||
|
licence is already in use on as many instances as it allows, or your provider does not know it —
|
||||||
|
the managed option now says that, on the settings screen and on the install screen, instead of
|
||||||
|
"available after this instance's next report". The licence step keeps saying it when you come back
|
||||||
|
to it.
|
||||||
|
- "Your own provider" is marked **In use** only once an endpoint's model and key are saved. A new
|
||||||
|
instance used to show it over an empty form.
|
||||||
|
- An install that has been started can be resumed from a browser that is not signed in: the install
|
||||||
|
screen asks you to sign in, and the sign-in page now opens instead of sending you back.
|
||||||
|
- The Kubernetes `02-config.yaml` no longer sets `WEB_ORIGIN` to the placeholder
|
||||||
|
`https://jarvis.example.com`; it is commented out. Applied unedited, it was stored as the
|
||||||
|
instance's address until the install screen replaced it.
|
||||||
|
|
||||||
|
**Self-hosters:** api and console. The schema gains one column, the licence server's answer to the
|
||||||
|
last report, applied automatically when the api starts; it only adds, so the schema guard has
|
||||||
|
nothing to refuse. No new environment variable. An instance that is already installed reports
|
||||||
|
exactly as before. On Kubernetes, nothing to do either: the install screen saved your real address
|
||||||
|
over the placeholder when you installed.
|
||||||
|
|
||||||
|
**Rolling back past this version** drops that column, which the schema guard refuses once a report
|
||||||
|
has filled it, and the api does not start. To go back anyway, set `SCHEMA_ACCEPT_DATA_LOSS=true`
|
||||||
|
for that one deploy — in `.env` on compose, on the `jarvis-migrate` Job on Kubernetes — then put
|
||||||
|
it back. What is lost is only that last answer, which the next report writes again.
|
||||||
|
|
||||||
|
## 2026-09-25 — The model is chosen in one place, and the form you are not using is out of the way `web 0.137.1`
|
||||||
|
|
||||||
|
Under **Settings → Platform → Model**, the choice between your own provider and the managed model is
|
||||||
|
now made with the selector and nothing else. The separate "Use your own provider" button is gone:
|
||||||
|
picking that option in the selector does the same thing, and still asks first when your own provider
|
||||||
|
is not configured, because switching would then leave the assistant with no model.
|
||||||
|
|
||||||
|
Your own provider's form now appears only while the selector is on it. While the managed model is in
|
||||||
|
use — or has been picked and is waiting for you to confirm — the form is hidden rather than shown with
|
||||||
|
a note saying it is not in use. Its settings, key included, are kept exactly as they were, and come
|
||||||
|
back with the form when you switch back.
|
||||||
|
|
||||||
## 2026-09-24 — A licensed instance can choose a managed model, and this is exactly what it sends `api 0.112.0` `web 0.137.0`
|
## 2026-09-24 — A licensed instance can choose a managed model, and this is exactly what it sends `api 0.112.0` `web 0.137.0`
|
||||||
|
|
||||||
**No conversation content leaves unless somebody chooses it.** The assistant keeps using your own
|
**No conversation content leaves unless somebody chooses it.** The assistant keeps using your own
|
||||||
|
|||||||
@@ -195,8 +195,9 @@ to how the containers are scheduled.
|
|||||||
- A hostname and a TLS terminator in front of it. Jarvis speaks plain HTTP and does not manage
|
- A hostname and a TLS terminator in front of it. Jarvis speaks plain HTTP and does not manage
|
||||||
certificates.
|
certificates.
|
||||||
- An API key for an OpenAI-compatible endpoint — or a paid or trial licence that includes the
|
- An API key for an OpenAI-compatible endpoint — or a paid or trial licence that includes the
|
||||||
[managed model](#if-you-choose-the-managed-model), which you choose after installing. The install
|
[managed model](#if-you-choose-the-managed-model), which the install screen offers once the licence
|
||||||
screen asks for the key and tests it before saving; you do not need it in hand before you start.
|
is in. The install screen asks for either, and tests a key before saving it; you do not need
|
||||||
|
either in hand before you start.
|
||||||
- **No licence key.** Jarvis runs the [community edition](#the-community-edition) out of the box; a
|
- **No licence key.** Jarvis runs the [community edition](#the-community-edition) out of the box; a
|
||||||
key raises the limits when you outgrow them.
|
key raises the limits when you outgrow them.
|
||||||
- Roughly 2 GB of RAM for the stack and room for Postgres to grow.
|
- Roughly 2 GB of RAM for the stack and room for Postgres to grow.
|
||||||
@@ -212,13 +213,23 @@ That is the whole first deployment. **There is no `.env` step.** First boot gene
|
|||||||
secrets, syncs the database schema and runs its data backfills before the API listens, so give it
|
secrets, syncs the database schema and runs its data backfills before the API listens, so give it
|
||||||
about a minute. Then point your reverse proxy at port 8080 and open the address in a browser.
|
about a minute. Then point your reverse proxy at port 8080 and open the address in a browser.
|
||||||
|
|
||||||
An install screen takes it from there. It welcomes you, creates the first administrator inside a
|
An install screen takes it from there. It welcomes you, creates the first administrator, then asks
|
||||||
bounded window, then asks for the address this instance answers on and who may create an account on
|
for the address this instance answers on and who may create an account on it, a licence, the model,
|
||||||
it, the model, your first organization, and — every one of them skippable — mail, a licence and
|
your first organization and mail — the licence, the model and mail all skippable. It finishes by
|
||||||
whether this instance reports anything about itself. It finishes by showing you what the deployment
|
showing you what the deployment actually looks like from inside, and by making you take a backup of
|
||||||
actually looks like from inside, and by making you take a backup of the one value nothing can
|
the one value nothing can reconstruct. Nine steps, about five minutes, and **only the address really
|
||||||
reconstruct. Ten screens, about five minutes, and **only the address really needs you**: everything
|
needs you**: everything else has a "later" that costs nothing.
|
||||||
else has a "later" that costs nothing.
|
|
||||||
|
**The licence comes before the model, and with a paid or trial key it sends something.** Adding the
|
||||||
|
key on the install screen's licence step makes this instance send its licence report to your Jarvis
|
||||||
|
provider straight away, rather than once the install is finished — and so does opening that step
|
||||||
|
with a key the instance already holds from `JARVIS_LICENSE_KEY`. That report is what links the
|
||||||
|
instance to its licence, and the [managed model](#if-you-choose-the-managed-model) is only offered
|
||||||
|
to a linked instance. So the model step can offer it beside your own endpoint, with the same
|
||||||
|
statement of what it sends as the settings screen, and a licensed install can be finished without a
|
||||||
|
model key of your own. What the report carries is
|
||||||
|
[listed field by field below](#licence-keys-and-what-your-instance-reports). Without a key, nothing
|
||||||
|
leaves until the install is finished.
|
||||||
|
|
||||||
Everything it asks is a setting you can change afterwards from an ordinary screen. Nothing it asks
|
Everything it asks is a setting you can change afterwards from an ordinary screen. Nothing it asks
|
||||||
needs a container restart to change.
|
needs a container restart to change.
|
||||||
@@ -735,6 +746,18 @@ key; a community one to `checkin.luxit.be`, compiled into the build. The interva
|
|||||||
to set — every ten minutes on the current arrangement, so that a renewal or a revocation reaches you
|
to set — every ten minutes on the current arrangement, so that a renewal or a revocation reaches you
|
||||||
promptly rather than tomorrow.
|
promptly rather than tomorrow.
|
||||||
|
|
||||||
|
**An instance that is still being installed reports nothing — until a licence is adopted and its
|
||||||
|
address is set, and then only from the install screen's licence step.** A community instance sends
|
||||||
|
its first report once the install screen is finished. A licensed one sends it from the licence
|
||||||
|
step, which comes after the step that sets the address: the moment the key is added there, or, for
|
||||||
|
a key that came from `JARVIS_LICENSE_KEY`, when that step opens. Nothing reports on its own before
|
||||||
|
the install is finished, so a stack that brings both its key and its address in the environment
|
||||||
|
still sends nothing until somebody reaches that step. That early report is the same report, with the
|
||||||
|
same fields — it goes early because it is what links the instance to its licence, which the managed
|
||||||
|
model needs. An address that is still `localhost` or another loopback address does not count as
|
||||||
|
set, and neither does an example one such as `jarvis.example.com`: that instance sends nothing from
|
||||||
|
the licence step.
|
||||||
|
|
||||||
This is everything the licence report and a licence request send, in full. The managed model, if you
|
This is everything the licence report and a licence request send, in full. The managed model, if you
|
||||||
choose it, sends conversation content — see
|
choose it, sends conversation content — see
|
||||||
[If you choose the managed model](#if-you-choose-the-managed-model).
|
[If you choose the managed model](#if-you-choose-the-managed-model).
|
||||||
@@ -784,9 +807,11 @@ checked without a network.
|
|||||||
**Off unless a platform administrator turns it on, and only on a paid or trial licence.** Your
|
**Off unless a platform administrator turns it on, and only on a paid or trial licence.** Your
|
||||||
Jarvis provider can run a model for licensed instances, so that the assistant works without an
|
Jarvis provider can run a model for licensed instances, so that the assistant works without an
|
||||||
endpoint or a key of your own. A platform administrator chooses it under **Settings → Platform →
|
endpoint or a key of your own. A platform administrator chooses it under **Settings → Platform →
|
||||||
Model**, on a screen that states everything below and asks them to confirm they have read it.
|
Model**, or on the model step of the install screen, which shows the same choice once the licence
|
||||||
Nothing else selects it: no environment variable, no licence, no answer from the licence server. A
|
step before it has linked the instance to its licence. Either way it is chosen on a screen that
|
||||||
community instance cannot use it; its assistant runs on your own provider, as it always has.
|
states everything below and asks them to confirm they have read it. Nothing else selects it: no
|
||||||
|
environment variable, no licence, no answer from the licence server. A community instance cannot use
|
||||||
|
it; its assistant runs on your own provider, as it always has.
|
||||||
|
|
||||||
**While it is chosen, conversation content goes to your Jarvis provider instead of the endpoint you
|
**While it is chosen, conversation content goes to your Jarvis provider instead of the endpoint you
|
||||||
configured.** Every request the assistant then makes to the model carries:
|
configured.** Every request the assistant then makes to the model carries:
|
||||||
@@ -805,9 +830,10 @@ exactly as its licence report is, which carries the product (`jarvis`), the lice
|
|||||||
id and public key, and the version — nothing else — and it keeps the credential in memory only.
|
id and public key, and the version — nothing else — and it keeps the credential in memory only.
|
||||||
|
|
||||||
**Opening the screen already asks.** On a licensed instance, opening **Settings → Platform → Model**
|
**Opening the screen already asks.** On a licensed instance, opening **Settings → Platform → Model**
|
||||||
sends that signed request, so the screen can say whether the managed model is offered to you and
|
— or reaching the model step of the install screen — sends that signed request, so the screen can
|
||||||
which model it is — whether or not anybody then chooses it. It carries the fields above and no
|
say whether the managed model is offered to you and which model it is, whether or not anybody then
|
||||||
conversation content, and your Jarvis provider sees that this instance asked.
|
chooses it. It carries the fields above and no conversation content, and your Jarvis provider sees
|
||||||
|
that this instance asked.
|
||||||
|
|
||||||
**Where it goes.** Over HTTPS to the host your licence reports to — the address written into your
|
**Where it goes.** Over HTTPS to the host your licence reports to — the address written into your
|
||||||
licence key, `checkin.luxit.be` on current licences, which is where its licence report goes too. The
|
licence key, `checkin.luxit.be` on current licences, which is where its licence report goes too. The
|
||||||
|
|||||||
@@ -45,8 +45,12 @@ data:
|
|||||||
TRUST_PROXY_HOPS: "1"
|
TRUST_PROXY_HOPS: "1"
|
||||||
|
|
||||||
# The seed for the address enrolled agents dial back to. Whatever the install screen stores wins
|
# The seed for the address enrolled agents dial back to. Whatever the install screen stores wins
|
||||||
# from then on, so this is a starting value rather than the answer.
|
# from then on, so this is a starting value rather than the answer — and it is COMMENTED OUT
|
||||||
WEB_ORIGIN: "https://jarvis.example.com"
|
# because a placeholder is a worse start than none. Seeded as it stood, `jarvis.example.com` was
|
||||||
|
# stored as this instance's address before anybody had opened the install screen, which asks for
|
||||||
|
# the address anyway, prefilled with the one your browser used. Uncomment it only with your real
|
||||||
|
# address.
|
||||||
|
# WEB_ORIGIN: "https://jarvis.example.com"
|
||||||
|
|
||||||
# Where the agent binaries are, filled per pod by an initContainer. Leaving it unset is
|
# Where the agent binaries are, filled per pod by an initContainer. Leaving it unset is
|
||||||
# supported: everything works except the agent installer, which answers 503 saying no build is
|
# supported: everything works except the agent installer, which answers 503 saying no build is
|
||||||
|
|||||||
Reference in New Issue
Block a user