# Copy this file to config.local.yaml and adjust values for your local environment. # config.local.yaml is gitignored. server: port: 8080 mode: debug # Production should restrict this to real frontend origins. # Empty keeps local development CORS permissive. allowed_origins: [] security_headers: enabled: true trusted_proxies: - 127.0.0.1 - ::1 - 10.42.0.0/16 - 10.43.0.0/16 - 172.16.0.0/12 database: host: localhost port: 5432 user: geo password: geo_dev dbname: geo sslmode: disable max_open_conns: 12 max_idle_conns: 3 monitoring_database: host: localhost port: 5433 user: geo password: geo_dev dbname: geo_monitoring sslmode: disable max_open_conns: 8 max_idle_conns: 2 rabbitmq: url: amqp://geo:geo_dev@localhost:5672/geo monitor_result_exchange: monitor.result monitor_result_routing_key: monitor.result.ingest monitor_result_queue: monitor.result.ingest monitor_result_dlx: monitor.result.dlx monitor_result_dlq: monitor.result.ingest.dlq monitor_result_dlq_routing_key: monitor.result.ingest.dlq generation_exchange: generation.task generation_routing_key: generation.task.run generation_queue: generation.task.run generation_dlx: generation.task.dlx generation_dlq: generation.task.run.dlq generation_dlq_routing_key: generation.task.run.dlq generation_event_exchange: generation.event desktop_account_health_exchange: desktop.account.health desktop_account_health_routing_key: desktop.account.health.report desktop_account_health_queue: desktop.account.health.report desktop_account_health_dlx: desktop.account.health.dlx desktop_account_health_dlq: desktop.account.health.report.dlq desktop_account_health_dlq_routing_key: desktop.account.health.report.dlq template_assist_exchange: template.assist template_assist_routing_key: template.assist.run template_assist_queue: template.assist.run template_assist_dlx: template.assist.dlx template_assist_dlq: template.assist.run.dlq template_assist_dlq_routing_key: template.assist.run.dlq compliance_review_exchange: compliance.review compliance_review_routing_key: compliance.review.run compliance_review_queue: compliance.review.run compliance_review_dlx: compliance.review.dlx compliance_review_dlq: compliance.review.run.dlq compliance_review_dlq_routing_key: compliance.review.run.dlq consumer_prefetch: 10 publish_channel_pool_size: 32 # Prefer environment override when needed: # export RABBITMQ_URL=amqp://geo:geo_dev@localhost:5672/geo scheduler: dispatch_interval: 15s dispatch_timeout: 30s dispatch_batch_size: 100 dispatch_concurrency: 4 generation_queue_backpressure_limit: 1000 monitoring_workers: result_ingest_concurrency: 4 projection_rebuild_concurrency: 2 membership: default_plan_code: free plans: - code: free name: Free article_generation: 3 article_quota_cycle: lifetime ai_points_monthly: 0 ai_point_base_chars: 1000 image_storage_bytes: 10485760 company_limit: 1 subscription_duration: 72h contact_admin_on_expiry: true - code: plus name: Plus article_generation: 200 article_quota_cycle: monthly ai_points_monthly: 0 ai_point_base_chars: 1000 image_storage_bytes: 524288000 company_limit: 1 subscription_duration: 720h - code: pro name: Pro article_generation: 400 article_quota_cycle: monthly ai_points_monthly: 1500 ai_point_base_chars: 1000 image_storage_bytes: 1073741824 company_limit: 2 subscription_duration: 720h brand_library: free_brand_limit: 1 paid_brand_limit: 2 question_limits_by_plan: default: 25 free: 5 plus: 25 pro: 50 max_keywords: 5 max_questions_per_keyword: 5 redis: addr: localhost:6379 qdrant: url: localhost:6334 collection: geo_knowledge_chunks timeout: 15s object_storage: provider: minio endpoint: localhost:9000 bucket: geo-private use_ssl: false public_base_url: "" region: "" # Prefer environment override for secrets: # export OBJECT_STORAGE_ACCESS_KEY=minioadmin # export OBJECT_STORAGE_SECRET_KEY=minioadmin # MinIO example: # provider: minio # endpoint: localhost:9000 # bucket: geo-private # use_ssl: false # # Aliyun OSS example: # provider: aliyun # endpoint: https://oss-cn-hangzhou.aliyuncs.com # bucket: your-bucket # region: cn-hangzhou # use_ssl: true # public_base_url: https://your-bucket.oss-cn-hangzhou.aliyuncs.com # export OBJECT_STORAGE_ACCESS_KEY=your-access-key # export OBJECT_STORAGE_SECRET_KEY=your-secret-key jwt: secret: "your-local-secret" access_ttl: 15m refresh_ttl: 720h auth: login_guard: enabled: true password_cipher: # Empty private_key_pem generates a per-process key. Production multi-instance deployments # should inject the same private key through AUTH_PASSWORD_CIPHER_PRIVATE_KEY_PEM. enabled: true key_id: login-password-rsa-oaep-v1 private_key_pem: "" llm: provider: ark base_url: https://ark.cn-beijing.volces.com/api/v3 model: doubao-seed-2-0-lite-260215 knowledge_url_model: doubao-seed-2-0-mini-260215 timeout: 2m max_output_tokens: 4000 temperature: 0.7 reasoning_effort: minimal web_search_limit: 3 # top_p: 0.95 # Prefer environment override for secrets: # export LLM_API_KEY=your-api-key compliance: enabled: true llm_judge_enabled: false snapshot_reload_interval: 30s publish_gate_timeout: 800ms review_worker_concurrency: 1 review_worker_timeout: 45s review_max_attempts: 3 # Emergency deployment kill switch: # export COMPLIANCE_ENABLED=false retrieval: provider: siliconflow base_url: https://api.siliconflow.cn/v1 embedding_model: BAAI/bge-m3 reranker_model: BAAI/bge-reranker-v2-m3 timeout: 30s chunk_size: 900 chunk_overlap: 120 embedding_batch_size: 16 recall_limit: 12 rerank_top_n: 6 max_chunks_per_doc: 6 overlap_tokens: 60 # Prefer environment override for retrieval api key: # export SILICONFLOW_API_KEY=your-siliconflow-api-key # or export RETRIEVAL_API_KEY=your-retrieval-api-key generation: queue_size: 128 worker_concurrency: 8 stream_enabled: false article_timeout: 8m browser_fetch: enabled: false provider: lightpanda service_url: http://localhost:8082 token: dev-browser-fetch-token queue_size: 64 worker_concurrency: 2 request_timeout: 45s cache_ttl: 6h allowed_domains: - zhuanlan.zhihu.com - zhihu.com - baidu.com trigger_status: - 403 - 429 - 500 - 502 - 503 - 504