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) {