# Configuration

> The voxal.json manifest, the local link cache, the auth config file, and the environment variables the CLI reads

The CLI reads a per-project manifest (`voxal.json`, committed) and a per-machine auth config
(`~/.voxal/config.json`, private). It also keeps a small link cache and reads a couple of
environment variables.

## voxal.json

The manifest lives in your app directory and tells the CLI what to deploy. Commit it.

```json title="voxal.json"
{
  "name": "my-app",
  "main": "app.jsx"
}
```

| Field | Default | Description |
| --- | --- | --- |
| `name` | none | The target project. Must match the [name rules](/cli/projects). |
| `main` | `"app.js"` | The entry file, relative to the app directory. |

There is no `app.js` versus `app.jsx` auto-detect. The `main` field is taken literally, and
JSX is allowed in `.js` files, so either extension works.

## .voxal/project.json

A local link cache, written by `init` and `deploy` after linking a project. It lets `deploy`
resolve the project without a network call, and it is gitignored automatically.

```json title=".voxal/project.json"
{ "name": "my-app" }
```

## ~/.voxal/config.json

Your per-machine config, written by `voxal login`. It stores your auth token and account
email. The directory and file are created with private (owner-only) permissions.

<Callout type="warn">
Treat this file as a secret. If it leaks, run [`voxal logout`](/cli/auth) to revoke the token.
</Callout>

## Environment variables

| Variable | Description |
| --- | --- |
| `VOXAL_TOKEN` | A token to authenticate non-interactive commands, such as a CI deploy. Equivalent to passing `--token`. |
| `NO_COLOR` | Set to any value to disable colored output. |

---

Source: https://docs.voxal.sh/cli/configuration
