# Configuration (/docs/javascript/configuration)

Tracepanel for JavaScript reads its settings from environment variables. They
are named as in the Python SDK.

## Turn it on and off [#turn-it-on-and-off]

Tracepanel is on unless `NODE_ENV` is `production`. `TRACEPANEL_ENABLED=0`
turns it off, and `TRACEPANEL_ENABLED=1` turns it on even in production mode.
`tracepanel run` sets `TRACEPANEL_ENABLED=1` for the command it runs.

When it is off, Tracepanel installs nothing, and `span()` and `trace()` run
their function and nothing else.

## Settings [#settings]

| Variable | Default | What it sets |
| --- | --- | --- |
| `TRACEPANEL_ENABLED` | on unless `NODE_ENV=production` | `0` turns Tracepanel off, `1` turns it on |
| `TRACEPANEL_SERVICE` | the name in `package.json` | the app's name in the console |
| `TRACEPANEL_DIR` | `.tracepanel` | the store, where the agent keeps the traces |
| `TRACEPANEL_ROOT` | the current directory | the project's directory, that paths in stacks are relative to |
| `TRACEPANEL_MAX_TRACES` | `2000` | how many traces the agent keeps |
| `TRACEPANEL_AGENT_BIN` | the agent npm installed | the agent to start, such as a build of your own |
| `TRACEPANEL_AGENT` | `auto` | an agent that runs elsewhere, as `tcp:host:port`, which Tracepanel never starts |
| `TRACEPANEL_CONSOLE` | the backend's agent | for the Vite plugin, the console's address, as its `console` option |

## Thresholds [#thresholds]

The agent finds the [issues](/docs/issues) by these thresholds:

| Variable | Default | What it sets |
| --- | --- | --- |
| `TRACEPANEL_N_PLUS_ONE_THRESHOLD` | `3` | how many repeats make an N+1 |
| `TRACEPANEL_N_PLUS_ONE_MIN_MS` | `5` | for Redis and other fast stores, the time the repeats must take together |
| `TRACEPANEL_SLOW_SQL_MS` | `100` | a slow query, SQL or MongoDB |
| `TRACEPANEL_SLOW_HTTP_MS` | `500` | a slow outgoing HTTP call |
| `TRACEPANEL_LONG_TRANSACTION_MS` | `500` | a long transaction |
| `TRACEPANEL_QUEUE_WAIT_MS` | `1000` | a task that waited long for a worker |
| `TRACEPANEL_LARGE_RESULT_ROWS` | `1000` | a query without a `LIMIT` that read too many rows |

## See what the SDK records [#see-what-the-sdk-records]

`TRACEPANEL_DEBUG=1` prints each span the SDK records to stderr, with its
attributes. Use it when a call doesn't show in a trace.
