# ------------------------------------------------------------------- # Chain / 链配置 # ------------------------------------------------------------------- # 默认 BNB Smart Chain Testnet。Legacy 可切换为 monad-testnet。 CHAIN_PRESET=bnb-testnet CHAIN_ID=97 RPC_URL=https://bsc-testnet-dataseed.bnbchain.org # Optional independent transport used by token-risk-verification historical replay. RISK_VERIFIER_RPC_URL=https://bsc-testnet-rpc.publicnode.com ADVANTAGE_TOKEN_RISK_SECURITY_REVIEW_PATH=./evidence/experiment-2-token-risk/security-review-output.json TOKEN_RISK_ENRICHMENT_RPC_URL=https://bsc-testnet-rpc.publicnode.com ADVANTAGE_TOKEN_RISK_ENRICHMENT_PATH=./evidence/experiment-2-token-risk/indexed-enrichment-output.json ADVANTAGE_AUDIT_MODEL_CANDIDATE_PATH=./evidence/experiment-1-contract-audit/baseline-output-candidate.json ADVANTAGE_TOKEN_RISK_MODEL_CANDIDATE_PATH=./evidence/experiment-2-token-risk/baseline-output-candidate.json ADVANTAGE_DUE_DILIGENCE_MODEL_CANDIDATE_PATH=./evidence/experiment-3-due-diligence/baseline-output-candidate-attempt-2.json ADVANTAGE_DUE_DILIGENCE_MODEL_SLITHER_PATH=./evidence/experiment-3-due-diligence/baseline-slither-output-attempt-2.json # 仅 CHAIN_PRESET=monad-testnet 时作为兼容回退。 MONAD_RPC_URL=https://testnet-rpc.monad.xyz # ------------------------------------------------------------------- # Hunter Agent(消费方) # ------------------------------------------------------------------- # Hunter 所有者/发送方私钥。保留 0x... 可进入 mock 支付模式。 HUNTER_PRIVATE_KEY=0x... # Hunter HTTP 端口。 HUNTER_PORT=3002 # true:使用 ReAct LLM 流程;false:使用 scripted 固定流程。 HUNTER_USE_REACT=false # Commander(ReAct) 模式预算上限(仅 mode=commander 生效)。 # 最多允许的 phase 数量。 COMMANDER_MAX_PHASES=6 # 单个 phase 最大执行时长(毫秒);超时记为 phase 失败,供 planner 决定是否重试。 COMMANDER_PHASE_TIMEOUT_MS=45000 # 单次子任务最大预算(当前资产的最小单位)。 COMMANDER_MAX_PER_PHASE_AMOUNT=20000000000000000 # 整个 mission 总预算上限(当前资产的最小单位)。 COMMANDER_MAX_TOTAL_AMOUNT=60000000000000000 # x402 模式使用独立的 $U 预算(18 decimals),不复用 tBNB 额度。 COMMANDER_X402_MAX_PER_PHASE_AMOUNT=1000000000000000000 COMMANDER_X402_MAX_TOTAL_AMOUNT=3000000000000000000 # Hunter 对外公开基础地址(用于 identity/capability 元数据)。 HUNTER_PUBLIC_ENDPOINT=http://localhost:3002 HUNTER_MISSION_STORE_PATH=./registry/missions.json HUNTER_RUN_STORE_PATH=./registry/runs.json # file is the single-process fallback; use postgres for local/real multi-replica runtime. # These credentials are local-Docker defaults only and must never be reused in production. STORE_BACKEND=file DATABASE_URL=postgresql://agora_runtime:agora_runtime_local@127.0.0.1:55432/agora_mesh AGORA_MIGRATION_DATABASE_URL=postgresql://agora_migrator:agora_migrator_local@127.0.0.1:55432/agora_mesh POSTGRES_POOL_MAX=8 POSTGRES_STATEMENT_TIMEOUT_MS=15000 POSTGRES_LOCK_TIMEOUT_MS=3000 ADVANTAGE_AUDIT_GROUND_TRUTH_PATH=./evidence/experiment-1-contract-audit/ground-truth.json # 可选固定 agentId;留空则自动按 chainId:wallet 生成。 HUNTER_AGENT_ID= # 可读身份信息字段。 HUNTER_AGENT_NAME=Agora Hunter HUNTER_AGENT_DESCRIPTION= HUNTER_AGENT_IMAGE= # 信任模型标签,逗号分隔。 HUNTER_TRUST_MODELS=reputation,crypto-economic # 可选直连发现探测地址(逗号分隔 URL)。 DYNAMIC_AGENT_ENDPOINTS=http://localhost:3001,http://localhost:3004,http://localhost:3005 # 合约地址解析使用 Etherscan V2(chainid=97 可定位 BSC Testnet)。 # ETHERSCAN_API_KEY 优先;BSCSCAN_API_KEY 作为兼容别名。 ETHERSCAN_API_KEY= BSCSCAN_API_KEY= SECURITY_SOURCE_TIMEOUT_MS=10000 SECURITY_MAX_SOURCE_BYTES=512000 # Hunter / Writer 接收结构化源码 JSON 的 HTTP body 上限,应高于源码上限。 SECURITY_HTTP_BODY_LIMIT=3mb # ------------------------------------------------------------------- # Public HTTP/API hardening # ------------------------------------------------------------------- # Exact browser origins allowed by Hunter, Registry, and service hosts. CORS_ALLOWED_ORIGINS=http://localhost:3000 # Shared fallback for protected Hunter run/authority/mission APIs, Registry writes, # and the legacy non-x402 Writer execute endpoint. Use distinct overrides in production. API_AUTH_TOKEN= HUNTER_API_AUTH_TOKEN= REGISTRY_API_AUTH_TOKEN= WRITER_API_AUTH_TOKEN= HUNTER_RATE_LIMIT_PER_MINUTE=120 REGISTRY_RATE_LIMIT_PER_MINUTE=240 WRITER_RATE_LIMIT_PER_MINUTE=180 REGISTRY_HTTP_BODY_LIMIT=512kb # Development defaults to true; production defaults to false. REGISTRY_ALLOW_LOCAL_SERVICE_ENDPOINTS=true # Optional comma-separated explicit exceptions for controlled production service hosts. REGISTRY_ALLOWED_SERVICE_HOSTS= HUNTER_ALLOW_LOCAL_SERVICE_ENDPOINTS=true HUNTER_ALLOWED_SERVICE_HOSTS= # true:启动时调用 IdentityRegistry.register(agentURI)。 HUNTER_REGISTER_ONCHAIN=false # Read-only owner address lets production display a previously registered identity # without giving the long-running Hunter process the owner private key. HUNTER_ONCHAIN_OWNER_ADDRESS= # ERC-8004 registration JSON URI。留空默认 {HUNTER_PUBLIC_ENDPOINT}/agent-registration.json HUNTER_AGENT_URI= # true:注册后为 Hunter 调用 setAgentWallet(...)。 HUNTER_SET_AGENT_WALLET_ONCHAIN=false # setAgentWallet 目标钱包地址。留空时回退到 IDENTITY_AGENT_WALLET_ADDRESS, # 再回退到 Hunter 所有者钱包。 HUNTER_AGENT_WALLET_ADDRESS= # 新钱包签名私钥(必须控制 HUNTER_AGENT_WALLET_ADDRESS)。 # 当目标钱包与 Hunter 所有者钱包不一致时必填。 HUNTER_AGENT_WALLET_SIGNER_PRIVATE_KEY= # true:将反馈写入链上 ReputationRegistry。 HUNTER_SUBMIT_ONCHAIN_FEEDBACK=false # Hunter 自动提交反馈时使用的默认标签。 HUNTER_FEEDBACK_TAG1=quality HUNTER_FEEDBACK_TAG2=delivery # ------------------------------------------------------------------- # Writer Agent(提供方) # ------------------------------------------------------------------- # Writer 所有者/发送方私钥。保留 0x... 可进入 mock 支付模式。 WRITER_PRIVATE_KEY=0x... # 可选显式 Writer 地址。mock 模式下会忽略。 WRITER_ADDRESS=0x... # Writer HTTP 端口。 WRITER_PORT=3001 # true:在 Writer /execute 中跳过链上支付校验。 WRITER_SKIP_PAYMENT_VERIFICATION=false # Writer 对外公开基础地址。 WRITER_PUBLIC_ENDPOINT=http://localhost:3001 # Service Host Profile。`npm run dev:auditor` / `dev:verifier` 会分别覆盖此值。 SERVICE_PROFILE=all # 可选逗号分隔 Skill ID;留空时由 Profile 自动选择。 SERVICE_SKILL_IDS= # Auditor 与 Verifier 必须使用不同进程、端口、钱包和 Agent ID。 AUDITOR_PORT=3001 AUDITOR_PUBLIC_ENDPOINT=http://localhost:3001 AUDITOR_PRIVATE_KEY=0x... AUDITOR_AGENT_ID= AUDITOR_AGENT_NAME=Agora Security Auditor AUDITOR_X402_PRICE_AMOUNT=500000000000000000 AUDITOR_X402_PAY_TO_ADDRESS= AUDITOR_X402_FACILITATOR_PRIVATE_KEY= AUDITOR_X402_RECEIPT_STORE_PATH=./registry/x402-auditor-receipts.json AUDITOR_LLM_TIMEOUT_MS=300000 VERIFIER_PORT=3004 VERIFIER_PUBLIC_ENDPOINT=http://localhost:3004 VERIFIER_PRIVATE_KEY=0x... VERIFIER_AGENT_ID= VERIFIER_AGENT_NAME=Agora Independent Verifier VERIFIER_X402_PRICE_AMOUNT=250000000000000000 VERIFIER_X402_PAY_TO_ADDRESS= VERIFIER_X402_FACILITATOR_PRIVATE_KEY= VERIFIER_X402_RECEIPT_STORE_PATH=./registry/x402-verifier-receipts.json VERIFIER_LLM_TIMEOUT_MS=300000 # Read-only BNB RPC investigator. Use a distinct wallet before enabling paid x402 delivery. INVESTIGATOR_PORT=3005 INVESTIGATOR_PUBLIC_ENDPOINT=http://localhost:3005 INVESTIGATOR_PRIVATE_KEY=0x... INVESTIGATOR_AGENT_ID= INVESTIGATOR_AGENT_NAME=Agora Onchain Investigator INVESTIGATOR_RPC_TIMEOUT_MS=10000 INVESTIGATOR_RPC_ATTEMPTS=2 INVESTIGATOR_X402_ENABLED=false INVESTIGATOR_X402_PRICE_AMOUNT=350000000000000000 INVESTIGATOR_X402_PAY_TO_ADDRESS= INVESTIGATOR_X402_FACILITATOR_PRIVATE_KEY=0x... INVESTIGATOR_X402_RECEIPT_STORE_PATH=./registry/x402-investigator-receipts.json # Optional Slither executable override. The repo-local .venv-slither is auto-discovered. SLITHER_BIN= # 广播给发现系统的服务元数据。 WRITER_SERVICE_ID=writer-v1 WRITER_SERVICE_NAME=AI Content Writer WRITER_SERVICE_DESCRIPTION= # 可选固定 agentId;留空则自动按 chainId:wallet 生成。 WRITER_AGENT_ID= # 可读身份信息字段。 WRITER_AGENT_NAME=Agora Writer WRITER_AGENT_DESCRIPTION= WRITER_AGENT_IMAGE= # 信任模型标签,逗号分隔。 WRITER_TRUST_MODELS=reputation,crypto-economic # true:启动时调用 IdentityRegistry.register(agentURI)。 WRITER_REGISTER_ONCHAIN=false # 传给 register(agentURI) 的 URI。留空默认 {WRITER_PUBLIC_ENDPOINT}/identity WRITER_AGENT_URI= # true:注册后为 Writer 调用 setAgentWallet(...)。 WRITER_SET_AGENT_WALLET_ONCHAIN=false # setAgentWallet 目标钱包地址。留空时回退到 IDENTITY_AGENT_WALLET_ADDRESS, # 再回退到 Writer 所有者钱包。 WRITER_AGENT_WALLET_ADDRESS= # 新钱包签名私钥(必须控制 WRITER_AGENT_WALLET_ADDRESS)。 # 当目标钱包与 Writer 所有者钱包不一致时必填。 WRITER_AGENT_WALLET_SIGNER_PRIVATE_KEY= # Writer 能力广告心跳周期(毫秒)与动态注册 TTL(秒)。 WRITER_ADVERTISE_INTERVAL_MS=30000 WRITER_ADVERTISE_TTL_SECONDS=120 # true:writer /reputation 读取链上信誉摘要。 WRITER_READ_ONCHAIN_REPUTATION=false # ------------------------------------------------------------------- # 前端 # ------------------------------------------------------------------- FRONTEND_PORT=3000 # Server-only URLs used by Next.js SSR and same-origin rewrites in production. HUNTER_INTERNAL_URL=http://localhost:3002 REGISTRY_INTERNAL_URL=http://localhost:3003 WRITER_INTERNAL_URL=http://localhost:3001 # Browser defaults are same-origin /api/* paths; override only for split-host deployments. NEXT_PUBLIC_HUNTER_URL=/api/hunter NEXT_PUBLIC_REGISTRY_URL=/api/registry NEXT_PUBLIC_WRITER_URL=/api/auditor # ------------------------------------------------------------------- # x402 支付 # ------------------------------------------------------------------- # Legacy native-transfer 单次请求价格(最小单位,默认 0.01 tBNB)。 PRICE_WEI=10000000000000000 # 支付上下文超时时间(秒)。 PAYMENT_TIMEOUT_SECONDS=60 # ------------------------------------------------------------------- # Altana scoped session / x402(第二阶段 Spike) # ------------------------------------------------------------------- ALTANA_ENABLED=false ALTANA_NETWORK=bnb-testnet # Public Altana smart-wallet address used by Hunter identity and balance reads. ALTANA_WALLET_ADDRESS= ALTANA_SESSION_STORE_PATH=./registry/altana-sessions.json ALTANA_AUTHORITY_EVIDENCE_PATH=./registry/authority-evidence.json ALTANA_PAYMENT_EVIDENCE_PATHS=./registry/x402-auditor-receipts.json,./registry/x402-verifier-receipts.json # 32-byte hex/base64 key used only to encrypt the Hunter-side scoped session material. ALTANA_SESSION_ENCRYPTION_KEY= # Stable ID of an imported scoped authority. Leave empty for a generated Spike ID. ALTANA_AUTHORITY_ID= # Provision a persistent x402 authority (script remains inert without confirmation). ALTANA_X402_CONFIRM= ALTANA_X402_ADMIN_PRIVATE_KEY= # Resume an already-paid Auditor delivery and pay only the pending Verifier quote. HUNTER_RESUME_CONFIRM= HUNTER_RESUME_MISSION_ID= # Comma-separated Auditor / Verifier seller wallet addresses. ALTANA_X402_ALLOWED_RECIPIENTS= # $U atomic amount; $U uses 18 decimals. Default is 2 $U per day. ALTANA_X402_DAILY_LIMIT=2000000000000000000 # Session lifetime in seconds, capped at 7 days by the provisioning script. ALTANA_X402_EXPIRY_SECONDS=86400 # The Spike is inert unless this exact confirmation phrase is provided. ALTANA_SPIKE_CONFIRM= # Dedicated development-only Testnet Admin key; never use a production or personal wallet key. ALTANA_SPIKE_ADMIN_PRIVATE_KEY= ALTANA_SPIKE_RECIPIENT= # Native tBNB amount in wei. The default in the script is 1 wei. ALTANA_SPIKE_AMOUNT=1 X402_ENABLED=false X402_RAIL=permit2 # Retry the exact same signed/idempotent delivery after a transport failure. X402_DELIVERY_ATTEMPTS=2 # Seller-side local facilitator EOA used by the official Merchant Guard. X402_FACILITATOR_PRIVATE_KEY= # Optional seller recipient; must match the active Service Profile wallet identity. X402_PAY_TO_ADDRESS= # $U uses 18 decimals: 500000000000000000 = 0.5 $U. # Profile defaults: Auditor 0.5, Verifier 0.25, generic Writer 0.1. X402_PRICE_AMOUNT= X402_MIN_PRICE_AMOUNT=1 X402_MAX_PRICE_AMOUNT=10000000000000000000 X402_RECEIPT_STORE_PATH= # Source-bound Agent Advantage evidence inputs. ADVANTAGE_AUDIT_GROUND_TRUTH_PATH=./evidence/experiment-1-contract-audit/ground-truth.json ADVANTAGE_AUDIT_TOOL_BASELINE_PATH=./evidence/experiment-1-contract-audit/tool-baseline-output.json ADVANTAGE_PAID_DUE_DILIGENCE_PATH=./evidence/experiment-3-due-diligence/paid-run-final-output.json ERC8183_ENABLED=false # ------------------------------------------------------------------- # LLM(OpenAI 兼容) # ------------------------------------------------------------------- # 如果同时配置 KIMI_API_KEY 和 OPENAI_API_KEY,优先使用 Kimi。 OPENAI_API_KEY=sk-... OPENAI_MODEL=gpt-4o-mini # 可选自定义 OpenAI 兼容 base URL。 OPENAI_BASE_URL= # Kimi(Moonshot)OpenAI 兼容端点。 KIMI_API_KEY= KIMI_MODEL=kimi-k2.5 KIMI_BASE_URL=https://api.moonshot.cn/v1 # Hard wall-clock limit for service-host model calls; profile-specific *_LLM_TIMEOUT_MS wins. LLM_TIMEOUT_MS=300000 # ------------------------------------------------------------------- # Registry / 共享持久化 / 链上合约 # ------------------------------------------------------------------- # Registry 服务监听端口和访问 URL(hunter/writer 会用到)。 REGISTRY_PORT=3003 REGISTRY_SERVICE_URL=http://localhost:3003 # 静态服务注册表路径。 REGISTRY_PATH=./registry/services.json # 动态服务注册表持久化路径。 DYNAMIC_REGISTRY_PATH=./registry/dynamic-services.json # 反馈持久化路径。 FEEDBACK_STORE_PATH=./registry/feedback-store.json # 服务级反馈与声誉聚合持久化路径。 SERVICE_FEEDBACK_STORE_PATH=./registry/service-feedback-store.json # 链上身份状态持久化路径(注册信息 + wallet 绑定交易信息)。 ONCHAIN_IDENTITY_STORE_PATH=./registry/onchain-identity-store.json # ERC-8004 合约地址。 IDENTITY_REGISTRY_ADDRESS= REPUTATION_REGISTRY_ADDRESS= # setAgentWallet 的全局目标地址/签名私钥回退值。 # 各 Agent 自身变量(HUNTER_*/WRITER_*)优先级更高。 IDENTITY_AGENT_WALLET_ADDRESS= IDENTITY_AGENT_WALLET_SIGNER_PRIVATE_KEY= # setAgentWallet 签名参数配置。 # 签名 deadline 窗口(当前时间 + N 秒)。 IDENTITY_SET_WALLET_DEADLINE_SECONDS=300 # EIP-712 的 domain 名称/版本 和 primary type 名称。 IDENTITY_SET_WALLET_DOMAIN_NAME=ERC-8004 IdentityRegistry IDENTITY_SET_WALLET_DOMAIN_VERSION=1.1 IDENTITY_SET_WALLET_TYPE_NAME=SetAgentWallet # typed message 是否包含 owner 字段。 IDENTITY_SET_WALLET_INCLUDE_OWNER=false # true:当当前 domain/type 签名失败时,自动回退 legacy 配置再重试。 IDENTITY_SET_WALLET_ALLOW_LEGACY_FALLBACK=true ## Optional second audit provider (not included in dev:all until explicitly configured). # Separate persistent wallet and gas-funded facilitator are required for paid mode. # Never reuse the Auditor wallet. Blank keys leave this profile unconfigured. SENTINEL_PRIVATE_KEY= SENTINEL_X402_FACILITATOR_PRIVATE_KEY= SENTINEL_PORT=3006 SENTINEL_PUBLIC_ENDPOINT=http://localhost:3006 SENTINEL_X402_PRICE_AMOUNT=400000000000000000 SENTINEL_X402_RECEIPT_STORE_PATH=./registry/x402-sentinel-receipts.json # Optional model isolation: kimi or openai; blank inherits the shared model provider. SENTINEL_LLM_PROVIDER= SENTINEL_LLM_MODEL= SENTINEL_LLM_BASE_URL= SENTINEL_KIMI_API_KEY= SENTINEL_OPENAI_API_KEY= SENTINEL_LLM_TIMEOUT_MS=300000 # Persist original purchase intent for unsigned replay after timeouts/restarts. X402_PURCHASE_STORE_PATH=./registry/x402-purchases