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

# Settings reference

> All user-configurable settings — CLI config, portfolio config, heartbeat, watch rules, webhook endpoints.

SimpleFunctions settings live in three places:

* **CLI config**: `~/.config/simplefunctions/config.json` — local-only.
* **Server config**: user-owned portfolio, heartbeat, watch, and webhook settings.
* **Per-resource config**: thesis-level kill rules, watch-rule conditions, webhook endpoint metadata.

## CLI config

`~/.config/simplefunctions/config.json`:

| Key | Type | Purpose |
| - | - | - |
| `apiKey` | string | SimpleFunctions API key (`sf_live_...`) |
| `apiUrl` | string | Override base URL (default `https://simplefunctions.dev`) |
| `kalshiKeyId` | string | Kalshi key id |
| `kalshiPrivateKeyPath` | string | Path to Kalshi PEM file |
| `polymarketWallet` | string | Polymarket wallet address |
| `dataApiKey` | string | sf-terminal Data API key (`sft_live_...`) |
| `defaultModel` | string | Default model for `sf agent` |

Read with `sf status --json`. Edit with `sf setup` or directly.

## Portfolio config

Per-user, scoped to autopilot.

| Field | Default | Purpose |
| - | - | - |
| `enabled` | false | Master on/off |
| `executionMode` | `dry-run` | `dry-run` / `live` / `halted` |
| `cronExpression` | `0 7,19 * * *` | Schedule |
| `decisionModel` | `anthropic/claude-sonnet-4.6` | LLM for tick |
| `maxTotalExposureCents` | 300000 | Risk gate |
| `maxPerMarketCents` | 100000 | Risk gate |
| `maxDailyLossCents` | 15000 | Risk gate |
| `maxPositions` | 20 | Risk gate |
| `minBalanceCents` | 10000 | Risk gate |
| `maxOrdersPerTick` | 3 | Risk gate |
| `maxSingleOrderCents` | 20000 | Risk gate |
| `cooldownAfterLossTicks` | 4 | Risk gate |
| `maxDrawdownHaltCents` | 50000 | Auto-halt threshold |
| `drawdownWarnCents` | 30000 | Soft warn threshold |
| `excludeCategories` | `['sports','esports']` | Categories to skip |
| `minAdjIy` | 100 | Minimum adjusted IY% |
| `maxLas` | 0.15 | Maximum LAS |
| `minTauDays` | 3 | Minimum days to expiry |
| `crossVenuePairsEnabled` | false | Use cross-venue pairs in decisions |

Update via `sf portfolio config <key> <value>` or `PUT /api/portfolio/config`.

## Heartbeat config (per-thesis)

| Field | Default | Purpose |
| - | - | - |
| `newsIntervalMin` | route default | News scan interval |
| `xIntervalMin` | route default | X/social scan interval |
| `evalModelTier` | route default | Model tier for evaluation |
| `monthlyBudgetUsd` | route default | Budget guardrail |
| `paused` | false | Pause heartbeat evaluation without changing thesis lifecycle status |
| `smartModel` | route default | Smart model selection toggle |
| `closedLoop` | false | Closed-loop entry/exit intent creation |

## Watch rule fields

| Field | Purpose |
| - | - |
| `condition` | `price_above` / `price_below` / `econ_release` / `gov_action` / `semantic_match` |
| `threshold` | Numeric threshold for price conditions |
| `windowSeconds` | Dedupe window |
| `channel` | `email` / `webhook` / `telegram` |
| `endpointId` | Webhook endpoint to deliver to |

## Webhook endpoint fields

| Field | Purpose |
| - | - |
| `url` | HTTPS URL (HTTP rejected) |
| `label` | Human label for the dashboard |
| `events` | Subscribed event types (default: all) |
| `secret` | Signing secret (server-issued) |
| `state` | `active` / `degraded` / `paused` |

See [Env vars](/reference/env-vars) for runtime environment.


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