Skip to main content

Configuration Schema

Complete reference for all configuration options in Simili Bot v0.2.0.

Root level

extends: string                    # Optional: parent config "org/repo@branch:path"
qdrant: QdrantConfig              # Required: vector database
embedding: EmbeddingConfig        # Required: AI embeddings
llm: LLMConfig                   # Optional: LLM model settings
defaults: DefaultsConfig          # Optional: default behavior
repositories: [RepositoryConfig]  # Required: at least one repo
transfer: TransferConfig          # Optional: issue routing
auto_close: AutoCloseConfig       # Optional: auto-close duplicates
bot_users: [string]              # Optional: additional bot usernames to filter

QdrantConfig

qdrant:
  url: string                      # Required: https://cluster.qdrant.io:6333
  api_key: string                  # Required: API key
  collection: string               # Required: collection name for issues
  pr_collection: string            # Optional: dedicated collection for PRs
  tls: boolean                     # Optional (default: true)
  timeout: number                  # Optional (default: 30)
  max_retries: number              # Optional (default: 3)

EmbeddingConfig

embedding:
  provider: string                 # Required: "gemini" or "openai"
  api_key: string                  # Required: API key (supports ${VAR})
  model: string                    # Optional (see model table below)
  dimensions: number               # Required when using non-default model
Embedding models and dimensions:
ProviderModelDimensions
Geminigemini-embedding-001 (default)3072
OpenAItext-embedding-3-small1536
OpenAItext-embedding-3-large3072
OpenAItext-embedding-ada-002 (legacy)1536
The dimensions value must match the model’s output dimensions. Mismatches cause Qdrant collection errors.

LLMConfig

llm:
  provider: string                 # Optional: "gemini" or "openai" (defaults to embedding provider)
  api_key: string                  # Optional: API key (defaults to embedding api_key)
  model: string                    # Optional (see defaults below)
Default LLM models:
ProviderDefault Model
Geminigemini-2.5-flash
OpenAIgpt-5.2

DefaultsConfig

defaults:
  similarity_threshold: number      # 0.0-1.0 (default: 0.65)
  max_similar_to_show: number      # 1-20 (default: 5)
  cross_repo_search: boolean       # (default: false)
  duplicate_candidates: number     # Max candidates for LLM duplicate check (default: 5)

RepositoryConfig

repositories:
  - org: string                    # Required: org/username
    repo: string                   # Required: repo name
    enabled: boolean               # Optional (default: true)
    description: string            # Optional: used by LLM routing
    labels: [string]               # Optional: associated labels

TransferConfig

transfer:
  enabled: boolean                          # Enable/disable (default: false)
  llm_routing_enabled: boolean             # Use LLM routing (default: false)
  strategy: string                          # "rules-only", "vdb-only", or "hybrid" (default: "rules-only")
  high_confidence: number                   # Auto-transfer threshold (default: 0.9)
  medium_confidence: number                 # Suggestion threshold (default: 0.6)
  duplicate_confidence_threshold: number   # Duplicate detection threshold (default: 0.85)
  repo_collection: string                   # Repo embeddings collection (default: "simili_repos")
  rules: [TransferRule]                     # Array of routing rules
  vdb_routing: VDBRoutingConfig             # VDB semantic routing settings

TransferRule

- name: string                     # Rule name (required)
  priority: number                 # Higher = evaluated first (required)
  target: string                   # "org/repo" (required)
  enabled: boolean                 # (default: true)
  labels: [string]                 # AND condition: all must match
  labels_any: [string]             # OR condition: any can match
  title_contains: [string]         # Title keyword matching
  body_contains: [string]          # Body keyword matching
  author: [string]                 # Author username(s)

VDBRoutingConfig

vdb_routing:
  enabled: boolean                 # Enable VDB-based routing (default: false)
  confidence_threshold: number     # Min confidence for routing (default: 0.75)
  min_samples_per_repo: number     # Min indexed items per repo (default: 20)
  max_candidates: number           # Max repos to consider (default: 3)
  explain_decision: boolean        # Generate LLM reasoning (default: true)

AutoCloseConfig

auto_close:
  grace_period_hours: number       # Hours before auto-close (default: 72)
  dry_run: boolean                 # Log without executing (default: false)
Grace period precedence (highest → lowest):
  1. --grace-period-minutes CLI flag
  2. auto_close.grace_period_hours in simili.yaml
  3. Built-in default: 72 hours

Full example

extends: "my-org/configs@main:.github/base.yaml"

qdrant:
  url: "${QDRANT_URL}"
  api_key: "${QDRANT_API_KEY}"
  collection: "my-issues"
  pr_collection: "my-prs"

embedding:
  provider: "gemini"
  api_key: "${GEMINI_API_KEY}"
  model: "gemini-embedding-001"
  dimensions: 3072

llm:
  provider: "gemini"
  model: "gemini-2.5-flash"

defaults:
  similarity_threshold: 0.65
  max_similar_to_show: 5
  cross_repo_search: true
  duplicate_candidates: 5

repositories:
  - org: "my-org"
    repo: "backend"
    enabled: true
    description: "Backend services and APIs"
  - org: "my-org"
    repo: "frontend"
    enabled: true
    description: "Web UI and client applications"

transfer:
  enabled: true
  strategy: "hybrid"
  llm_routing_enabled: true
  high_confidence: 0.9
  medium_confidence: 0.6
  rules:
    - name: "Route backend issues"
      priority: 10
      target: "my-org/backend"
      labels_any: ["backend", "api"]
      enabled: true
  vdb_routing:
    enabled: true
    confidence_threshold: 0.75

auto_close:
  grace_period_hours: 72

bot_users:
  - "dependabot"
  - "renovate"
See Configuration reference for details.