Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/paramveer-cyber/Deployaar/llms.txt

Use this file to discover all available pages before exploring further.

Deployaar supports four AI providers — Anthropic, OpenAI, Google Generative AI, and DeepSeek — all accessed through the Vercel AI SDK. Every step of the pipeline that calls an AI model (clarification questions, PRD generation, task breakdown, the coding agent loop) resolves the active language model through a single abstraction in packages/services/ai/index.ts. The active provider and model are determined per-user: Deployaar checks the user’s saved preferences first, then falls back to the platform-wide DEFAULT_AI_PROVIDER and DEFAULT_AI_MODEL environment variables. Access to specific providers and models is gated by your billing plan.

Supported Providers

ProviderSDK PackageDefault ModelNotes
Anthropic@ai-sdk/anthropicclaude-sonnet-4-6Available on Pro Max plans only (unless user supplies their own API key)
OpenAI@ai-sdk/openaigpt-4oAvailable on Pro and Pro Max plans
Google Generative AI@ai-sdk/googlegemini-2.0-flashAvailable on all plans, including Free
DeepSeek@ai-sdk/deepseekdeepseek-chatAvailable on Pro Max plans only
The provider abstraction is implemented in packages/services/ai/index.ts via resolveLanguageModelForUser(userId). This function:
  1. Loads the user’s saved preferredProvider and preferredModel from user-settings
  2. Resolves the user’s billing plan via their primary organisation
  3. Asserts that the requested provider and model are permitted for that plan (unless the user has supplied their own API key, in which case plan restrictions are bypassed)
  4. Decrypts the user’s stored API key if present, or falls back to the platform key for that provider
  5. Returns a fully constructed LanguageModel instance ready to pass to generateText or streamText

Per-Plan AI Access

Access to AI providers and models is enforced in packages/services/billing/limits.ts via the planLimitsMap. When a user does not supply their own API key, assertProviderAllowedForPlan() is called and will throw a FORBIDDEN error if the requested provider or model is outside the plan’s allowlist.
PlanAllowed ProvidersAllowed Models
FreeGooglegemini-2.0-flash
ProGoogle, OpenAIgemini-1.5-pro, gpt-4o
Pro MaxAnthropic, OpenAI, Google, DeepSeekAll models (no model restriction)
The Pro Max plan sets allowedModels: [] (an empty array), which the enforcement logic interprets as “all models permitted” for any allowed provider.
Attempting to use a provider or model that is not included in your plan will throw a FORBIDDEN error with the message: “Your [Plan Name] plan does not include access to the ‘[provider]’ provider. Upgrade to unlock more models.” This check runs before any AI call is made, so no tokens are consumed. To bypass plan restrictions, supply your own API key in your account settings — your personal key is never subject to plan-based model limits.

Configuration

Set the following environment variables in apps/api/.env to configure AI provider access for the platform:
# Select the default provider for all users who haven't set a preference
# Accepted values: anthropic | openai | google | deepseek
DEFAULT_AI_PROVIDER=google

# Default model string for the selected provider
DEFAULT_AI_MODEL=gemini-2.0-flash

# API keys — only the key(s) for your active provider(s) are required
ANTHROPIC_API_KEY=sk-ant-...
OPENAI_API_KEY=sk-...
GOOGLE_GENERATIVE_AI_API_KEY=AIza...
DEEPSEEK_API_KEY=sk-...
If DEFAULT_AI_MODEL is not set, the service falls back to the hardcoded default for the selected provider:
ProviderHardcoded default
anthropicclaude-sonnet-4-6
openaigpt-4o
googlegemini-2.0-flash
deepseekdeepseek-chat

PR Review Model

The AI pull request review step (packages/services/pull-request-review) resolves its language model through the same resolveLanguageModelForUser abstraction used by every other pipeline step. This means the review model respects the platform’s DEFAULT_AI_PROVIDER and DEFAULT_AI_MODEL environment variables and is subject to the same per-plan provider restrictions.
// packages/services/pull-request-review/index.ts (simplified)
const reviewModel = await resolveLanguageModelForUser(requestedByUserId);

const reviewResult = await generateText({
  model: reviewModel,
  output: Output.object({ schema: aiReviewOutputSchema }),
  system: reviewSystemPrompt,
  prompt: reviewPrompt,
});
Configure the desired review model by setting DEFAULT_AI_PROVIDER and DEFAULT_AI_MODEL in apps/api/.env. The review service also defines an unused resolveReviewModel() helper that constructs an Anthropic claude-sonnet-4-6 instance directly — this function is present in the source but is not called by the live review flow.
For a full comparison of what each billing plan includes — feature request limits, project limits, and team seats — see the Billing Plans reference.

Build docs developers (and LLMs) love