Skip to main content
Connect lets a licensed self-hosted install call two LangWatch-hosted services, the Instant Evals judge and managed models, over outbound connections to two hosts. Everything else keeps running on your own infrastructure. Your license decides what this install may call. A license that names a hosted service can reach it; a license that names none reaches no hosted service at all, and there is no setting that changes that. An install on an offline license opens no connection to LangWatch, and you can check that against the license itself rather than against a configuration file. A service your license names is on. An organization admin switches off the ones they do not want in Settings, Connect, and the same page shows what has been spent, the cap the install stops at, and the credit that is left.

The two hosts

Connect talks to two hosts, split by what the data is, so a network rule can allow one without the other and prove from the firewall that no content leaves. The usage report and the license sync are two channels that are never merged: the report is optional and the sync is a license term. Data and telemetry covers both, and the usage report dictionary lists every field of the report.

What leaves the install

Each service states what it sends before you switch it on. Your traces, datasets, saved prompts and your own model provider keys stay on your infrastructure whichever services are on.

Activate with a code

A fresh install starts on the open source baseline with no account and no license. To license it, LangWatch issues you an activation code, LW-XXXX-XXXX-XXXX-XXXX, single use by default.
  1. Open Settings, License.
  2. Choose Enter activation code, paste the code, and confirm.
  3. The install posts the code to connect.langwatch.ai and receives the signed license and its entitlements. The services the license names are on at once.
The license refreshes on the daily sync from then on, so a renewal or a change of seats reaches the install without a key by email. Refresh license on the same page fetches it now instead of waiting for the sync. The paste and the file upload stay on the License page for an air-gapped install, which receives its license blob from LangWatch and never opens a connection.

Endpoints and variables

The endpoints default to LangWatch’s own hosts, so you name them only when LangWatch gave you different ones. A default install sets none of these.
The chart writes these as environment variables on the app and the workers. Set them directly on any other deployment method: Both endpoints must be https; plain http is accepted for a loopback host only, for a developer running both sides on one machine. Restart the app and the workers after changing any of them.

Outbound rules

Connect needs two destinations open, both on port 443:
Behind a forward proxy, set HTTPS_PROXY (and NO_PROXY for the hosts that skip it) on the app and the worker pods. The install sends its hosted calls and its license sync through the proxy when any of HTTPS_PROXY, HTTP_PROXY or NO_PROXY is set. Settings, Checkup has a button that reaches both hosts from the install and, when one is blocked, names the host and port the rule has to allow.

The instance id

The instance id is a UUID the install mints into its own database the first time it needs one and never rewrites, so it survives restarts, backups and hostname changes. It carries no organization name. LangWatch binds your license to the first install that presents it. A second install running a copy of the database presents another id and is refused with connect_wrong_instance. If you rebuilt or moved an install on purpose, ask LangWatch to reset the binding, or set LANGWATCH_CONNECT_INSTANCE_ID to the old id before the first boot of the new install.

What an admin sees in Settings, Connect

Settings, Connect is on a self-hosted install only, next to License and Checkup. Every member of the organization can open it; changing a service or the cap needs organization management rights. Switching a service on or off takes effect within a minute, with no restart.

What does the license sync send

Two minutes after boot and once a day after that, the install posts to connect.langwatch.ai: its license token, its instance id, the app version it runs, and two seat counts, members and lite members. LangWatch answers with the current license for this install, signed by the same key pair that signed the one you activated. A renewed or changed license reaches the install this way, and the install applies it through the same validation a pasted key gets.

Seats

The licensed seat count is a hard cap: the seat past it is refused, on a connected license as on an offline one. To add seats, ask LangWatch. LangWatch changes the seats on your license, invoices the added seats prorated to the end of the term, and the install picks the new license up on the next sync or when an admin presses Refresh license on the License page. Existing members are never locked out by a seat change; only the next invitation past the cap is refused.

License renewal

A renewed or reissued license reaches the install in the sync answer. There is no key to receive by email and paste, and Refresh license fetches it now. A delivered license that does not verify is not applied. The install keeps the license it has and shows the failure in Settings, Connect.

Instant Evals through Connect

An install with its own JEV_API_KEY judges with that key and is unchanged by Connect: its evaluations stay on your infrastructure whatever else is switched on. Without a judge key, an install whose license names Instant Evals judges through LangWatch. An organization whose admin switched it off publishes the eval functions as unavailable, so a query never comes back with judged columns that are all empty. Judging is charged at the list rate, 0.0546 USD per million input tokens the judge reads, and counts against your cap. The 1 USD free budget of the Cloud free plan does not apply here: your commit and your cap govern instead. See Limits and cost for what a run reads and costs.

Managed models

With Managed models on, the LangWatch AI Gateway in your install can call a model LangWatch runs by spelling the model with a langwatch/ prefix:
Your own providers are untouched: a model spelled without the prefix goes to your own credentials as before. Calls to a langwatch/ model are metered against the same cap as every other hosted service.

Air-gapped installs and existing licenses

An install whose license names no hosted service opens no connection to LangWatch: no activation, no sync, no hosted service, and the licensed seat count is enforced as a hard cap. Upgrading to a release that carries Connect changes an existing offline license in no way: it verifies with the same key, enforces the same cap, and the usage report goes where it always went unless you switch it off. The license blob is where you check it: decode the license and look for connectServices. A license without that field, which is every license issued before this release, reaches no hosted service. For an install that must prove the absence rather than derive it, set app.connect.disabled: true (or LANGWATCH_CONNECT_DISABLED=true). It refuses every hosted call, the license sync and the usage report, whatever the license says.

Check the wiring

Settings, Checkup reports whether the install is correctly wired: the data stores, the license, the last sync, the last usage report, and a button that reaches both LangWatch hosts and names the host and port a rule has to allow. langwatch doctor prints the same rows from a terminal.

Errors an admin can meet

How hosted usage is billed

You prepay a usage commit for the term. It is charged at list rates as a line on the annual invoice, next to the seats, and hosted usage draws it down. What is left of the commit expires with the term. When the commit is spent, hosted calls stop. They keep running past it only when your contract enables overage, which carries a maximum you agreed, prefilled at a quarter of the commit and changeable by LangWatch. The cap you set in Settings, Connect can be anywhere between zero and that maximum. Overage is invoiced quarterly in arrears. Seats added mid-term are invoiced when LangWatch changes them, prorated to the end of the term. For a month with hosted usage, LangWatch emails a statement to your billing contact.
Last modified on September 22, 2026