Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ CyberStrike integrates with the entire AI ecosystem through 23 bundled SDK provi
| **Cerebras** | LLaMA on Cerebras | Fastest inference available |
| **Cohere** | Command R+ | RAG-optimized models |
| **OpenRouter** | 300+ models | Single API, any model |
| **LLMTR** | 180+ models | Türkiye-hosted models, local pricing |
| **Together AI** | Open-source models | Fine-tuning support |
| **DeepInfra** | Open-source models | Pay-per-token, no GPU needed |
| **Perplexity** | Sonar models | Search-augmented generation |
Expand Down Expand Up @@ -150,7 +151,7 @@ Most AI security tools are thin wrappers that send your prompt to an API. CyberS

**150+ Providers, Zero Lock-in**

Anthropic, OpenAI, Google, Amazon Bedrock, Azure, Groq, Mistral, xAI, DeepSeek, Cerebras, Cohere, OpenRouter, Together AI, GitHub Copilot — or run fully offline with Ollama and LM Studio. 150+ providers, 5,300+ models. You choose the model. You own the results. As AI models get better and cheaper, CyberStrike gets better with them. Switch providers in seconds without reconfiguring anything.
Anthropic, OpenAI, Google, Amazon Bedrock, Azure, Groq, Mistral, xAI, DeepSeek, Cerebras, Cohere, OpenRouter, LLMTR, Together AI, GitHub Copilot — or run fully offline with Ollama and LM Studio. 150+ providers, 5,300+ models. You choose the model. You own the results. As AI models get better and cheaper, CyberStrike gets better with them. Switch providers in seconds without reconfiguring anything.

</td>
<td width="50%">
Expand Down
2 changes: 1 addition & 1 deletion README.tr.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ Diger yapay zeka araclari siradaki ne yapacaginizi soylemenizi bekler. CyberStri

**Herhangi Bir LLM, Bagimlilik Yok**

Kutudan ciktigi gibi 15+ saglayici: Anthropic, OpenAI, Google, Amazon Bedrock, Azure, Groq, Mistral, OpenRouter — hatta OpenAI uyumlu uc noktalar araciligiyla yerel modeller bile. Claude, GPT, Gemini veya kendi barindiginiz LLM ile calistirin. Modeller iyilestikce ve ucuzladikca, CyberStrike de onlarla birlikte gelisir.
Kutudan ciktigi gibi 15+ saglayici: Anthropic, OpenAI, Google, Amazon Bedrock, Azure, Groq, Mistral, OpenRouter, LLMTR (Turkiye'de barindirilan modeller) — hatta OpenAI uyumlu uc noktalar araciligiyla yerel modeller bile. Claude, GPT, Gemini veya kendi barindiginiz LLM ile calistirin. Modeller iyilestikce ve ucuzladikca, CyberStrike de onlarla birlikte gelisir.

</td>
<td width="50%">
Expand Down
1 change: 1 addition & 0 deletions packages/app/src/components/settings-providers.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ const PROVIDER_NOTES = [
{ match: (id: string) => id === "openai", key: "dialog.provider.openai.note" },
{ match: (id: string) => id === "google", key: "dialog.provider.google.note" },
{ match: (id: string) => id === "openrouter", key: "dialog.provider.openrouter.note" },
{ match: (id: string) => id === "llmtr", key: "dialog.provider.llmtr.note" },
{ match: (id: string) => id === "vercel", key: "dialog.provider.vercel.note" },
] as const

Expand Down
1 change: 1 addition & 0 deletions packages/app/src/hooks/use-providers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ export const popularProviders = [
"openai",
"google",
"openrouter",
"llmtr",
"vercel",
]
const popularProviderSet = new Set(popularProviders)
Expand Down
1 change: 1 addition & 0 deletions packages/app/src/i18n/ar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ export const dict = {
"dialog.provider.openai.note": "اتصل باستخدام ChatGPT Pro/Plus أو مفتاح API",
"dialog.provider.google.note": "نماذج Gemini لاستجابات سريعة ومنظمة",
"dialog.provider.openrouter.note": "الوصول إلى جميع النماذج المدعومة من موفر واحد",
"dialog.provider.llmtr.note": "نماذج مستضافة في تركيا وأسعار مخفّضة على النماذج العالمية",
"dialog.provider.vercel.note": "وصول موحد إلى نماذج الذكاء الاصطناعي مع توجيه ذكي",
"dialog.model.select.title": "تحديد نموذج",
"dialog.model.search.placeholder": "البحث عن نماذج",
Expand Down
1 change: 1 addition & 0 deletions packages/app/src/i18n/br.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ export const dict = {
"dialog.provider.openai.note": "Conectar com ChatGPT Pro/Plus ou chave de API",
"dialog.provider.google.note": "Modelos Gemini para respostas rápidas e estruturadas",
"dialog.provider.openrouter.note": "Acesse todos os modelos suportados de um único provedor",
"dialog.provider.llmtr.note": "Modelos hospedados na Türkiye e preços com desconto nos globais",
"dialog.provider.vercel.note": "Acesso unificado a modelos de IA com roteamento inteligente",
"dialog.model.select.title": "Selecionar modelo",
"dialog.model.search.placeholder": "Buscar modelos",
Expand Down
1 change: 1 addition & 0 deletions packages/app/src/i18n/bs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ export const dict = {
"dialog.provider.openai.note": "GPT modeli za brze, sposobne opšte AI zadatke",
"dialog.provider.google.note": "Gemini modeli za brze, strukturirane odgovore",
"dialog.provider.openrouter.note": "Pristup svim podržanim modelima preko jednog provajdera",
"dialog.provider.llmtr.note": "Modeli hostovani u Turskoj i snižene cijene globalnih modela",
"dialog.provider.vercel.note": "Jedinstven pristup AI modelima uz pametno rutiranje",

"dialog.model.select.title": "Odaberi model",
Expand Down
1 change: 1 addition & 0 deletions packages/app/src/i18n/da.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ export const dict = {
"dialog.provider.openai.note": "GPT-modeller til hurtige, kompetente generelle AI-opgaver",
"dialog.provider.google.note": "Gemini-modeller til hurtige, strukturerede svar",
"dialog.provider.openrouter.note": "Få adgang til alle understøttede modeller fra én udbyder",
"dialog.provider.llmtr.note": "Modeller hostet i Tyrkiet og rabatterede priser på globale modeller",
"dialog.provider.vercel.note": "Samlet adgang til AI-modeller med smart routing",

"dialog.model.select.title": "Vælg model",
Expand Down
1 change: 1 addition & 0 deletions packages/app/src/i18n/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ export const dict = {
"dialog.provider.openai.note": "Mit ChatGPT Pro/Plus oder API-Schlüssel verbinden",
"dialog.provider.google.note": "Gemini-Modelle für schnelle, strukturierte Antworten",
"dialog.provider.openrouter.note": "Zugriff auf alle unterstützten Modelle über einen Anbieter",
"dialog.provider.llmtr.note": "In der Türkei gehostete Modelle und vergünstigte Preise für globale Modelle",
"dialog.provider.vercel.note": "Einheitlicher Zugriff auf KI-Modelle mit intelligentem Routing",
"dialog.model.select.title": "Modell auswählen",
"dialog.model.search.placeholder": "Modelle durchsuchen",
Expand Down
1 change: 1 addition & 0 deletions packages/app/src/i18n/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ export const dict = {
"dialog.provider.openai.note": "GPT models for fast, capable general AI tasks",
"dialog.provider.google.note": "Gemini models for fast, structured responses",
"dialog.provider.openrouter.note": "Access all supported models from one provider",
"dialog.provider.llmtr.note": "Türkiye-hosted models and discounted pricing on global ones",
"dialog.provider.vercel.note": "Unified access to AI models with smart routing",

"dialog.model.select.title": "Select model",
Expand Down
1 change: 1 addition & 0 deletions packages/app/src/i18n/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ export const dict = {
"dialog.provider.openai.note": "Modelos GPT para tareas de IA generales rápidas y capaces",
"dialog.provider.google.note": "Modelos Gemini para respuestas rápidas y estructuradas",
"dialog.provider.openrouter.note": "Accede a todos los modelos soportados desde un solo proveedor",
"dialog.provider.llmtr.note": "Modelos alojados en Türkiye y precios con descuento en los globales",
"dialog.provider.vercel.note": "Acceso unificado a modelos de IA con enrutamiento inteligente",

"dialog.model.select.title": "Seleccionar modelo",
Expand Down
1 change: 1 addition & 0 deletions packages/app/src/i18n/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ export const dict = {
"dialog.provider.openai.note": "Connectez-vous avec ChatGPT Pro/Plus ou une clé API",
"dialog.provider.google.note": "Modèles Gemini pour des réponses rapides et structurées",
"dialog.provider.openrouter.note": "Accédez à tous les modèles pris en charge depuis un seul fournisseur",
"dialog.provider.llmtr.note": "Modèles hébergés en Türkiye et tarifs réduits sur les modèles mondiaux",
"dialog.provider.vercel.note": "Accès unifié aux modèles d'IA avec routage intelligent",
"dialog.model.select.title": "Sélectionner un modèle",
"dialog.model.search.placeholder": "Rechercher des modèles",
Expand Down
1 change: 1 addition & 0 deletions packages/app/src/i18n/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ export const dict = {
"dialog.provider.openai.note": "ChatGPT Pro/PlusまたはAPIキーで接続",
"dialog.provider.google.note": "高速で構造化された応答のためのGeminiモデル",
"dialog.provider.openrouter.note": "1つのプロバイダーからすべてのサポートされているモデルにアクセス",
"dialog.provider.llmtr.note": "トルコでホストされるモデルと、グローバルモデルの割引価格",
"dialog.provider.vercel.note": "スマートルーターによるAIモデルへの統合アクセス",
"dialog.model.select.title": "モデルを選択",
"dialog.model.search.placeholder": "モデルを検索",
Expand Down
1 change: 1 addition & 0 deletions packages/app/src/i18n/ko.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ export const dict = {
"dialog.provider.openai.note": "ChatGPT Pro/Plus 또는 API 키로 연결",
"dialog.provider.google.note": "빠르고 구조화된 응답을 위한 Gemini 모델",
"dialog.provider.openrouter.note": "모든 지원 모델을 단일 공급자에서 액세스",
"dialog.provider.llmtr.note": "튀르키예에서 호스팅되는 모델과 글로벌 모델 할인 가격",
"dialog.provider.vercel.note": "스마트 라우팅을 통한 AI 모델 통합 액세스",
"dialog.model.select.title": "모델 선택",
"dialog.model.search.placeholder": "모델 검색",
Expand Down
1 change: 1 addition & 0 deletions packages/app/src/i18n/no.ts
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ export const dict = {
"dialog.provider.openai.note": "GPT-modeller for raske, dyktige generelle AI-oppgaver",
"dialog.provider.google.note": "Gemini-modeller for raske, strukturerte svar",
"dialog.provider.openrouter.note": "Tilgang til alle støttede modeller fra én leverandør",
"dialog.provider.llmtr.note": "Modeller driftet i Tyrkia og rabatterte priser på globale modeller",
"dialog.provider.vercel.note": "Enhetlig tilgang til AI-modeller med smart ruting",

"dialog.model.select.title": "Velg modell",
Expand Down
1 change: 1 addition & 0 deletions packages/app/src/i18n/pl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ export const dict = {
"dialog.provider.openai.note": "Modele GPT do szybkich i wszechstronnych zadań AI",
"dialog.provider.google.note": "Modele Gemini do szybkich i ustrukturyzowanych odpowiedzi",
"dialog.provider.openrouter.note": "Dostęp do wszystkich obsługiwanych modeli od jednego dostawcy",
"dialog.provider.llmtr.note": "Modele hostowane w Turcji i niższe ceny modeli globalnych",
"dialog.provider.vercel.note": "Ujednolicony dostęp do modeli AI z inteligentnym routingiem",
"dialog.model.select.title": "Wybierz model",
"dialog.model.search.placeholder": "Szukaj modeli",
Expand Down
1 change: 1 addition & 0 deletions packages/app/src/i18n/ru.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ export const dict = {
"dialog.provider.openai.note": "Модели GPT для быстрых и мощных задач общего ИИ",
"dialog.provider.google.note": "Модели Gemini для быстрых и структурированных ответов",
"dialog.provider.openrouter.note": "Доступ ко всем поддерживаемым моделям через одного провайдера",
"dialog.provider.llmtr.note": "Модели, размещённые в Турции, и сниженные цены на глобальные",
"dialog.provider.vercel.note": "Единый доступ к ИИ-моделям с умной маршрутизацией",

"dialog.model.select.title": "Выбрать модель",
Expand Down
1 change: 1 addition & 0 deletions packages/app/src/i18n/th.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ export const dict = {
"dialog.provider.openai.note": "โมเดล GPT สำหรับงาน AI ทั่วไปที่รวดเร็วและมีความสามารถ",
"dialog.provider.google.note": "โมเดล Gemini สำหรับการตอบสนองที่รวดเร็วและมีโครงสร้าง",
"dialog.provider.openrouter.note": "เข้าถึงโมเดลที่รองรับทั้งหมดจากผู้ให้บริการเดียว",
"dialog.provider.llmtr.note": "โมเดลที่โฮสต์ในตุรกีและราคาส่วนลดสำหรับโมเดลระดับโลก",
"dialog.provider.vercel.note": "การเข้าถึงโมเดล AI แบบรวมด้วยการกำหนดเส้นทางอัจฉริยะ",

"dialog.model.select.title": "เลือกโมเดล",
Expand Down
1 change: 1 addition & 0 deletions packages/app/src/i18n/zh.ts
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ export const dict = {
"dialog.provider.openai.note": "使用 ChatGPT Pro/Plus 或 API 密钥连接",
"dialog.provider.google.note": "使用 Google 账号或 API 密钥连接",
"dialog.provider.openrouter.note": "使用 OpenRouter 账号或 API 密钥连接",
"dialog.provider.llmtr.note": "土耳其本地托管模型,全球模型享折扣价",
"dialog.provider.vercel.note": "使用 Vercel 账号或 API 密钥连接",

"dialog.model.select.title": "选择模型",
Expand Down
1 change: 1 addition & 0 deletions packages/app/src/i18n/zht.ts
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ export const dict = {
"dialog.provider.copilot.note": "使用 Copilot 或 API 金鑰連線",
"dialog.provider.google.note": "Gemini 模型,提供快速且結構化的回應",
"dialog.provider.openrouter.note": "從單一提供者存取所有支援的模型",
"dialog.provider.llmtr.note": "土耳其在地託管模型,全球模型享折扣價",
"dialog.provider.vercel.note": "透過智慧路由統一存取 AI 模型",

"dialog.model.select.title": "選擇模型",
Expand Down
10 changes: 9 additions & 1 deletion packages/cyberstrike/src/cli/cmd/auth.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { cmd } from "./cmd"
import * as prompts from "@clack/prompts"
import { UI } from "../ui"
import { ModelsDev } from "../../provider/models"
import { LLMTR } from "../../provider/llmtr"
import { map, pipe, sortBy, values } from "remeda"
import path from "path"
import os from "os"
Expand Down Expand Up @@ -252,6 +253,7 @@ export const AuthLoginCommand = cmd({
return
}
await ModelsDev.refresh().catch(() => {})
await LLMTR.refresh().catch(() => {})

const config = await Config.get()

Expand All @@ -275,7 +277,8 @@ export const AuthLoginCommand = cmd({
openai: 3,
google: 4,
openrouter: 5,
vercel: 6,
llmtr: 6,
vercel: 7,
}
let provider = await prompts.autocomplete({
message: "Select provider",
Expand All @@ -295,6 +298,7 @@ export const AuthLoginCommand = cmd({
cyberstrike: "recommended",
anthropic: "Claude Max or API key",
openai: "ChatGPT Plus/Pro or API key",
llmtr: "Türkiye-hosted models, discounted pricing",
}[x.id],
})),
),
Expand Down Expand Up @@ -348,6 +352,10 @@ export const AuthLoginCommand = cmd({
prompts.log.info("Create an api key at https://cyberstrike.io/auth")
}

if (provider === LLMTR.ID) {
prompts.log.info("Create an api key from your LLMTR account - https://llmtr.com/docs")
}

if (provider === "vercel") {
prompts.log.info("You can create an api key at https://vercel.link/ai-gateway-token")
}
Expand Down
3 changes: 3 additions & 0 deletions packages/cyberstrike/src/flag/flag.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,9 @@ export namespace Flag {
export const CYBERSTRIKE_EXPERIMENTAL_MARKDOWN = truthy("CYBERSTRIKE_EXPERIMENTAL_MARKDOWN")
export const CYBERSTRIKE_MODELS_URL = process.env["CYBERSTRIKE_MODELS_URL"]
export const CYBERSTRIKE_MODELS_PATH = process.env["CYBERSTRIKE_MODELS_PATH"]
export const CYBERSTRIKE_LLMTR_URL = process.env["CYBERSTRIKE_LLMTR_URL"]
export const CYBERSTRIKE_LLMTR_PATH = process.env["CYBERSTRIKE_LLMTR_PATH"]
export const CYBERSTRIKE_DISABLE_LLMTR = truthy("CYBERSTRIKE_DISABLE_LLMTR")

function number(key: string) {
const value = process.env[key]
Expand Down
Loading
Loading