langwatch CLI, curl and jq, and it exercises the management API, the data plane and one provider in a single run.
Run it on a schedule so a broken credential or an expired secret shows up before a caller finds it.
Runtime: typically 3 to 8 seconds wall-clock. One gateway request + two REST round-trips.
What it checks
- The management API at
/api/gateway/v1/*answers with your CI token. - A virtual key is created at the scope you name and its secret is returned once.
- The gateway resolves that secret and dispatches to a provider.
- The response carries
X-LangWatch-Gateway-Request-Id, so the request is traceable. - The key is revoked when the job ends, whether it passed or failed.
Prerequisites
- An API key for the calling project, in
CI_LANGWATCH_TOKEN. It needs thevirtualKeys:createandvirtualKeys:deletepermissions. - The scope the CI key lives at, in
CI_SCOPE, written astype:id. The types areorg,teamandproject, for exampleorg:acme. - At least one model provider credential visible from that scope, configured under Settings → Model Providers.
jqon the runner.
The script
SMOKE_MODEL to a model your own providers serve. Write it as provider/model, for example anthropic/claude-sonnet-4-5 or azure/<your deployment name>. See Model naming.
GitHub Actions
Reading a failure
Against a self-hosted install
/api/* to the control plane and /v1/* to the gateway.
Alerting
Fire your own alert from the job’s failure step:/readyz. The probe reports process state only, while this exercises authentication, dispatch, the provider and the spend record.
See also
- Health checks: what each probe reports, and the synthetic request pattern.
- Observability: what each response header carries.
- Troubleshooting: the symptom sections this table points at.