---
title: Environment variables
description: The four variables Reed reads.
---

Reed reads four environment variables. There is no `.env` file and no hidden
configuration — everything else lives in `docs.json`.

## Caches

<ParamField name="REED_STORE_DIR" type="path" default="~/.reed/pnpm-store">
  The pinned dependency store that `reed prefetch` fills and that offline installs read
  from.
</ParamField>

<ParamField name="REED_COREPACK_HOME" type="path">
  Overrides where Corepack caches its pinned package-manager binary. **Unset by default**
  — Reed does not invent a value here, it leaves Corepack's own `COREPACK_HOME`
  resolution in effect.
</ParamField>

The distinction matters in CI. `REED_STORE_DIR` has a Reed-owned default, so it exists
whether or not you set it. `REED_COREPACK_HOME` does not: setting it is how you move
Corepack's cache somewhere your CI can persist. Point it at the same directory you set
`COREPACK_HOME` to, and cache both paths — see
[Offline builds in CI](/docs/ship/ci-offline).

## Time limits

<ParamField name="REED_BUILD_TIMEOUT_MS" type="integer" default="1800000">
  Ceiling for the site build — 30 minutes.
</ParamField>

<ParamField name="REED_INSTALL_TIMEOUT_MS" type="integer" default="900000">
  Ceiling for dependency installation and prefetch — 15 minutes.
</ParamField>

Set either to `0` to remove its ceiling.

The defaults are generous on purpose: these exist to turn a hang into an error, not to
police slow builds. A build that would run forever fails with a Reed diagnostic instead
of occupying a runner until someone notices.

A negative or non-numeric value is **rejected**, not ignored. A typo cannot silently
restore an unbounded build — the failure mode of a mistyped ceiling is a clear error, not
a build that quietly hangs.

## Not environment variables

`REED_COMPILER_VERSION` appears in Reed's source and in cache keys, but it is a build-time
constant, not something you set. Overriding it is not a supported way to influence
caching.
