146 lines
8.6 KiB
Text
146 lines
8.6 KiB
Text
# ─────────────────────────────────────────────────────────────
|
||
# 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
|