| name | deepseek-openclaw-config-generator |
| description | Build and configure DeepSeek model integrations with OpenClaw agent framework using this local-first web app. |
| triggers | ["how do I connect DeepSeek to OpenClaw","generate OpenClaw config for DeepSeek","set up DeepSeek model with OpenClaw","create DeepSeek OpenClaw onboarding command","configure DeepSeek API for OpenClaw agent","which DeepSeek model should I use with OpenClaw","show me DeepSeek OpenClaw configuration","help with DeepSeek OpenClaw integration"] |
DeepSeek OpenClaw Config Generator
Skill by ara.so — Hermes Skills collection.
DeepSeek OpenClaw is a local-first web application for generating OpenClaw configuration assets tailored to DeepSeek models. It provides a UI for selecting models, generating onboarding commands, and creating redacted config snippets without sending API keys to any backend.
What It Does
- Model Catalog: Browse DeepSeek models with recommended use cases for OpenClaw workflows
- Command Generator: Create copy-ready OpenClaw onboarding commands
- Config Preview: Generate redacted OpenClaw configuration snippets
- Security-First: All processing happens client-side; secrets never leave the browser
- OpenClaw Integration: Streamlines the setup of DeepSeek as an OpenClaw provider
Installation
Local Development
git clone https://github.com/LawmakerTreasure/deepseek-openclaw.git
cd deepseek-openclaw
npm install
npm run dev
npm run build
npm run preview
Production Deployment
npm run build
DeepSeek Models for OpenClaw
The app includes these model references:
| Model ID | Best For |
|---|
deepseek/deepseek-v4-flash | Fast, everyday automation and lightweight tasks |
deepseek/deepseek-v4-pro | Complex coding, planning, and reasoning workflows |
deepseek/deepseek-chat | General conversational interfaces |
deepseek/deepseek-reasoner | Deep reasoning and multi-step problem solving |
Always verify model availability against current DeepSeek and OpenClaw documentation.
Configuration
Environment Variables
Create a .env file for local configuration (never commit this file):
DEEPSEEK_API_KEY=your_key_here
In production, use environment variable references:
export DEEPSEEK_API_KEY="${DEEPSEEK_API_KEY}"
OpenClaw Onboarding Command
The app generates commands like:
openclaw onboard \
--provider deepseek \
--model deepseek/deepseek-v4-flash \
--env DEEPSEEK_API_KEY="${DEEPSEEK_API_KEY}"
OpenClaw Config Snippet
Generated configuration follows OpenClaw's JSON structure:
{
"env": {
"DEEPSEEK_API_KEY": "${DEEPSEEK_API_KEY}"
},
"agents": {
"defaults": {
"model": {
"primary": "deepseek/deepseek-v4-flash"
}
}
}
}
Code Examples
React Component Structure (TypeScript)
The main configuration generator component:
import { useState } from 'react';
import { DeepSeekModel, OpenClawConfig } from './types';
import { generateOpenClawCommand, generateConfigSnippet } from './openclaw';
import { deepSeekModels } from './models';
function ConfigGenerator() {
const [apiKey, setApiKey] = useState('');
const [selectedModel, setSelectedModel] = useState<DeepSeekModel>('deepseek/deepseek-v4-flash');
const [verbose, setVerbose] = useState(false);
const command = generateOpenClawCommand({
apiKey,
model: selectedModel,
verbose,
});
const config = generateConfigSnippet({
apiKey,
model: selectedModel,
});
return (
<div className="generator">
<input
type="password"
placeholder="DeepSeek API Key"
value={apiKey}
onChange={(e) => setApiKey(e.target.value)}
/>
<select
value={selectedModel}
onChange={(e) => setSelectedModel(e.target.value as DeepSeekModel)}
>
{deepSeekModels.map((model) => (
<option key={model.id} value={model.id}>
{model.name}
</option>
))}
</select>
<label>
<input
type="checkbox"
checked={verbose}
onChange={(e) => setVerbose(e.target.checked)}
/>
Verbose mode
</label>
<pre>{command}</pre>
<pre>{config}</pre>
</div>
);
}
Model Data Structure
export interface ModelInfo {
id: string;
name: string;
description: string;
useCase: string;
}
export const deepSeekModels: ModelInfo[] = [
{
id: 'deepseek/deepseek-v4-flash',
name: 'DeepSeek V4 Flash',
description: 'Fast and efficient for everyday tasks',
useCase: 'Default choice for automation and quick responses',
},
{
id: 'deepseek/deepseek-v4-pro',
name: 'DeepSeek V4 Pro',
description: 'Advanced reasoning for complex coding',
useCase: 'Multi-file refactoring, architecture planning',
},
{
id: 'deepseek/deepseek-chat',
name: 'DeepSeek Chat',
description: 'General conversational model',
useCase: 'Customer support, casual interactions',
},
{
id: 'deepseek/deepseek-reasoner',
name: 'DeepSeek Reasoner',
description: 'Deep reasoning and problem solving',
useCase: 'Research, debugging, logical analysis',
},
];
Command Generation Logic
export interface CommandOptions {
apiKey: string;
model: string;
verbose?: boolean;
}
export function generateOpenClawCommand(options: CommandOptions): string {
const { apiKey, model, verbose } = options;
const keyValue = apiKey ? apiKey : '${DEEPSEEK_API_KEY}';
const verboseFlag = verbose ? ' \\\n --verbose' : '';
return `openclaw onboard \\
--provider deepseek \\
--model ${model} \\
--env DEEPSEEK_API_KEY="${keyValue}"${verboseFlag}`;
}
export function generateConfigSnippet(options: CommandOptions): string {
const { apiKey, model } = options;
const redactedKey = apiKey ? 'sk-***redacted***' : '${DEEPSEEK_API_KEY}';
const config = {
env: {
DEEPSEEK_API_KEY: redactedKey,
},
agents: {
defaults: {
model: {
primary: model,
},
},
},
};
return JSON.stringify(config, null, 2);
}
Type Definitions
export type DeepSeekModel =
| 'deepseek/deepseek-v4-flash'
| 'deepseek/deepseek-v4-pro'
| 'deepseek/deepseek-chat'
| 'deepseek/deepseek-reasoner';
export interface OpenClawConfig {
env: {
DEEPSEEK_API_KEY: string;
};
agents: {
defaults: {
model: {
primary: DeepSeekModel;
};
};
};
}
Common Patterns
Pattern 1: Quick Setup for Simple Automation
openclaw onboard \
--provider deepseek \
--model deepseek/deepseek-v4-flash \
--env DEEPSEEK_API_KEY="${DEEPSEEK_API_KEY}"
Pattern 2: Complex Coding Tasks
openclaw onboard \
--provider deepseek \
--model deepseek/deepseek-v4-pro \
--env DEEPSEEK_API_KEY="${DEEPSEEK_API_KEY}" \
--verbose
Pattern 3: Reasoning-Heavy Workflows
openclaw onboard \
--provider deepseek \
--model deepseek/deepseek-reasoner \
--env DEEPSEEK_API_KEY="${DEEPSEEK_API_KEY}"
Pattern 4: Multiple Model Configuration
{
"env": {
"DEEPSEEK_API_KEY": "${DEEPSEEK_API_KEY}"
},
"agents": {
"defaults": {
"model": {
"primary": "deepseek/deepseek-v4-flash",
"fallback": "deepseek/deepseek-chat"
}
},
"research": {
"model": {
"primary": "deepseek/deepseek-reasoner"
}
},
"coding": {
"model": {
"primary": "deepseek/deepseek-v4-pro"
}
}
}
}
Security Best Practices
Never Commit Secrets
export DEEPSEEK_API_KEY="your-actual-key"
echo "DEEPSEEK_API_KEY=your-actual-key" >> .env
echo ".env" >> .gitignore
Redaction in UI
function redactApiKey(key: string): string {
if (!key) return '${DEEPSEEK_API_KEY}';
return 'sk-***redacted***';
}
OpenClaw Channel Security
{
"channels": {
"slack": {
"allowlist": ["@specific-user"],
"mentionRequired": true
}
}
}
Troubleshooting
Issue: "Model not found"
Solution: Verify the model ID against current DeepSeek documentation. Model names may change between versions.
curl https://api.deepseek.com/v1/models \
-H "Authorization: Bearer ${DEEPSEEK_API_KEY}"
Issue: "API key invalid"
Solution: Ensure your key is correctly set and has the necessary permissions.
curl https://api.deepseek.com/v1/chat/completions \
-H "Authorization: Bearer ${DEEPSEEK_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"model":"deepseek-chat","messages":[{"role":"user","content":"test"}]}'
Issue: Build fails with TypeScript errors
Solution: Ensure all dependencies are installed and TypeScript config is correct.
rm -rf node_modules package-lock.json
npm install
npx tsc --version
npx tsc --noEmit
Issue: OpenClaw command doesn't work
Solution: Verify OpenClaw installation and provider support.
openclaw --version
openclaw providers list
openclaw providers info deepseek
References
Project Structure
deepseek-openclaw/
├── src/
│ ├── App.tsx # Main application component
│ ├── main.tsx # React entry point
│ ├── models.ts # DeepSeek model definitions
│ ├── openclaw.ts # Command and config generators
│ ├── types.ts # TypeScript type definitions
│ └── styles.css # Global styles
├── .env.example # Environment variable template
├── vite.config.ts # Vite build configuration
├── tsconfig.json # TypeScript configuration
└── package.json # Dependencies and scripts