Usage reporting
Once a day, a FoxAuth server sends one small report to the FoxAuth maintainers. The report says which version the server runs, on what, with which features on, and roughly how big it is. The maintainers use it to decide what to keep, what to fix first and what nobody uses any more.
Reporting is on by default. Nothing in a report names you, your projects, your applications or your users. A report that cannot be delivered is not an error: the server carries on and tries again the next day.
Turning it off
In the console: Settings → Integrations → Usage reporting. The change applies at once, without a restart. This setting is the only switch.
The console card under the switch shows the exact report the server last sent, so you can check what left it.
The addresses that attack a server are reported separately, hourly, under a switch of their own: see Attack reporting.
Where it goes
Reports go to https://api.foxtrust.dev/v1/foxauth/usage, run by the FoxAuth maintainers. The receiver does not store the address a report comes from, and keeps reports for 13 months.
Every field
This is format 1. Counts are never exact: each is sent as one of these ranges: 0, 1, 2-10, 11-100, 101-1000, 1001-10000, 10001-100000, 100001+.
| Field | What it says | Values |
|---|---|---|
format | The version of this report format. | 1 |
instanceId | A random identifier this server generated for itself and keeps in its database. It is derived from nothing, so it says nothing about who runs the server; it only lets reports from one server be grouped. | a UUID |
foxauth.version | The FoxAuth release this server runs. Left out when the package manifest cannot be read. | a version such as 1.3.0 |
runtime.bun | The Bun version this server runs on. | a version such as 1.3.4 |
runtime.os | The operating system. | a Node.js platform name such as linux, darwin or win32 |
runtime.arch | The processor architecture. | a Node.js architecture name such as x64 or arm64 |
runtime.container | Whether the server appears to run in a container. A best guess from the usual container markers. | true or false |
storage | Which database the server stores its data in. | mongodb or postgres |
features.<setting> | Whether a feature setting is on. Only the on/off of the settings listed as reported is sent, never a value. | true or false |
size.projects | How many projects the server holds, the administrators' own project included. | one of 0, 1, 2-10, 11-100, 101-1000, 1001-10000, 10001-100000, 100001+ |
size.applications | How many applications are registered across all projects. | one of 0, 1, 2-10, 11-100, 101-1000, 1001-10000, 10001-100000, 100001+ |
size.apis | How many APIs (protected resources) are declared. | one of 0, 1, 2-10, 11-100, 101-1000, 1001-10000, 10001-100000, 100001+ |
size.administrators | How many administrator accounts exist. | one of 0, 1, 2-10, 11-100, 101-1000, 1001-10000, 10001-100000, 100001+ |
size.monthlyActiveUsers | People who received tokens this calendar month, summed over projects. | one of 0, 1, 2-10, 11-100, 101-1000, 1001-10000, 10001-100000, 100001+ |
day.date | The UTC day the day figures below describe: the day before the report. Left out when the server has no figures for that day yet, for example on its first day. | a date, YYYY-MM-DD |
day.tokens.<grant> | How many token responses that grant type produced that day. A grant type with none is left out. Left out when the server has no figures for that day yet. | one of 0, 1, 2-10, 11-100, 101-1000, 1001-10000, 10001-100000, 100001+; grant names are authorization_code, client_credentials, refresh_token, device_code, ciba, jwt_bearer, token_exchange |
day.serverErrors | Defects the server recorded that day: 5xx responses and faults in background work, counted whether or not its error store is on. Left out when the server has no figures for that day yet. | one of 0, 1, 2-10, 11-100, 101-1000, 1001-10000, 10001-100000, 100001+ |
Never sent
No name, email, hostname, issuer URL or network address. No identifier of a project, an application or a person. No value of any setting: only whether the features below are on or off.
Settings whose on/off is reported
authorization.allowOmittingSingleRegisteredRedirectUri: Allow omitting a single registered redirect_uripkce.required: Require a PKCE code challengepar.enabled: Enable PAR (RFC 9126)par.allowUnregisteredRedirectUris: Allow unregistered redirect_uris via PARdpop.enabled: Enable DPoP (RFC 9449)dpop.requireNonce: Require DPoP nonceintrospection.enabled: Enable Token Introspection (RFC 7662)jwtIntrospection.enabled: JWT introspection responses (RFC 9701)responseMode.jwt.enabled: Enable JARMfapi.enabled: Enable FAPI behavioursipsieSl1.enabled: Enforce the IPSIE SL1 profileclientAuth.issuerOnlyAudience: Accept client assertions audienced at the issuer onlyclientCredentials.enabled: Enable client_credentials granttokenExchange.enabled: Enable token exchange for ID-JAGjwtBearer.enabled: Enable the JWT bearer grantbackchannelLogout.enabled: Enable Back-Channel Logoutencryption.enabled: Enable encryption featuresuserinfo.enabled: Enable the UserInfo endpointjwtUserinfo.enabled: JWT UserInfo responsesrevocation.enabled: Enable Token Revocation (RFC 7009)globalTokenRevocation.enabled: Enable Global Token Revocation (Okta Universal Logout)rpInitiatedLogout.enabled: Enable RP-Initiated LogoutclaimsParameter.enabled: Enable the claims parametermTLS.enabled: Enable mTLS features (RFC 8705)mTLS.certificateBoundAccessTokens: Certificate-bound access tokensmTLS.selfSignedTlsClientAuth: self_signed_tls_client_auth methodmTLS.tlsClientAuth: tls_client_auth methoddeviceFlow.enabled: Enable Device Authorization Grant (RFC 8628)ciba.enabled: Enable CIBA flowplans.enabled: Enforce plansrequestObjects.enabled: Enable Request Objects (JAR)requestObjects.requireSignedRequestObject: Require signed request objectsresourceIndicators.enabled: Enable Resource Indicators (RFC 8707)richAuthorizationRequests.enabled: Enable RAR (RFC 9396)cors.enabled: Enable cross-origin access for browser clientsrateLimit.enabled: Refuse a calling origin that exceeds its request allowancefederation.enabled: Enable sign-in through an upstream identity providermcp.enabled: Enable the administrative MCP control planescim.enabled: Enable SCIM 2.0 provisioningscim.secretCredentials: Allow client-secret credentials for SCIMscim.staticTokens: Allow static tokens for SCIMscim.strict: Strict SCIM: refuse non-conformant requestserrorStore.enabled: Record internal server faultssentry.enabled: Report recorded faults to Sentryregistration.enabled: Enable Dynamic Client Registrationregistration.issueRegistrationAccessToken: Issue registration access tokenclientIdMetadataDocument.enabled: Accept a URL as a client identifierregistrationManagement.enabled: Enable registration management (RFC 7592)registrationManagement.rotateRegistrationAccessToken: Rotate registration access tokenconformIdTokenClaims: Conform ID Token claimsattackReports.enabled: Report attacking addresses to FoxTrust
Settings that are not reported
telemetry.enabled: a report exists only while it is on, so it would always read true.mTLS.trustProxyCertificateHeader: describes the deployment's proxy in front of the server, not a feature anyone adopts.