morphit/morphit.config.env.example

146 lines
8.6 KiB
Text
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ─────────────────────────────────────────────────────────────
# morphit.config.env — operator-tunable knobs (TEMPLATE)
# ─────────────────────────────────────────────────────────────
#
# Copy this file to `morphit.config.env` (same directory, or set
# MORPHIT_OPERATOR_CONFIG_FILE to an absolute path), uncomment the
# lines you want to set, and restart the indexer / relay.
#
# cp morphit.config.env.example morphit.config.env
#
# ONLY the keys below are accepted here. Any other key in the file
# is a hard error at boot ("contains keys not in the operator
# allowlist") — this is deliberate, so a stray paste of a
# deployment .env (DATABASE_URL, RPC endpoints, keys, …) can't
# silently corrupt state. Deployment specifics live in your
# SystemD unit / Docker env, NOT here. See OPERATIONS.md §23.
#
# Precedence: the OS environment ALWAYS wins over this file. A key
# set in your SystemD `Environment=` is used; the value here only
# applies when the OS env doesn't already set it. Everything is
# commented out below — uncomment only what you want to override.
#
# The authoritative allowlist is `@morphit/operator-config`
# (packages/operator-config/src/index.ts); this template is kept
# in lock-step with it by operator-config-smoke.
# ─────────────────────────────────────────────────────────────
# ── Registration kill-switch ─────────────────────────────────
# Flip to false to immediately stop new account onboarding (e.g.
# during a spam wave). Existing users are unaffected. Default true.
#MORPHIT_RELAY_SIGNUP_ENABLED=true
# ── Listing fee — BLURT ──────────────────────────────────────
# Base BLURT fee per listing. Default 60 (targets ~12.5¢ at
# BLURT ≈ $0.002). As of cp372 the canonical floor is chain-pinned
# and auto-tracked from the latest morphit_release_v1; this is your
# Plan-B / local override. Deviating from the federation norm makes
# your listings look unusual to other indexers.
#MORPHIT_INDEXER_FEE_BASE_BLURT=60
# ── Listing fee — BTC ────────────────────────────────────────
# Satoshi amount targeting roughly the same USD value as the BLURT
# fee. Default 416 (~$0.25 at $60K BTC). Run
# apps/indexer/scripts/recommend-fee-amounts.ts to recompute.
#MORPHIT_INDEXER_BTC_FEE_SATOSHIS=416
# ── Listing fee — XMR ────────────────────────────────────────
# Piconero amount (1 XMR = 1e12 piconero). Default 781250000
# (~$0.25 at $320 XMR).
#MORPHIT_INDEXER_XMR_FEE_PICONERO=781250000
# ── Featured-slot bid floor ──────────────────────────────────
# BLURT cost per hour of featured-slot time. Default 50. Raise to
# keep featured slots exclusive; lower to encourage more bidding.
#MORPHIT_INDEXER_FEATURE_FEE_BLURT_PER_HOUR=50
# ── Optional BLURT/USD price feed ────────────────────────────
# Enable the composite BLURT/USD feed that powers optional USD
# echoes on /v1/listing-fee (profile balance card, listing-fee
# subtext). A server-side call from your box, never user-facing.
# Set false for a fully self-contained instance (UI shows BLURT
# only). Default true.
#MORPHIT_INDEXER_PRICE_FEED_ENABLED=true
# Emergency BLURT/USD price floor — the value served at cold-start
# before any live feed answers, and the absolute floor the feed
# never prices below. Default 0.002. Nudge this UP during a
# prolonged upstream outage so the fallback matches reality; the
# live feed takes over automatically once it's reachable again.
# (Superseded the old MORPHIT_INDEXER_BLURT_PRICE_USD name.)
#MORPHIT_INDEXER_PRICE_FEED_STATIC_FLOOR=0.002
# ── Verbose health endpoint ──────────────────────────────────
# Gates the fuller /v1/health?verbose=1 diagnostics (operator
# balances, explorer-pool state, drift/disagreement). Off by
# default (NEW-9-8). Toggle on while debugging; revert when done.
#MORPHIT_INDEXER_VERBOSE_HEALTH=false
# ── Operator-account low-balance thresholds ──────────────────
# LOW_BALANCE alerts fire when your service accounts drop below
# these (BLURT). 0 = disabled. See OPERATIONS.md §16.
#MORPHIT_INDEXER_OPERATOR_BALANCE_RELAY_THRESHOLD_BLURT=0
#MORPHIT_INDEXER_OPERATOR_BALANCE_FEES_THRESHOLD_BLURT=0
# ── Matrix surfaces ──────────────────────────────────────────
# Two DISTINCT, never-interchangeable addresses:
# ALERT_MXID (@user:server) — PRIVATE E2E DM for operator alerts
# from the matrix-bot sidecar. Never exposed via /v1/instance.
# OPERATOR_MATRIX_ROOM (#room:server) — PUBLIC room alias for
# user→operator contact. Exposed via /v1/instance and rendered
# on /support, /about-this-instance, and the footer.
#MORPHIT_MATRIX_BOT_ALERT_MXID=@you:matrix.org
#MORPHIT_INDEXER_OPERATOR_MATRIX_ROOM=#your-room:matrix.org
# ── MCP server advertisement ─────────────────────────────────
# When true, /v1/instance reports an mcp_url so AI-agent operators
# can point their clients here. The MCP service runs regardless of
# this flag — it only controls public discoverability. Default false.
#MORPHIT_MCP_ADVERTISE=false
# ── Blurt account-creation fee ───────────────────────────────
# The chain fee (BLURT) the relay stamps on each account_create.
# Set by Blurt witness consensus; currently ~100. The relay reads
# the chain's live value per signup; this is the source of truth
# when RPC is unavailable AND a sanity ceiling (the relay refuses
# to broadcast if the chain fee is >10% above this). Default 100.
# Planning: max daily spend = this × MORPHIT_RELAY_SIGNUP_DAILY_CEILING.
#MORPHIT_INDEXER_ACCOUNT_CREATION_FEE_BLURT=100
# ── Per-instance branding ────────────────────────────────────
# All optional — the indexer falls back to "Morphit" defaults, so a
# fresh instance without these still works. Read by /v1/instance and
# rendered in the title bar, footer, and contact links.
#MORPHIT_INSTANCE_NAME=alice-morphit
#MORPHIT_INSTANCE_TAGLINE=Peer-to-peer, no KYC, your keys
#MORPHIT_INSTANCE_CONTACT_URL=https://matrix.to/#/@you:matrix.org
# ── Alt-network reachability (footer "Alt-network access") ────
# Usually written by `morphit-ops init` (Tor/I2P are auto-generated).
# The wizard NEVER overwrites an address you set yourself.
#MORPHIT_INSTANCE_TOR_ADDRESS=youronionaddress.onion
#MORPHIT_INSTANCE_LOKINET_ADDRESS=yourname.loki
#MORPHIT_INSTANCE_I2P_ADDRESS=yourdest.b32.i2p
#MORPHIT_INSTANCE_I2P_B32_ADDRESS=<hash>.b32.i2p
#MORPHIT_INSTANCE_I2P_NAME_ADDRESS=yourname.i2p
#MORPHIT_INSTANCE_NOSTR_PUBKEY=npub1...
#MORPHIT_INSTANCE_ENS_NAME=yourname.eth
# ── Federation identity ──────────────────────────────────────
# OPERATOR_TAG: your registered tag (matching your
# morphit_operator_register_v1 op). When set, orders from this
# instance carry operator_tag and you earn 90% of BLURT listing
# fees; unset = treasury keeps 100%.
#MORPHIT_INSTANCE_OPERATOR_TAG=alice
# ── Per-instance SEO override ─────────────────────────────────
# Override the bundled homepage SEO copy. Empty/unset = defaults.
#MORPHIT_INSTANCE_SEO_TITLE=Alice's Morphit — trade BLURT/BTC/XMR, no KYC
#MORPHIT_INSTANCE_SEO_DESCRIPTION=A privacy-first P2P crypto marketplace.
#MORPHIT_INSTANCE_SEO_KEYWORDS=p2p,crypto,no-kyc,blurt,monero
# ── Public origin (federation discovery) ─────────────────────
# Your public HTTPS origin, read by `morphit-ops register` to know
# what to publish on-chain. A typo just keeps you out of the
# directory until corrected — not critical infra.
#MORPHIT_INSTANCE_ORIGIN=https://alice-morphit.example