> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stellarium.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuration

> Start options and environment variables for a stellarium-ts node.

## Start options

`node.start(fastify, options)` accepts `StellariumNodeOptions`:

| Option | Default | Purpose |
| - | - | - |
| `port` | `3000` | Port Fastify listens on |
| `host` | `0.0.0.0` | Interface Fastify binds to |
| `startingPeer` | none | Origin of a peer to bootstrap from, without the `/v1` suffix. See [Joining a network](/concepts/network#joining-a-network). |

## Environment variables

Importing `StellariumNode` loads [dotenv](https://github.com/motdotla/dotenv), so a `.env` file in the working directory is applied automatically.

| Variable | Purpose |
| - | - |
| `BASE_URL` | Public origin of this node, for example `http://127.0.0.1:3000`. Stored on the resources this node hosts so peers know where to call them. Do not include `/v1`. |
| `SIGNING_PUBLIC_KEY` | Base64url Ed25519 public key (SPKI DER). Peers use it to verify data this node publishes. |
| `SIGNING_PRIVATE_KEY` | Base64url Ed25519 private key (PKCS8 DER), paired with the public key. Signs peer announcements, resource broadcasts, and payment vouchers. |
| `API_KEY` | Secret required as `Authorization: Bearer <API_KEY>` on `POST /v1/run`. |
| `OPERATOR_URL` | Operator API used to settle payments, **including** `/v1`, for example `http://127.0.0.1:3001/v1`. Required to receive payments. |
| `RECIPIENT_ADDRESS` | Solana address that receives payment for your resources. Referenced from your `paymentManifest`. |
| `USER_ADDRESS` | Solana address derived from this node's signing public key. Identifies the caller's escrow when this node pays for resources. |

<Note>
  `BASE_URL` excludes `/v1`, but `OPERATOR_URL` includes it, because the operator client appends `/payment` directly.
</Note>

## Generating signing keys

```bash theme={null}
node --input-type=module -e '
import { generateKeyPairSync } from "node:crypto";

const { publicKey, privateKey } = generateKeyPairSync("ed25519", {
  publicKeyEncoding: { type: "spki", format: "der" },
  privateKeyEncoding: { type: "pkcs8", format: "der" },
});

console.log(JSON.stringify({
  publicKey: publicKey.toString("base64url"),
  privateKey: privateKey.toString("base64url"),
}, null, 2));
'
```

Keep signing identities stable. A new key gives the node a new identity on the network and a different escrow address.

## Local state

The node stores the peers and resources it learns in `requestscript.db` in the current working directory. If you run more than one node on a machine, start each from its own directory so they don't share a database.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.