1 line
15 KiB
JSON
1 line
15 KiB
JSON
{"repo": "alphasaleaidan/meridian", "files": {"litellm.config.yaml": {"eab33abbd927f7632bd1cbf031bf3e17111aaef5": {"t": 1785745218.2519526, "n": 4436, "h": "ca30ec8b1a63c0e3", "c": "# Meridian LiteLLM gateway — single-host on 127.0.0.1:4000.\n#\n# Four model aliases the rest of the stack speaks:\n# meridian-architect → Kimi K2.6 (planning + critique, swarm lead)\n# meridian-fixer → Kimi K2.6 (autonomous server fixer)\n# meridian-fast → free/cheap tier (high-volume worker subtasks)\n# meridian-local → llama-cpp qwen-server on :8002 (truly free fallback)\n#\n# Fallback chain: K2.6 → fast → local. Swap K2.6 to self-hosted vLLM later by\n# changing only the meridian-architect/meridian-fixer entries to a local\n# openai/* model + api_base. Nothing downstream changes.\n\nmodel_list:\n # --- Primary reasoning + swarm lead ---\n - model_name: \"meridian-architect\"\n litellm_params:\n model: \"openrouter/moonshotai/kimi-k2.6\"\n max_tokens: 16384\n api_key: \"os.environ/OPENROUTER_API_KEY\"\n timeout: 600\n stream_timeout: 600\n\n # --- Autonomous fixer (agentic coding) ---\n - model_name: \"meridian-fixer\"\n litellm_params:\n model: \"openrouter/moonshotai/kimi-k2.6\"\n max_tokens: 16384\n api_key: \"os.environ/OPENROUTER_API_KEY\"\n timeout: 600\n stream_timeout: 600\n\n # --- Fast / cheap tier. Groq + Cerebras keys are stale (401) — disabled until\n # refreshed; DeepSeek + SambaNova carry the tier. rpm caps throttle any\n # runaway caller (429) regardless of $-budget pricing gaps. ---\n - model_name: \"meridian-fast\"\n litellm_params:\n model: \"deepseek/deepseek-chat\"\n api_key: \"os.environ/DEEPSEEK_API_KEY\"\n rpm: 120\n - model_name: \"meridian-fast\"\n litellm_params:\n model: \"openai/Meta-Llama-3.1-405B-Instruct\"\n api_base: \"https://api.sambanova.ai/v1\"\n api_key: \"os.environ/SAMBANOVA_API_KEY\"\n rpm: 120\n # Disabled (stale keys) — re-add with rpm when refreshed:\n # groq/llama-3.3-70b-versatile (GROQ_API_KEY), cerebras/llama-3.3-70b (CEREBRAS_API_KEY)\n\n # --- DeepSeek big chat (V3 latest, ~1.6T-class MoE) — dedicated alias ---\n - model_name: \"meridian-deep\"\n litellm_params:\n model: \"deepseek/deepseek-chat\"\n api_key: \"os.environ/DEEPSEEK_API_KEY\"\n rpm: 120\n\n # --- DeepSeek R1 reasoning ---\n - model_name: \"meridian-reason\"\n litellm_params:\n model: \"deepseek/deepseek-reasoner\"\n api_key: \"os.environ/DEEPSEEK_API_KEY\"\n rpm: 120\n\n # --- Local fallback: existing llama-cpp qwen-server on :8002 (OpenAI-compatible) ---\n - model_name: \"meridian-local\"\n litellm_params:\n model: \"openai/Qwen2.5-7B-Instruct\"\n api_base: \"http://localhost:8002/v1\"\n api_key: \"sk-local-noauth\"\n timeout: 120\n\nrouter_settings:\n routing_strategy: \"simple-shuffle\"\n num_retries: 2\n timeout: 600\n fallbacks:\n - \"meridian-architect\": [\"meridian-fast\", \"meridian-local\"]\n - \"meridian-fixer\": [\"meridian-fast\", \"meridian-local\"]\n - \"meridian-deep\": [\"meridian-fast\", \"meridian-local\"]\n - \"meridian-reason\": [\"meridian-deep\", \"meridian-fast\", \"meridian-local\"]\n - \"meridian-fast\": [\"meridian-local\"]\n redis_host: \"localhost\"\n redis_port: 6379\n\nlitellm_settings:\n set_verbose: false\n drop_params: true\n cache: true\n cache_params:\n type: \"redis\"\n host: \"localhost\"\n port: 6379\n ttl: 600\n # Budget cap on total gateway spend (USD per budget_duration window).\n # The placeholder is substituted at launch time from .env.litellm:LITELLM_MAX_BUDGET\n # (see scripts/start-litellm.sh). Doing the swap in shell rather than via\n # `os.environ/X` because LiteLLM doesn't cast env-var resolved values back\n # to float — the comparison `current_spend > max_budget` then fails with a\n # TypeError surfaced as a misleading 401. Edit only LITELLM_MAX_BUDGET in\n # .env.litellm when funding more credit; committed config stays stable.\n max_budget: __LITELLM_MAX_BUDGET__\n budget_duration: \"1d\"\n\ngeneral_settings:\n store_model_in_db: false\n disable_spend_logs: false\n # Alerts route through the local Garry → Telegram bridge (PM2 entry\n # garry-litellm-alerts on 127.0.0.1:8005). Budget alerts fire at the\n # 50%/75%/90%/95%/99% thresholds against max_budget. llm_exceptions\n # catches upstream auth/quota failures so you find out about a key\n # rotation before the swarm wedges.\n alerting: [\"webhook\"]\n alert_to_webhook_url:\n budget_alerts: \"http://127.0.0.1:8005/alert\"\n llm_exceptions: \"http://127.0.0.1:8005/alert\"\n spend_reports: \"http://127.0.0.1:8005/alert\"\n alert_types:\n - \"budget_alerts\"\n - \"llm_exceptions\"\n"}, "ed4f11817ff2cb046b45f2e737b28b7a386a7dd5": {"t": 1785748833.0967293, "n": 4436, "h": "ca30ec8b1a63c0e3", "c": "# Meridian LiteLLM gateway — single-host on 127.0.0.1:4000.\n#\n# Four model aliases the rest of the stack speaks:\n# meridian-architect → Kimi K2.6 (planning + critique, swarm lead)\n# meridian-fixer → Kimi K2.6 (autonomous server fixer)\n# meridian-fast → free/cheap tier (high-volume worker subtasks)\n# meridian-local → llama-cpp qwen-server on :8002 (truly free fallback)\n#\n# Fallback chain: K2.6 → fast → local. Swap K2.6 to self-hosted vLLM later by\n# changing only the meridian-architect/meridian-fixer entries to a local\n# openai/* model + api_base. Nothing downstream changes.\n\nmodel_list:\n # --- Primary reasoning + swarm lead ---\n - model_name: \"meridian-architect\"\n litellm_params:\n model: \"openrouter/moonshotai/kimi-k2.6\"\n max_tokens: 16384\n api_key: \"os.environ/OPENROUTER_API_KEY\"\n timeout: 600\n stream_timeout: 600\n\n # --- Autonomous fixer (agentic coding) ---\n - model_name: \"meridian-fixer\"\n litellm_params:\n model: \"openrouter/moonshotai/kimi-k2.6\"\n max_tokens: 16384\n api_key: \"os.environ/OPENROUTER_API_KEY\"\n timeout: 600\n stream_timeout: 600\n\n # --- Fast / cheap tier. Groq + Cerebras keys are stale (401) — disabled until\n # refreshed; DeepSeek + SambaNova carry the tier. rpm caps throttle any\n # runaway caller (429) regardless of $-budget pricing gaps. ---\n - model_name: \"meridian-fast\"\n litellm_params:\n model: \"deepseek/deepseek-chat\"\n api_key: \"os.environ/DEEPSEEK_API_KEY\"\n rpm: 120\n - model_name: \"meridian-fast\"\n litellm_params:\n model: \"openai/Meta-Llama-3.1-405B-Instruct\"\n api_base: \"https://api.sambanova.ai/v1\"\n api_key: \"os.environ/SAMBANOVA_API_KEY\"\n rpm: 120\n # Disabled (stale keys) — re-add with rpm when refreshed:\n # groq/llama-3.3-70b-versatile (GROQ_API_KEY), cerebras/llama-3.3-70b (CEREBRAS_API_KEY)\n\n # --- DeepSeek big chat (V3 latest, ~1.6T-class MoE) — dedicated alias ---\n - model_name: \"meridian-deep\"\n litellm_params:\n model: \"deepseek/deepseek-chat\"\n api_key: \"os.environ/DEEPSEEK_API_KEY\"\n rpm: 120\n\n # --- DeepSeek R1 reasoning ---\n - model_name: \"meridian-reason\"\n litellm_params:\n model: \"deepseek/deepseek-reasoner\"\n api_key: \"os.environ/DEEPSEEK_API_KEY\"\n rpm: 120\n\n # --- Local fallback: existing llama-cpp qwen-server on :8002 (OpenAI-compatible) ---\n - model_name: \"meridian-local\"\n litellm_params:\n model: \"openai/Qwen2.5-7B-Instruct\"\n api_base: \"http://localhost:8002/v1\"\n api_key: \"sk-local-noauth\"\n timeout: 120\n\nrouter_settings:\n routing_strategy: \"simple-shuffle\"\n num_retries: 2\n timeout: 600\n fallbacks:\n - \"meridian-architect\": [\"meridian-fast\", \"meridian-local\"]\n - \"meridian-fixer\": [\"meridian-fast\", \"meridian-local\"]\n - \"meridian-deep\": [\"meridian-fast\", \"meridian-local\"]\n - \"meridian-reason\": [\"meridian-deep\", \"meridian-fast\", \"meridian-local\"]\n - \"meridian-fast\": [\"meridian-local\"]\n redis_host: \"localhost\"\n redis_port: 6379\n\nlitellm_settings:\n set_verbose: false\n drop_params: true\n cache: true\n cache_params:\n type: \"redis\"\n host: \"localhost\"\n port: 6379\n ttl: 600\n # Budget cap on total gateway spend (USD per budget_duration window).\n # The placeholder is substituted at launch time from .env.litellm:LITELLM_MAX_BUDGET\n # (see scripts/start-litellm.sh). Doing the swap in shell rather than via\n # `os.environ/X` because LiteLLM doesn't cast env-var resolved values back\n # to float — the comparison `current_spend > max_budget` then fails with a\n # TypeError surfaced as a misleading 401. Edit only LITELLM_MAX_BUDGET in\n # .env.litellm when funding more credit; committed config stays stable.\n max_budget: __LITELLM_MAX_BUDGET__\n budget_duration: \"1d\"\n\ngeneral_settings:\n store_model_in_db: false\n disable_spend_logs: false\n # Alerts route through the local Garry → Telegram bridge (PM2 entry\n # garry-litellm-alerts on 127.0.0.1:8005). Budget alerts fire at the\n # 50%/75%/90%/95%/99% thresholds against max_budget. llm_exceptions\n # catches upstream auth/quota failures so you find out about a key\n # rotation before the swarm wedges.\n alerting: [\"webhook\"]\n alert_to_webhook_url:\n budget_alerts: \"http://127.0.0.1:8005/alert\"\n llm_exceptions: \"http://127.0.0.1:8005/alert\"\n spend_reports: \"http://127.0.0.1:8005/alert\"\n alert_types:\n - \"budget_alerts\"\n - \"llm_exceptions\"\n"}}, ".gitleaks.toml": {"eab33abbd927f7632bd1cbf031bf3e17111aaef5": {"t": 1785745326.6636624, "n": 2499, "h": "13467afba5a45d3d", "c": "# Meridian gitleaks ruleset. Used by the pre-commit hook (.pre-commit-config.yaml)\n# and any manual `gitleaks detect --config .gitleaks.toml .` invocation.\n#\n# Extends gitleaks' built-in defaults; adds rules for the specific token formats\n# this repo's services produce or consume.\n\ntitle = \"Meridian gitleaks ruleset\"\n\n[extend]\nuseDefault = true\n\n[[rules]]\nid = \"openrouter-api-key\"\ndescription = \"OpenRouter API key (sk-or-v1-...)\"\nregex = '''sk-or-v1-[A-Za-z0-9]{32,}'''\nkeywords = [\"sk-or-v1-\"]\n\n[[rules]]\nid = \"litellm-master-key\"\ndescription = \"LiteLLM gateway master key (sk-lite-...)\"\nregex = '''sk-lite-[A-Za-z0-9]{32,}'''\nkeywords = [\"sk-lite-\"]\n\n[[rules]]\nid = \"groq-api-key\"\ndescription = \"Groq API key (gsk_...)\"\nregex = '''gsk_[A-Za-z0-9]{40,}'''\nkeywords = [\"gsk_\"]\n\n[[rules]]\nid = \"cerebras-api-key\"\ndescription = \"Cerebras API key (csk-...)\"\nregex = '''csk-[A-Za-z0-9_-]{32,}'''\nkeywords = [\"csk-\"]\n\n[[rules]]\nid = \"anthropic-api-key\"\ndescription = \"Anthropic API key (sk-ant-...)\"\nregex = '''sk-ant-[A-Za-z0-9_-]{40,}'''\nkeywords = [\"sk-ant-\"]\n\n[[rules]]\nid = \"deepseek-api-key\"\ndescription = \"DeepSeek API key (sk-...)\"\nregex = '''sk-[a-f0-9]{32}'''\nkeywords = [\"DEEPSEEK_API_KEY\", \"deepseek\"]\n\n[[rules]]\nid = \"telegram-bot-token\"\ndescription = \"Telegram bot token\"\nregex = '''[0-9]{8,12}:[A-Za-z0-9_-]{35}'''\nkeywords = [\"TELEGRAM_BOT_TOKEN\", \"telegram\"]\n\n[[rules]]\nid = \"github-pat-classic\"\ndescription = \"GitHub Personal Access Token (classic ghp_...)\"\nregex = '''gh[pousr]_[A-Za-z0-9]{36}'''\nkeywords = [\"ghp_\", \"ghs_\", \"gho_\", \"ghu_\", \"ghr_\"]\n\n[[rules]]\nid = \"github-fine-grained-pat\"\ndescription = \"GitHub Fine-grained PAT (github_pat_...)\"\nregex = '''github_pat_[A-Za-z0-9_]{82}'''\nkeywords = [\"github_pat_\"]\n\n[[rules]]\nid = \"supabase-service-key\"\ndescription = \"Supabase service-role JWT (eyJ... long)\"\nregex = '''eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9\\.[A-Za-z0-9_-]{100,}\\.[A-Za-z0-9_-]{32,}'''\nkeywords = [\"SUPABASE_SERVICE\", \"service_role\"]\n\n[allowlist]\n# Don't flag placeholder strings that explicitly mark themselves as not-real keys.\ndescription = \"Placeholders and tests\"\nregexes = [\n '''<<FILL''',\n '''sk-or-v1-INVALID''',\n '''sk-local-noauth''',\n '''sk-or-v1-aaaaaaaa''', # docstring/example strings only\n]\npaths = [\n '''(.*?)\\.lock''',\n '''package-lock\\.json''',\n '''pnpm-lock\\.yaml''',\n '''node_modules/''',\n '''\\.venv/''',\n '''vendor/''',\n '''data/scraped/''',\n '''docs/scraping-samples/''',\n '''docs/audit2-s.*\\.png''', # audit screenshots\n]\n"}, "78edc09bd13cbaf801571b59d0dde99ba42b5198": {"t": 1785748832.619145, "n": 2499, "h": "13467afba5a45d3d", "c": "# Meridian gitleaks ruleset. Used by the pre-commit hook (.pre-commit-config.yaml)\n# and any manual `gitleaks detect --config .gitleaks.toml .` invocation.\n#\n# Extends gitleaks' built-in defaults; adds rules for the specific token formats\n# this repo's services produce or consume.\n\ntitle = \"Meridian gitleaks ruleset\"\n\n[extend]\nuseDefault = true\n\n[[rules]]\nid = \"openrouter-api-key\"\ndescription = \"OpenRouter API key (sk-or-v1-...)\"\nregex = '''sk-or-v1-[A-Za-z0-9]{32,}'''\nkeywords = [\"sk-or-v1-\"]\n\n[[rules]]\nid = \"litellm-master-key\"\ndescription = \"LiteLLM gateway master key (sk-lite-...)\"\nregex = '''sk-lite-[A-Za-z0-9]{32,}'''\nkeywords = [\"sk-lite-\"]\n\n[[rules]]\nid = \"groq-api-key\"\ndescription = \"Groq API key (gsk_...)\"\nregex = '''gsk_[A-Za-z0-9]{40,}'''\nkeywords = [\"gsk_\"]\n\n[[rules]]\nid = \"cerebras-api-key\"\ndescription = \"Cerebras API key (csk-...)\"\nregex = '''csk-[A-Za-z0-9_-]{32,}'''\nkeywords = [\"csk-\"]\n\n[[rules]]\nid = \"anthropic-api-key\"\ndescription = \"Anthropic API key (sk-ant-...)\"\nregex = '''sk-ant-[A-Za-z0-9_-]{40,}'''\nkeywords = [\"sk-ant-\"]\n\n[[rules]]\nid = \"deepseek-api-key\"\ndescription = \"DeepSeek API key (sk-...)\"\nregex = '''sk-[a-f0-9]{32}'''\nkeywords = [\"DEEPSEEK_API_KEY\", \"deepseek\"]\n\n[[rules]]\nid = \"telegram-bot-token\"\ndescription = \"Telegram bot token\"\nregex = '''[0-9]{8,12}:[A-Za-z0-9_-]{35}'''\nkeywords = [\"TELEGRAM_BOT_TOKEN\", \"telegram\"]\n\n[[rules]]\nid = \"github-pat-classic\"\ndescription = \"GitHub Personal Access Token (classic ghp_...)\"\nregex = '''gh[pousr]_[A-Za-z0-9]{36}'''\nkeywords = [\"ghp_\", \"ghs_\", \"gho_\", \"ghu_\", \"ghr_\"]\n\n[[rules]]\nid = \"github-fine-grained-pat\"\ndescription = \"GitHub Fine-grained PAT (github_pat_...)\"\nregex = '''github_pat_[A-Za-z0-9_]{82}'''\nkeywords = [\"github_pat_\"]\n\n[[rules]]\nid = \"supabase-service-key\"\ndescription = \"Supabase service-role JWT (eyJ... long)\"\nregex = '''eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9\\.[A-Za-z0-9_-]{100,}\\.[A-Za-z0-9_-]{32,}'''\nkeywords = [\"SUPABASE_SERVICE\", \"service_role\"]\n\n[allowlist]\n# Don't flag placeholder strings that explicitly mark themselves as not-real keys.\ndescription = \"Placeholders and tests\"\nregexes = [\n '''<<FILL''',\n '''sk-or-v1-INVALID''',\n '''sk-local-noauth''',\n '''sk-or-v1-aaaaaaaa''', # docstring/example strings only\n]\npaths = [\n '''(.*?)\\.lock''',\n '''package-lock\\.json''',\n '''pnpm-lock\\.yaml''',\n '''node_modules/''',\n '''\\.venv/''',\n '''vendor/''',\n '''data/scraped/''',\n '''docs/scraping-samples/''',\n '''docs/audit2-s.*\\.png''', # audit screenshots\n]\n"}}}} |