{
  "version": 3,
  "comment": "Registre des services IA. Éditable : ce fichier est copié dans le dossier de configuration au premier lancement, et c'est cette copie qui est lue. Ajouter une entrée suffit à faire reconnaître un service. 'region' est la zone où le service fait tourner son inférence (FR, CH, EU, US, CN, WORLD) : elle fixe l'intensité carbone appliquée, car l'inférence distante consomme le courant du fournisseur, pas le vôtre ; absente = tarif mondial. 'bytesPerToken' et 'whPerKtoken' affinent un service dont l'encapsulation ou le modèle diffèrent du tarif de son type. Les modèles locaux ne portent pas de région : ils consomment le courant de cette machine. Un domaine n'est admis ici que s'il ne partage aucune adresse IP avec du trafic non-IA — c'est pourquoi Gemini et Vertex AI sont absents : Google sert son IA depuis les mêmes adresses que Drive, Gmail et Cloud Storage.",
  "services": [
    { "id": "claude", "label": "Claude", "type": "chat", "region": "US",
      "domains": ["api.anthropic.com", "claude.ai"], "v6prefixes": ["2607:6bc0:"], "procs": ["claude"] },
    { "id": "chatgpt", "label": "ChatGPT / OpenAI", "type": "chat", "region": "US",
      "domains": ["api.openai.com", "chatgpt.com", "chat.openai.com", "ab.chatgpt.com"], "v6prefixes": [], "procs": ["chatgpt"] },
    { "id": "grok", "label": "Grok / xAI", "type": "chat", "region": "US",
      "domains": ["api.x.ai", "grok.com"], "v6prefixes": [], "procs": [] },
    { "id": "meta", "label": "Meta AI", "type": "chat", "region": "US",
      "domains": ["www.meta.ai", "meta.ai"], "v6prefixes": [], "procs": [] },
    { "id": "mistral", "label": "Mistral / Le Chat", "type": "chat", "region": "FR",
      "domains": ["api.mistral.ai", "chat.mistral.ai"], "v6prefixes": [], "procs": [] },
    { "id": "deepseek", "label": "DeepSeek", "type": "chat", "region": "CN",
      "domains": ["api.deepseek.com", "chat.deepseek.com"], "v6prefixes": [], "procs": [] },
    { "id": "copilot-web", "label": "Microsoft Copilot", "type": "chat", "region": "US",
      "domains": ["copilot.microsoft.com"], "v6prefixes": [], "procs": [] },
    { "id": "poe", "label": "Poe", "type": "chat", "region": "US",
      "domains": ["poe.com", "www.poe.com"], "v6prefixes": [], "procs": [] },

    { "id": "perplexity", "label": "Perplexity", "type": "search", "region": "US",
      "domains": ["api.perplexity.ai", "www.perplexity.ai", "perplexity.ai"], "v6prefixes": [], "procs": ["perplexity"] },

    { "id": "openrouter", "label": "OpenRouter", "type": "chat", "region": "WORLD",
      "domains": ["openrouter.ai"], "v6prefixes": [], "procs": [] },
    { "id": "groq", "label": "Groq", "type": "chat", "region": "US",
      "domains": ["api.groq.com"], "v6prefixes": [], "procs": [] },
    { "id": "together", "label": "Together AI", "type": "chat", "region": "US",
      "domains": ["api.together.xyz"], "v6prefixes": [], "procs": [] },
    { "id": "fireworks", "label": "Fireworks", "type": "chat", "region": "US",
      "domains": ["api.fireworks.ai"], "v6prefixes": [], "procs": [] },
    { "id": "replicate", "label": "Replicate", "type": "media", "region": "US",
      "domains": ["api.replicate.com"], "v6prefixes": [], "procs": [] },
    { "id": "cohere", "label": "Cohere", "type": "chat", "region": "US",
      "domains": ["api.cohere.com", "api.cohere.ai"], "v6prefixes": [], "procs": [] },
    { "id": "hf", "label": "Hugging Face Inference", "type": "chat", "region": "WORLD",
      "domains": ["router.huggingface.co"], "v6prefixes": [], "procs": [] },

    { "id": "copilot", "label": "GitHub Copilot", "type": "coding", "region": "US",
      "domains": ["api.githubcopilot.com", "copilot-proxy.githubusercontent.com"], "v6prefixes": [], "procs": [] },
    { "id": "cursor", "label": "Cursor", "type": "coding", "region": "US",
      "domains": ["api2.cursor.sh", "api3.cursor.sh", "api4.cursor.sh"], "v6prefixes": [], "procs": [] },
    { "id": "windsurf", "label": "Windsurf / Codeium", "type": "coding", "region": "US",
      "domains": ["server.codeium.com", "api.codeium.com", "inference.codeium.com"], "v6prefixes": [], "procs": [] },
    { "id": "cody", "label": "Sourcegraph Cody", "type": "coding", "region": "US",
      "domains": ["sourcegraph.com"], "v6prefixes": [], "procs": [] },

    { "id": "elevenlabs", "label": "ElevenLabs", "type": "media", "region": "US",
      "domains": ["api.elevenlabs.io", "elevenlabs.io"], "v6prefixes": [], "procs": [] },
    { "id": "midjourney", "label": "Midjourney", "type": "media", "region": "US",
      "domains": ["www.midjourney.com", "midjourney.com"], "v6prefixes": [], "procs": [] },
    { "id": "suno", "label": "Suno", "type": "media", "region": "US",
      "domains": ["suno.com", "studio-api.suno.ai"], "v6prefixes": [], "procs": [] },
    { "id": "runway", "label": "Runway", "type": "media", "region": "US",
      "domains": ["api.runwayml.com", "app.runwayml.com"], "v6prefixes": [], "procs": [] },

    { "id": "goose", "label": "Goose (agent)", "type": "coding", "region": "WORLD",
      "domains": [], "v6prefixes": [], "procs": ["goose"] },
    { "id": "aider", "label": "Aider (agent)", "type": "coding", "region": "WORLD",
      "domains": [], "v6prefixes": [], "procs": ["aider"] },

    { "id": "ollama", "label": "Ollama (local)", "type": "local",
      "domains": [], "v6prefixes": [], "procs": ["ollama"], "localCpu": true },
    { "id": "lmstudio", "label": "LM Studio (local)", "type": "local",
      "domains": [], "v6prefixes": [], "procs": ["lm studio", "lmstudio"], "localCpu": true },
    { "id": "llamacpp", "label": "llama.cpp (local)", "type": "local",
      "domains": [], "v6prefixes": [], "procs": ["llama-server", "llama-cli"], "localCpu": true },
    { "id": "jan", "label": "Jan (local)", "type": "local",
      "domains": [], "v6prefixes": [], "procs": ["jan-nitro", "nitro"], "localCpu": true },


    { "id": "sora", "label": "Sora", "type": "media", "region": "US",
      "domains": ["sora.com", "sora.chatgpt.com"], "v6prefixes": [], "procs": [] },
    { "id": "luma", "label": "Luma / Dream Machine", "type": "media", "region": "US",
      "domains": ["lumalabs.ai", "api.lumalabs.ai"], "v6prefixes": [], "procs": [] },
    { "id": "pika", "label": "Pika", "type": "media", "region": "US",
      "domains": ["pika.art"], "v6prefixes": [], "procs": [] },
    { "id": "kling", "label": "Kling", "type": "media", "region": "CN",
      "domains": ["klingai.com", "app.klingai.com"], "v6prefixes": [], "procs": [] },
    { "id": "heygen", "label": "HeyGen", "type": "media", "region": "US",
      "domains": ["api.heygen.com", "app.heygen.com"], "v6prefixes": [], "procs": [] },
    { "id": "synthesia", "label": "Synthesia", "type": "media", "region": "EU",
      "domains": ["api.synthesia.io", "app.synthesia.io"], "v6prefixes": [], "procs": [] },
    { "id": "ideogram", "label": "Ideogram", "type": "media", "region": "US",
      "domains": ["ideogram.ai"], "v6prefixes": [], "procs": [] },
    { "id": "recraft", "label": "Recraft", "type": "media", "region": "US",
      "domains": ["www.recraft.ai"], "v6prefixes": [], "procs": [] },
    { "id": "leonardo", "label": "Leonardo", "type": "media", "region": "US",
      "domains": ["cloud.leonardo.ai"], "v6prefixes": [], "procs": [] },
    { "id": "stability", "label": "Stability AI", "type": "media", "region": "US",
      "domains": ["api.stability.ai"], "v6prefixes": [], "procs": [] },
    { "id": "bfl", "label": "Black Forest Labs / Flux", "type": "media", "region": "EU",
      "domains": ["api.bfl.ai", "api.bfl.ml"], "v6prefixes": [], "procs": [] },
    { "id": "civitai", "label": "Civitai", "type": "media", "region": "US",
      "domains": ["civitai.com"], "v6prefixes": [], "procs": [] },
    { "id": "udio", "label": "Udio", "type": "media", "region": "US",
      "domains": ["www.udio.com"], "v6prefixes": [], "procs": [] },
    { "id": "firefly", "label": "Adobe Firefly", "type": "media", "region": "US",
      "domains": ["firefly.adobe.com"], "v6prefixes": [], "procs": [] },
    { "id": "krea", "label": "Krea", "type": "media", "region": "US",
      "domains": ["www.krea.ai"], "v6prefixes": [], "procs": [] },

    { "id": "qwen", "label": "Qwen / Tongyi", "type": "chat", "region": "CN",
      "domains": ["chat.qwen.ai"], "v6prefixes": [], "procs": [] },
    { "id": "moonshot", "label": "Kimi / Moonshot", "type": "chat", "region": "CN",
      "domains": ["api.moonshot.cn", "kimi.moonshot.cn"], "v6prefixes": [], "procs": [] },
    { "id": "zhipu", "label": "Zhipu / GLM", "type": "chat", "region": "CN",
      "domains": ["open.bigmodel.cn", "chatglm.cn"], "v6prefixes": [], "procs": [] },
    { "id": "ernie", "label": "Ernie / Baidu", "type": "chat", "region": "CN",
      "domains": ["yiyan.baidu.com"], "v6prefixes": [], "procs": [] },
    { "id": "doubao", "label": "Doubao / ByteDance", "type": "chat", "region": "CN",
      "domains": ["www.doubao.com"], "v6prefixes": [], "procs": [] },
    { "id": "zai", "label": "Z.ai", "type": "chat", "region": "CN",
      "domains": ["chat.z.ai"], "v6prefixes": [], "procs": [] },
    { "id": "characterai", "label": "Character.AI", "type": "chat", "region": "US",
      "domains": ["character.ai"], "v6prefixes": [], "procs": [] },
    { "id": "inflection", "label": "Pi / Inflection", "type": "chat", "region": "US",
      "domains": ["pi.ai"], "v6prefixes": [], "procs": [] },

    { "id": "youcom", "label": "You.com", "type": "search", "region": "US",
      "domains": ["you.com"], "v6prefixes": [], "procs": [] },
    { "id": "phind", "label": "Phind", "type": "search", "region": "US",
      "domains": ["www.phind.com"], "v6prefixes": [], "procs": [] },

    { "id": "bedrock-us", "label": "AWS Bedrock (US)", "type": "chat", "region": "US",
      "domains": ["bedrock-runtime.us-east-1.amazonaws.com", "bedrock-runtime.us-west-2.amazonaws.com"], "v6prefixes": [], "procs": [] },
    { "id": "bedrock-eu", "label": "AWS Bedrock (UE)", "type": "chat", "region": "EU",
      "domains": ["bedrock-runtime.eu-west-1.amazonaws.com", "bedrock-runtime.eu-central-1.amazonaws.com"], "v6prefixes": [], "procs": [] },

    { "id": "continue", "label": "Continue", "type": "coding", "region": "US",
      "domains": ["api.continue.dev"], "v6prefixes": [], "procs": [] },
    { "id": "tabnine", "label": "Tabnine", "type": "coding", "region": "US",
      "domains": ["api.tabnine.com"], "v6prefixes": [], "procs": [] },
    { "id": "zed", "label": "Zed AI", "type": "coding", "region": "US",
      "domains": ["llm.zed.dev"], "v6prefixes": [], "procs": [] },
    { "id": "bolt", "label": "Bolt.new", "type": "coding", "region": "US",
      "domains": ["bolt.new"], "v6prefixes": [], "procs": [] },
    { "id": "lovable", "label": "Lovable", "type": "coding", "region": "WORLD",
      "domains": ["lovable.dev"], "v6prefixes": [], "procs": [] },
    { "id": "devin", "label": "Devin", "type": "coding", "region": "US",
      "domains": ["app.devin.ai"], "v6prefixes": [], "procs": [] },
    { "id": "amp", "label": "Amp / Sourcegraph", "type": "coding", "region": "US",
      "domains": ["ampcode.com"], "v6prefixes": [], "procs": [] },

    { "id": "deepl", "label": "DeepL", "type": "chat", "region": "EU", "whPerKtoken": 0.5,
      "domains": ["api.deepl.com", "www.deepl.com"], "v6prefixes": [], "procs": [] },
    { "id": "grammarly", "label": "Grammarly", "type": "chat", "region": "US", "whPerKtoken": 0.5,
      "domains": ["gnar.grammarly.com", "api.grammarly.com"], "v6prefixes": [], "procs": [] },

    { "id": "vllm", "label": "vLLM (local)", "type": "local",
      "domains": [], "v6prefixes": [], "procs": ["vllm"], "localCpu": true },
    { "id": "localai", "label": "LocalAI (local)", "type": "local",
      "domains": [], "v6prefixes": [], "procs": ["local-ai"], "localCpu": true },
    { "id": "gpt4all", "label": "GPT4All (local)", "type": "local",
      "domains": [], "v6prefixes": [], "procs": ["gpt4all"], "localCpu": true },
    { "id": "msty", "label": "Msty (local)", "type": "local",
      "domains": [], "v6prefixes": [], "procs": ["msty"], "localCpu": true },
    { "id": "anythingllm", "label": "AnythingLLM (local)", "type": "local",
      "domains": [], "v6prefixes": [], "procs": ["anythingllm"], "localCpu": true },
    { "id": "comfyui", "label": "ComfyUI (local)", "type": "local",
      "domains": [], "v6prefixes": [], "procs": ["comfyui"], "localCpu": true },
    { "id": "koboldcpp", "label": "KoboldCpp (local)", "type": "local",
      "domains": [], "v6prefixes": [], "procs": ["koboldcpp"], "localCpu": true },
    { "id": "ramalama", "label": "RamaLama (local)", "type": "local",
      "domains": [], "v6prefixes": [], "procs": ["ramalama"], "localCpu": true }
  ]
}
