+ {/* Provider options - now just 2 cards in a row */}
+
- {/* Other providers Card - outline style */}
+ {/* Other providers option */}
+
navigate('/welcome', { replace: true })}
className="w-full p-4 sm:p-6 bg-transparent border border-background-hover rounded-xl hover:border-text-muted transition-all duration-200 cursor-pointer group"
>
-
+
-
+
Other providers
+
+ Configure additional providers like Google, Groq, Ollama, and more.
+
-
-
- If you've already signed up for providers like Anthropic, OpenAI etc, you can
- enter your own keys.
-
diff --git a/ui/desktop/src/components/icons/Anthropic.tsx b/ui/desktop/src/components/icons/Anthropic.tsx
new file mode 100644
index 00000000000..7af92a4172e
--- /dev/null
+++ b/ui/desktop/src/components/icons/Anthropic.tsx
@@ -0,0 +1,18 @@
+export default function Anthropic({ className = '' }) {
+ return (
+
+
+
+ );
+}
diff --git a/ui/desktop/src/components/icons/ArrowRight.tsx b/ui/desktop/src/components/icons/ArrowRight.tsx
new file mode 100644
index 00000000000..5f4fe317746
--- /dev/null
+++ b/ui/desktop/src/components/icons/ArrowRight.tsx
@@ -0,0 +1,23 @@
+interface ArrowRightProps {
+ className?: string;
+}
+
+export function ArrowRight({ className = '' }: ArrowRightProps) {
+ return (
+
+
+
+ );
+}
diff --git a/ui/desktop/src/components/icons/Key.tsx b/ui/desktop/src/components/icons/Key.tsx
new file mode 100644
index 00000000000..5b7f559f670
--- /dev/null
+++ b/ui/desktop/src/components/icons/Key.tsx
@@ -0,0 +1,30 @@
+interface KeyProps {
+ className?: string;
+}
+
+export function Key({ className = '' }: KeyProps) {
+ return (
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/ui/desktop/src/components/icons/OpenAI.tsx b/ui/desktop/src/components/icons/OpenAI.tsx
new file mode 100644
index 00000000000..b00bcfca7e5
--- /dev/null
+++ b/ui/desktop/src/components/icons/OpenAI.tsx
@@ -0,0 +1,17 @@
+export default function OpenAI({ className = '' }) {
+ return (
+
+
+
+ );
+}
diff --git a/ui/desktop/src/components/icons/Tetrate.tsx b/ui/desktop/src/components/icons/Tetrate.tsx
new file mode 100644
index 00000000000..011253c9379
--- /dev/null
+++ b/ui/desktop/src/components/icons/Tetrate.tsx
@@ -0,0 +1,22 @@
+export default function Tetrate({ className = '' }) {
+ return (
+
+
+
+
+ );
+}
diff --git a/ui/desktop/src/components/icons/claude-original.svg b/ui/desktop/src/components/icons/claude-original.svg
new file mode 100644
index 00000000000..879ad81261b
--- /dev/null
+++ b/ui/desktop/src/components/icons/claude-original.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/ui/desktop/src/components/icons/index.ts b/ui/desktop/src/components/icons/index.ts
new file mode 100644
index 00000000000..c011e77ccd2
--- /dev/null
+++ b/ui/desktop/src/components/icons/index.ts
@@ -0,0 +1,5 @@
+export { default as OpenRouter } from './OpenRouter';
+export { default as OpenAI } from './OpenAI';
+export { default as Anthropic } from './Anthropic';
+export { default as Tetrate } from './Tetrate';
+export { Goose, Rain } from './Goose';
diff --git a/ui/desktop/src/components/icons/index.tsx b/ui/desktop/src/components/icons/index.tsx
index 556f7dc4bc5..d12fa99f0ce 100644
--- a/ui/desktop/src/components/icons/index.tsx
+++ b/ui/desktop/src/components/icons/index.tsx
@@ -38,6 +38,8 @@ import Send from './Send';
import Settings from './Settings';
import Time from './Time';
import { Gear } from './Gear';
+import { Key } from './Key';
+import { ArrowRight } from './ArrowRight';
import Youtube from './Youtube';
import { Microphone } from './Microphone';
import { Watch0 } from './Watch0';
@@ -51,6 +53,7 @@ import { Watch6 } from './Watch6';
export {
ArrowDown,
ArrowUp,
+ ArrowRight,
Attach,
Back,
Bird1,
@@ -79,6 +82,7 @@ export {
GlassWater,
Grape,
Idea,
+ Key,
LinkedIn,
Microphone,
More,
diff --git a/ui/desktop/src/components/icons/tetrate-original.svg b/ui/desktop/src/components/icons/tetrate-original.svg
new file mode 100644
index 00000000000..83a735c1dbb
--- /dev/null
+++ b/ui/desktop/src/components/icons/tetrate-original.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/ui/desktop/src/utils/anthropicSetup.ts b/ui/desktop/src/utils/anthropicSetup.ts
new file mode 100644
index 00000000000..8e525552cab
--- /dev/null
+++ b/ui/desktop/src/utils/anthropicSetup.ts
@@ -0,0 +1,13 @@
+export interface AnthropicSetupStatus {
+ isRunning: boolean;
+ error: string | null;
+}
+
+export async function startAnthropicSetup(): Promise<{ success: boolean; message: string; requiresManualSetup?: boolean }> {
+ // Anthropic doesn't have OAuth flow, so we redirect to manual setup
+ return {
+ success: true,
+ message: "Redirecting to Anthropic configuration...",
+ requiresManualSetup: true
+ };
+}
diff --git a/ui/desktop/src/utils/openaiSetup.ts b/ui/desktop/src/utils/openaiSetup.ts
new file mode 100644
index 00000000000..daadbf6c8a7
--- /dev/null
+++ b/ui/desktop/src/utils/openaiSetup.ts
@@ -0,0 +1,13 @@
+export interface OpenAISetupStatus {
+ isRunning: boolean;
+ error: string | null;
+}
+
+export async function startOpenAISetup(): Promise<{ success: boolean; message: string; requiresManualSetup?: boolean }> {
+ // OpenAI doesn't have OAuth flow, so we redirect to manual setup
+ return {
+ success: true,
+ message: "Redirecting to OpenAI configuration...",
+ requiresManualSetup: true
+ };
+}