Installation Guide

How to install Stark-Kit and its peer dependencies, configure your environment variables for each supported provider, and set up dotenv for local development.

Package Installation

Stark-Kit has a single required peer dependency: zod for tool parameter schemas. Install both together:

bash
bun add @mehularora/stark-kit zod

Loading Environment Variables

Stark-Kit reads API keys from process.env automatically. For local development, use a .env file and the dotenv package to load it before your code runs.

Install dotenv

bash
bun add dotenv

Create .env file

.env
# .env — keep this out of version control
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
GEMINI_API_KEY=AI...
MISTRAL_API_KEY=...
Warning: Add .env to your .gitignore. Never commit API keys to version control.

Import dotenv/config first

The import "dotenv/config" call must be the very first line in your entry file — before any Stark-Kit imports — so the environment variables are populated before any provider constructor runs.

agent.ts
// This MUST be the first import in your entry file
import "dotenv/config";
// Now Stark-Kit can read OPENAI_API_KEY, ANTHROPIC_API_KEY, etc.
import { Agent, run, OpenAIProvider } from "@mehularora/stark-kit";

Supported Providers

Each provider adapter class reads its own key from a dedicated environment variable. The table below lists all four built-in providers:

ProviderAdapter ClassEnv Variable
OpenAIOpenAIProviderOPENAI_API_KEY
AnthropicClaudeProviderANTHROPIC_API_KEY
GoogleGeminiProviderGEMINI_API_KEY
MistralMistralProviderMISTRAL_API_KEY

Specifying the Model

All four adapters require a model to be specified — there is no built-in default. Pass it to the provider constructor, or override it per-agent via Agent.model, or per-run by passing it to run() or runStream(). If no model is available at call time, the provider throws an error.

providers.ts
import "dotenv/config";
import {
OpenAIProvider,
ClaudeProvider,
GeminiProvider,
MistralProvider,
} from "@mehularora/stark-kit";
// Each provider reads its key automatically from env vars.
// You can optionally override the key or model:
const openai = new OpenAIProvider({ model: "gpt-4o-mini" });
const claude = new ClaudeProvider({ model: "claude-3-haiku-20240307" });
const gemini = new GeminiProvider({ model: "gemini-1.5-pro" });
const mistral = new MistralProvider({ model: "open-mistral-7b" });

TypeScript Setup

Stark-Kit ships with full TypeScript types. No @types/* package is required. Make sure your tsconfig.json targets ES2020 or later and has "moduleResolution": "bundler" or "node16" to resolve the package exports correctly.

Tip: Using Node.js instead of Bun? Set "type": "module" in your package.json and use .mts extensions or explicit ESM imports. Stark-Kit ships as pure ESM.