diff --git a/README.md b/README.md index cccdac8..bbebd66 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ Opens `http://localhost:3777` with a setup wizard: 1. **Wallet** — detects your `mltl` wallet (auto-created on first run) 2. **Agent** — registers onchain with name, description, skills, and price -3. **LLM** — connects Anthropic, OpenAI, or OpenRouter (with a live test call) +3. **LLM** — connects Anthropic, OpenAI, OpenRouter, or MiniMax (with a live test call) 4. **Config** — pricing strategy, automation toggles, task limits After setup, the dashboard launches and the agent starts working. @@ -105,8 +105,9 @@ All providers use raw `fetch()` — zero SDK dependencies: | Anthropic | `api.anthropic.com/v1/messages` | `claude-sonnet-4-20250514` | | OpenAI | `api.openai.com/v1/chat/completions` | `gpt-4o` | | OpenRouter | `openrouter.ai/api/v1/chat/completions` | `openai/gpt-5.4` | +| MiniMax | `api.minimax.io/v1/chat/completions` | `MiniMax-M2.7` | -OpenAI and OpenRouter use a shared adapter that translates between Anthropic's native tool-use format and OpenAI's `tool_calls` format. +OpenAI, OpenRouter, and MiniMax use a shared adapter that translates between Anthropic's native tool-use format and OpenAI's `tool_calls` format. ## Self-Learning diff --git a/src/config.ts b/src/config.ts index 8a76bf3..cd2ebe3 100644 --- a/src/config.ts +++ b/src/config.ts @@ -3,7 +3,7 @@ import path from "node:path"; import os from "node:os"; export interface LLMConfig { - provider: "anthropic" | "openai" | "openrouter"; + provider: "anthropic" | "openai" | "openrouter" | "minimax"; model: string; apiKey: string; } @@ -118,6 +118,7 @@ export function initConfig(opts: { anthropic: "claude-sonnet-4-20250514", openai: "gpt-4o", openrouter: "anthropic/claude-sonnet-4-20250514", + minimax: "MiniMax-M2.7", }; const config: CashClawConfig = { diff --git a/src/llm/index.ts b/src/llm/index.ts index a798965..dcf000c 100644 --- a/src/llm/index.ts +++ b/src/llm/index.ts @@ -236,6 +236,11 @@ export function createLLMProvider(config: LLMConfig): LLMProvider { config, "https://openrouter.ai/api/v1", ); + case "minimax": + return createOpenAICompatibleProvider( + config, + "https://api.minimax.io/v1", + ); default: throw new Error(`Unknown LLM provider: ${config.provider}`); } diff --git a/src/ui/pages/Settings.tsx b/src/ui/pages/Settings.tsx index 634a3aa..64431d6 100644 --- a/src/ui/pages/Settings.tsx +++ b/src/ui/pages/Settings.tsx @@ -247,6 +247,7 @@ export function Settings() { + diff --git a/src/ui/pages/setup/LLMStep.tsx b/src/ui/pages/setup/LLMStep.tsx index c0cb633..4f0a8e3 100644 --- a/src/ui/pages/setup/LLMStep.tsx +++ b/src/ui/pages/setup/LLMStep.tsx @@ -9,6 +9,7 @@ const PROVIDERS = [ { value: "anthropic", label: "ANTHROPIC", desc: "Claude models", model: "claude-sonnet-4-20250514" }, { value: "openai", label: "OPENAI", desc: "GPT-4o", model: "gpt-4o" }, { value: "openrouter", label: "OPENROUTER", desc: "Multi-provider", model: "openai/gpt-5.4" }, + { value: "minimax", label: "MINIMAX", desc: "MiniMax M2.7", model: "MiniMax-M2.7" }, ]; export function LLMStep({ onNext }: LLMStepProps) {