mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-08 04:51:25 +00:00
Venice AI is a privacy-focused AI inference provider with support for uncensored models and access to major proprietary models via their anonymized proxy. This integration adds: - Complete model catalog with 25 models: - 15 private models (Llama, Qwen, DeepSeek, Venice Uncensored, etc.) - 10 anonymized models (Claude, GPT-5.2, Gemini, Grok, Kimi, MiniMax) - Auto-discovery from Venice API with fallback to static catalog - VENICE_API_KEY environment variable support - Interactive onboarding via 'venice-api-key' auth choice - Model selection prompt showing all available Venice models - Provider auto-registration when API key is detected - Comprehensive documentation covering: - Privacy modes (private vs anonymized) - All 25 models with context windows and features - Streaming, function calling, and vision support - Model selection recommendations Privacy modes: - Private: Fully private, no logging (open-source models) - Anonymized: Proxied through Venice (proprietary models) Default model: venice/llama-3.3-70b (good balance of capability + privacy) Venice API: https://api.venice.ai/api/v1 (OpenAI-compatible)
167 lines
4.4 KiB
TypeScript
167 lines
4.4 KiB
TypeScript
import type { OAuthCredentials } from "@mariozechner/pi-ai";
|
|
import { resolveClawdbotAgentDir } from "../agents/agent-paths.js";
|
|
import { upsertAuthProfile } from "../agents/auth-profiles.js";
|
|
|
|
const resolveAuthAgentDir = (agentDir?: string) => agentDir ?? resolveClawdbotAgentDir();
|
|
|
|
export async function writeOAuthCredentials(
|
|
provider: string,
|
|
creds: OAuthCredentials,
|
|
agentDir?: string,
|
|
): Promise<void> {
|
|
// Write to resolved agent dir so gateway finds credentials on startup.
|
|
upsertAuthProfile({
|
|
profileId: `${provider}:${creds.email ?? "default"}`,
|
|
credential: {
|
|
type: "oauth",
|
|
provider,
|
|
...creds,
|
|
},
|
|
agentDir: resolveAuthAgentDir(agentDir),
|
|
});
|
|
}
|
|
|
|
export async function setAnthropicApiKey(key: string, agentDir?: string) {
|
|
// Write to resolved agent dir so gateway finds credentials on startup.
|
|
upsertAuthProfile({
|
|
profileId: "anthropic:default",
|
|
credential: {
|
|
type: "api_key",
|
|
provider: "anthropic",
|
|
key,
|
|
},
|
|
agentDir: resolveAuthAgentDir(agentDir),
|
|
});
|
|
}
|
|
|
|
export async function setGeminiApiKey(key: string, agentDir?: string) {
|
|
// Write to resolved agent dir so gateway finds credentials on startup.
|
|
upsertAuthProfile({
|
|
profileId: "google:default",
|
|
credential: {
|
|
type: "api_key",
|
|
provider: "google",
|
|
key,
|
|
},
|
|
agentDir: resolveAuthAgentDir(agentDir),
|
|
});
|
|
}
|
|
|
|
export async function setMinimaxApiKey(key: string, agentDir?: string) {
|
|
// Write to resolved agent dir so gateway finds credentials on startup.
|
|
upsertAuthProfile({
|
|
profileId: "minimax:default",
|
|
credential: {
|
|
type: "api_key",
|
|
provider: "minimax",
|
|
key,
|
|
},
|
|
agentDir: resolveAuthAgentDir(agentDir),
|
|
});
|
|
}
|
|
|
|
export async function setMoonshotApiKey(key: string, agentDir?: string) {
|
|
// Write to resolved agent dir so gateway finds credentials on startup.
|
|
upsertAuthProfile({
|
|
profileId: "moonshot:default",
|
|
credential: {
|
|
type: "api_key",
|
|
provider: "moonshot",
|
|
key,
|
|
},
|
|
agentDir: resolveAuthAgentDir(agentDir),
|
|
});
|
|
}
|
|
|
|
export async function setKimiCodeApiKey(key: string, agentDir?: string) {
|
|
// Write to resolved agent dir so gateway finds credentials on startup.
|
|
upsertAuthProfile({
|
|
profileId: "kimi-code:default",
|
|
credential: {
|
|
type: "api_key",
|
|
provider: "kimi-code",
|
|
key,
|
|
},
|
|
agentDir: resolveAuthAgentDir(agentDir),
|
|
});
|
|
}
|
|
|
|
export async function setSyntheticApiKey(key: string, agentDir?: string) {
|
|
// Write to resolved agent dir so gateway finds credentials on startup.
|
|
upsertAuthProfile({
|
|
profileId: "synthetic:default",
|
|
credential: {
|
|
type: "api_key",
|
|
provider: "synthetic",
|
|
key,
|
|
},
|
|
agentDir: resolveAuthAgentDir(agentDir),
|
|
});
|
|
}
|
|
|
|
export async function setVeniceApiKey(key: string, agentDir?: string) {
|
|
// Write to resolved agent dir so gateway finds credentials on startup.
|
|
upsertAuthProfile({
|
|
profileId: "venice:default",
|
|
credential: {
|
|
type: "api_key",
|
|
provider: "venice",
|
|
key,
|
|
},
|
|
agentDir: resolveAuthAgentDir(agentDir),
|
|
});
|
|
}
|
|
|
|
export const ZAI_DEFAULT_MODEL_REF = "zai/glm-4.7";
|
|
export const OPENROUTER_DEFAULT_MODEL_REF = "openrouter/auto";
|
|
export const VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF = "vercel-ai-gateway/anthropic/claude-opus-4.5";
|
|
|
|
export async function setZaiApiKey(key: string, agentDir?: string) {
|
|
// Write to resolved agent dir so gateway finds credentials on startup.
|
|
upsertAuthProfile({
|
|
profileId: "zai:default",
|
|
credential: {
|
|
type: "api_key",
|
|
provider: "zai",
|
|
key,
|
|
},
|
|
agentDir: resolveAuthAgentDir(agentDir),
|
|
});
|
|
}
|
|
|
|
export async function setOpenrouterApiKey(key: string, agentDir?: string) {
|
|
upsertAuthProfile({
|
|
profileId: "openrouter:default",
|
|
credential: {
|
|
type: "api_key",
|
|
provider: "openrouter",
|
|
key,
|
|
},
|
|
agentDir: resolveAuthAgentDir(agentDir),
|
|
});
|
|
}
|
|
|
|
export async function setVercelAiGatewayApiKey(key: string, agentDir?: string) {
|
|
upsertAuthProfile({
|
|
profileId: "vercel-ai-gateway:default",
|
|
credential: {
|
|
type: "api_key",
|
|
provider: "vercel-ai-gateway",
|
|
key,
|
|
},
|
|
agentDir: resolveAuthAgentDir(agentDir),
|
|
});
|
|
}
|
|
|
|
export async function setOpencodeZenApiKey(key: string, agentDir?: string) {
|
|
upsertAuthProfile({
|
|
profileId: "opencode:default",
|
|
credential: {
|
|
type: "api_key",
|
|
provider: "opencode",
|
|
key,
|
|
},
|
|
agentDir: resolveAuthAgentDir(agentDir),
|
|
});
|
|
}
|