How to Set Up OpenAI API Key for OpenMAIC: Complete Configuration Guide
Set the OPENAI_API_KEY environment variable in a .env.local file created from the provided .env.example template, then restart the OpenMAIC server to enable all OpenAI-powered features.
OpenMAIC is an open-source multimodal AI chat interface developed by THU-MAIC that supports multiple LLM and service providers. To use OpenAI's models for chat completions, image generation, text-to-speech, or speech-to-text, you must configure your API credentials correctly. This guide walks through the exact steps based on the official OpenMAIC source code.
Where OpenMAIC Reads the OpenAI API Key
OpenMAIC loads provider credentials from environment variables during server startup. The key configuration happens in lib/server/provider-config.ts, where the application checks for your OpenAI credentials:
const apiKey = process.env.OPENAI_API_KEY;
if (!apiKey) return imageConfig; // skip OpenAI image provider if the key is missing
This pattern applies across all OpenAI-related services. When OPENAI_API_KEY is present, OpenMAIC enables:
- Chat completions (default LLM provider)
- Image generation via
openai-imageprovider - Text-to-speech via
openai-tts - Speech-to-text via
openai-whisper
Step-by-Step: Configure Your OpenAI API Key
Step 1: Copy the Environment Template
OpenMAIC includes a comprehensive template at .env.example that documents all supported environment variables:
cp .env.example .env.local
Step 2: Add Your OpenAI API Key
Edit .env.local and set your key:
# OpenMAIC Environment Variables
# Copy this file to .env.local and fill in the values you need.
# All variables are optional — only configure the providers you want to use.
# --- LLM Providers -----------------------------------------------------------
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# Optional overrides
# OPENAI_BASE_URL=https://your-proxy.example.com/v1
# OPENAI_MODELS=gpt-4o,gpt-4o-mini
The OPENAI_BASE_URL and OPENAI_MODELS variables are optional. Use them if you need to route requests through a proxy or restrict available models.
Step 3: Restart the Server
Environment variables are loaded once at startup. After saving .env.local:
pnpm dev # development
# or
pnpm start # production
The server reads process.env.OPENAI_API_KEY during initialization via the provider configuration module.
Optional: YAML Configuration Alternative
You can also define OpenAI credentials in server-providers.yml (format documented in the README). However, the environment variable method in .env.local is the simplest approach for most deployments and aligns with standard Node.js practices.
Verifying Your Configuration
To confirm your OpenAI API key is loaded correctly in custom scripts or extensions:
// custom-script.ts
import { config } from 'dotenv';
config({ path: '.env.local' });
const openAiKey = process.env.OPENAI_API_KEY;
if (!openAiKey) {
throw new Error('OPENAI_API_KEY is not set');
}
console.log('OpenAI key loaded, length:', openAiKey.length);
For the main application, check server logs on startup—OpenMAIC will skip OpenAI provider initialization if the key is missing, falling back to other configured providers.
Key Source Files Reference
.env.example— Template for all environment variables, includingOPENAI_API_KEYGitHublib/server/provider-config.ts— Loads the OpenAI key and builds provider configuration objects used by the server GitHubREADME.md(Quick-Start section) — Official setup documentation GitHub
Summary
- OpenMAIC requires
OPENAI_API_KEYas an environment variable to enable OpenAI services - Copy
.env.exampleto.env.localand populate your key—this is the standard configuration path - The key is loaded in
lib/server/provider-config.tsand applies to LLM, image, TTS, and ASR providers - Optional variables
OPENAI_BASE_URLandOPENAI_MODELSallow proxy and model customization - Always restart the server after modifying environment variables
Frequently Asked Questions
What happens if I don't set OPENAI_API_KEY?
OpenMAIC will skip OpenAI provider initialization entirely. According to the applyOpenAIImageProviderConfig function in lib/server/provider-config.ts, when apiKey is undefined, the function returns early with imageConfig, leaving the OpenAI image provider unconfigured. Other services follow the same pattern—no errors occur, but OpenAI features remain unavailable.
Can I use a custom OpenAI-compatible API instead of OpenAI directly?
Yes. Set OPENAI_BASE_URL in your .env.local file to point to any OpenAI-compatible endpoint. This works with proxies, Azure OpenAI Service deployments, or alternative providers implementing the OpenAI API specification.
Where should I deploy .env.local in production?
Place .env.local in the project root directory where OpenMAIC is installed, or use your hosting platform's environment variable management (Vercel, Docker, Kubernetes secrets, etc.). The dotenv loader automatically finds .env.local at runtime. Never commit this file to version control—it contains sensitive credentials.
Does OpenMAIC support multiple API keys for different providers simultaneously?
Yes. OpenMAIC's provider architecture in lib/server/provider-config.ts loads credentials for all configured providers independently. You can set OPENAI_API_KEY, ANTHROPIC_API_KEY, GOOGLE_API_KEY, and others in the same .env.local file, then select providers per-request or set defaults in your configuration.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →