-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
103 lines (91 loc) · 5.63 KB
/
Copy path.env.example
File metadata and controls
103 lines (91 loc) · 5.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# ─────────────────────────────────────────────────────────────────────────────
# Nectar — environment. EVERY var below is OPTIONAL for `pnpm demo`.
# With an empty .env the app boots fully in mock mode against a local anvil fork.
# ─────────────────────────────────────────────────────────────────────────────
# ── Chain ────────────────────────────────────────────────────────────────────
# Arc testnet. Set CHAIN_MODE=arc to target the real testnet (needs a funded key).
# CHAIN_MODE=anvil | arc (default: anvil — zero-credential demo)
CHAIN_MODE=anvil
ARC_RPC_URL=https://rpc.testnet.arc.network
ARC_CHAIN_ID=5042002
ARC_EXPLORER=https://testnet.arcscan.app
ANVIL_RPC_URL=http://127.0.0.1:8545
ANVIL_CHAIN_ID=31337
# Funded Arc testnet private key. Required ONLY when CHAIN_MODE=arc.
# In anvil mode the well-known anvil account #0 key is used automatically.
AGENT_PRIVATE_KEY=
# ── Token addresses (Arc testnet). Decimals are ALWAYS read on-chain. ────────
USDC_ADDRESS=0x3600000000000000000000000000000000000000
EURC_ADDRESS=0x89B50855Aa3bE2F677cD6303Cec089B5F319D72a
USYC_ADDRESS=0xe9185F0c5F296Ed1797AaE4238D26CCaBEadb86C
FX_ESCROW_ADDRESS=0x867650F5eAe8df91445971f14d89fd84F0C9a9f8
PERMIT2_ADDRESS=0x000000000022D473030F116dDEE9F6B43aC78BA3
# ── LLM (Forge door #1) ──────────────────────────────────────────────────────
# Absent -> Forge falls back to the 12-template library + parametric mutation.
# Present -> real Claude generation + plain-English compilation.
ANTHROPIC_API_KEY=
ANTHROPIC_MODEL=claude-opus-4-8
# ── Circle (optional; scaffolded, activates when key present) ────────────────
CIRCLE_API_KEY=
CIRCLE_ENTITY_SECRET=
CIRCLE_WALLET_SET_ID=
# ── StableFX (optional; mock RFQ used until KYB clears) ──────────────────────
STABLEFX_API_KEY=
# ── Oracles ──────────────────────────────────────────────────────────────────
PYTH_HERMES_URL=https://hermes.pyth.network
# Absent network -> synthetic deterministic dataset is generated & hash-stamped.
CHAINLINK_CROSSCHECK=false
# ── Services ─────────────────────────────────────────────────────────────────
AGENT_PORT=8787
METER_PORT=8788
RUNTIME_PORT=8799
WEB_PORT=3000
NEXT_PUBLIC_AGENT_URL=http://localhost:8787
# Split-topology service URLs. Default to loopback for the single-box demo; set
# these when the Python runtime / meter run on a different host from the agent.
# RUNTIME_URL=http://runtime.internal:8799
# METER_URL=http://meter.internal:8788
# ── Production hardening ─────────────────────────────────────────────────────
# OPERATOR_TOKEN and WEB_ORIGINS are REQUIRED whenever CHAIN_MODE=arc *or*
# NODE_ENV=production — the agent refuses to boot without them (assertConfig).
# NODE_ENV=production # turns on request logging + info-level logs
# LOG_LEVEL=info # pino level: trace|debug|info|warn|error|fatal
#
# Bearer token gating the operator control surface (/api/control/*, ledger
# settle). MUST be >= 24 chars of entropy in arc mode. Generate with:
# openssl rand -hex 32
# OPERATOR_TOKEN=
#
# Comma-separated browser origins allowed by CORS. In arc mode the server
# refuses to boot without this — it must not reflect arbitrary origins.
# WEB_ORIGINS=https://nectar.vercel.app
#
# Seed for deriving per-strategy execution wallets. REQUIRED in arc mode, and
# it must NOT equal AGENT_PRIVATE_KEY — keeping them separate is what stops a
# leaked operator key from also being every strategy wallet's key.
# openssl rand -hex 32
# WALLET_DERIVATION_SEED=
#
# Sandbox network isolation: auto (use if the kernel allows) | require | off.
# `require` refuses to run untrusted strategy code without an empty netns.
# NECTAR_SANDBOX_NETNS=auto
#
# Postgres connection string. When set, the agent uses Postgres instead of the
# single-file SQLite DB — required for the split web-on-Vercel / worker topology.
# DATABASE_URL=postgres://user:pass@host:5432/nectar
# ── Meter pricing (USDC, 6dp) ────────────────────────────────────────────────
PRICE_INFERENCE_USDC=0.002
PRICE_DATA_USDC=0.0005
PRICE_BACKTEST_USDC=0.05
NANOPAY_SETTLE_BATCH=5 # IOUs per on-chain settlement tx
FORGE_EPOCH_BUDGET_USDC=5.00
# ── Pipeline tuning (demo-fast defaults) ─────────────────────────────────────
PAPER_SESSION_MINUTES=2
FORGE_TICK_MS=4000
HARNESS_TICK_MS=3000
MAX_DRAWDOWN_BPS=1200 # mandate cap; breach => demotion
DAILY_LOSS_CAP_BPS=600
STRATEGY_WALLET_CAP_USDC=100
MAX_LIVE_STRATEGIES=8 # concurrency cap; PolicyGuard is the safety limit
SESSION_TTL_HOURS=24
PROMOTION_MIN_SHARPE=0.60