diff --git a/.env.example b/.env.example index 89b6234..c7f93db 100644 --- a/.env.example +++ b/.env.example @@ -138,17 +138,19 @@ OPENAI_API_KEY= #RUN_SHUTDOWN_GRACE_SEC=25 # --------------------------------------------------------------------------- -# Licence (required to create anything) +# Licence (optional — without one you get the community edition) # --------------------------------------------------------------------------- -# Your licence key. REQUIRED to create anything new. Ask antoine@luxit.be for one. +# Leave this empty and the instance runs the COMMUNITY EDITION: 1 organization, 3 users, 5 agents, +# 10 assets, no expiry, nothing to renew, and nothing reported to anybody. Every feature works inside +# those numbers. A full limit refuses the NEXT thing of that kind and touches nothing already there. # -# Without it, an instance keeps running everything already set up and refuses to create new -# organizations, users, agents and assets — so an existing deployment does not stop working when -# this reaches it, and a fresh install gets as far as its first administrator and then needs a key. -# An unlicensed instance also contacts nobody at all. See the README for exactly what a licensed one -# reports. +# A key raises the limits — ask antoine@luxit.be for one. It is verified offline, on this machine. A +# licensed instance then reports counts and its own address to your provider; the README lists every +# field it sends. A key that expires or is withdrawn drops back to the allowances above, never to +# nothing. # # This value SEEDS the database on first boot and does not govern it afterwards: a renewal arrives -# through the check-in and is stored, so leaving an old key here cannot roll you back. +# 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= diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e68c40..da5d415 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,35 @@ 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. +## api 0.83.0 · web 0.104.0 — 2026-08-21 + +**Jarvis no longer needs a licence key to be useful.** An instance without one now runs the +**community edition** — 1 organization, 3 users, 5 agents, 10 assets — perpetually, free, with every +feature working and nothing reported to anybody. Install it, connect it to something real, and see +what it does before there is anyone to talk to. A licence raises those limits; it does not switch the +product on. + +This replaces the behaviour of the last three days, where an instance with no key came up, accepted +its first administrator account and then refused everything else. **If you installed Jarvis and found +it would not let you create anything, this is the release that fixes it** — upgrade, and the +allowances above apply immediately. Nothing needs to be reset, re-run or re-entered. + +**A licence that stops applying now falls back to the same allowances**, instead of refusing every +creation. Expired, withdrawn, or a key that will not verify: your instance keeps running everything +already set up and may still create up to the community numbers. There is no state left in which +Jarvis stops being usable over a billing question. + +**Fixed: an unreadable licence key blocked every creation.** The licence screen said nothing was +being withheld, and something was — a key that lost a character in a paste resolved every limit to +zero. It now falls back to the community allowances, which is what the screen always claimed. + +**On the licence screen**, a fresh install no longer shows a red "No licence" badge. It says +Community edition, lists what that allows against what you use, and states plainly that nothing is +reported. The refusal you get when a limit is full names the edition and what raises it. + +Nothing else changes. No configuration, no migration, no new variable — `JARVIS_LICENSE_KEY` is now +documented as optional, and it always could be left empty. + ## api 0.82.0 · web 0.103.0 · agent 0.27.0 — 2026-08-21 **Nothing changes in what these builds do.** They are identical in behaviour to api 0.81.0, diff --git a/README.md b/README.md index f2852f2..184d43b 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,11 @@ The difference from an assistant that writes commands for you to paste is that t This repository runs Jarvis from published container images — no source, no build, no account with the project. +**And no licence key.** A fresh install comes up on the **community edition**: one organization, +three users, five agents, ten assets, no expiry, nothing to renew, and nothing reported to anybody. +Everything Jarvis does works inside those numbers — every connector, the agent, the remote terminal, +the assistant itself. A licence from your provider raises the limits; it does not switch anything on. + - [What it does](#what-it-does) - [What decides whether a tool call runs](#what-decides-whether-a-tool-call-runs) - [What it looks like](#what-it-looks-like) @@ -30,6 +35,7 @@ the project. - [When it does not come up](#when-it-does-not-come-up) - [Backups, and restoring one](#backups-and-restoring-one) - [Removing it](#removing-it) +- [The community edition](#the-community-edition) - [Licence keys, and what your instance reports](#licence-keys-and-what-your-instance-reports) - [Getting a licence, and getting help](#getting-a-licence-and-getting-help) @@ -154,8 +160,8 @@ inventory on every heartbeat. - A hostname and a TLS terminator in front of it. Jarvis speaks plain HTTP and does not manage certificates. - An API key for an OpenAI-compatible endpoint. The api will not start without one. -- A licence key. See [Licence keys](#licence-keys-and-what-your-instance-reports) — without one an - instance runs but creates nothing new. +- **No licence key.** Jarvis runs the [community edition](#the-community-edition) out of the box; a + key raises the limits when you outgrow them. - Roughly 2 GB of RAM for the stack and room for Postgres to grow. ## Install @@ -363,7 +369,7 @@ so a first-boot failure is almost always one line of `.env`: | The sign-in page loads but cannot sign in | `WEB_ORIGIN` is not the address the browser used, scheme included. It accepts one origin, not a list. | | Chat never answers and nothing streams | The WebSocket upgrade is not being forwarded. | | An answer dies part-way through, every time | The proxy's read timeout is too short. | -| Everything works but nothing can be created | No licence key. See below. | +| Everything works but one kind of thing cannot be created | A limit is full — the community edition's, or your licence's. The message names which. See below. | | An agent installer answers 503 | No agent build is published — the overlay is off. That is a supported state. | The api takes about a minute on first boot, syncing the schema before it listens. `docker compose ps` @@ -406,19 +412,51 @@ docker compose down -v # also deletes the volumes — every conversation, `down -v` is not recoverable from anything but a dump you already took. +## The community edition + +**Jarvis runs without a licence key, for as long as you like.** An instance with no key runs the +community edition: + +| | Community edition | +| --- | --- | +| Organizations | 1 | +| Users | 3 | +| Agents | 5 | +| Assets | 10 | +| Term | Perpetual. No expiry, nothing to renew, no key to lose | +| Reporting | None. Nothing leaves your network, ever | +| Features | All of them — every connector, the agent, the remote terminal, the assistant | + +Nothing is disabled, watermarked or time-limited. What a licence buys is a **higher ceiling**, not +the product: the same images, the same code, larger numbers. This is deliberate and it is the reason +the images are public — you should be able to install Jarvis, connect it to something real, and find +out whether it earns a place in your work before there is anybody to talk to. + +When a limit is full, Jarvis refuses **the next** thing of that kind and says which limit it was. +Nothing already there is touched: no organization is closed, no user locked out, no agent +disconnected, and the assistant keeps working on everything you have. So an instance that grows past +the community numbers — through an imported estate, say — keeps running in full; it simply cannot +add to that meter until a key raises it. + +**A community instance contacts nobody.** No check-in, no telemetry, no licence server, no counting. +The reporting described below begins only once a key is in place, and never before. One consequence +we accept knowingly: we cannot tell how many community instances exist. If Jarvis is useful to you, +the only way we find out is if you say so. + +To go further — more organizations for a real client base, more seats, more machines — ask for a key +(see [below](#getting-a-licence-and-getting-help)). + ## Licence keys, and what your instance reports -**Jarvis needs a licence key.** Ask for one (see [below](#getting-a-licence-and-getting-help)) and -put it in `.env` as `JARVIS_LICENSE_KEY`. The key is a signed token your instance verifies -**offline** — it carries your term and your limits, and it needs no network to be checked. +**A licence key raises the limits.** Ask for one (see +[below](#getting-a-licence-and-getting-help)) and put it in `.env` as `JARVIS_LICENSE_KEY`, or paste +it under **Settings → Licence**. The key is a signed token your instance verifies **offline** — it +carries your term and your limits, and it needs no network to be checked. -Without one, an instance keeps running everything already set up — every organization, every user, -every agent, every asset, and the assistant itself — and refuses only to create NEW ones: no new -organization, user, agent or asset. So an existing deployment does not stop working when this reaches -it, and a fresh install gets as far as its first administrator account and then needs a key. - -**An unlicensed instance contacts nobody.** No check-in, no telemetry, nothing leaves your network at -all. The reporting below starts only once a key is in place. +**A licence that stops applying drops back to the community edition**, and never to nothing. Expired, +withdrawn, or a key that will not verify: the instance keeps every allowance in the table above and +keeps running everything already set up. There is no state in which Jarvis stops being usable because +of a billing question, and there never will be. A licensed instance then reports to the address written into that key, at an interval your provider sets — every ten minutes on the current arrangement, so that a renewal or a revocation reaches you @@ -444,17 +482,19 @@ licensed instance it is sent.** It used to be a switch on the licence screen; it because an installation the publisher can identify only by a fingerprint is one where "which of these is the customer calling about" has no answer. The screen shows you the exact address that leaves, under **Settings → Platform → Licence**. If that is not acceptable for your deployment, the answer is -to run unlicensed — which contacts nobody at all — or to take it up with us before installing. +to stay on the community edition — which contacts nobody at all — or to take it up with us before +installing. The reply can carry a renewed key, which your instance adopts on its own — so a renewal reaches you without anybody re-pasting anything. **Your platform does not stop working because of a licence.** Expiry gives you a grace period — as long as your key says, which on the current plans is 30 days, and none at all on a trial. After it, -Jarvis refuses only the creation of new organizations, users, agents and assets; everything already -set up keeps running, and so does the assistant. There is no state in which Jarvis disables, deletes -or locks you out of something you are already using. If the check-in cannot reach the server, nothing -changes at all: the key you hold is what governs, and it is checked without a network. +the instance returns to the community edition's allowances: everything already set up keeps running, +the assistant included, and only creating something beyond those numbers is refused. There is no +state in which Jarvis disables, deletes or locks you out of something you are already using. If the +check-in cannot reach the server, nothing changes at all: the key you hold is what governs, and it is +checked without a network. ## Getting a licence, and getting help