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:
| Provider | Model | Dimensions |
|---|
| Gemini | gemini-embedding-001 (default) | 3072 |
| OpenAI | text-embedding-3-small | 1536 |
| OpenAI | text-embedding-3-large | 3072 |
| OpenAI | text-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:
| Provider | Default Model |
|---|
| Gemini | gemini-2.5-flash |
| OpenAI | gpt-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):
--grace-period-minutes CLI flag
auto_close.grace_period_hours in simili.yaml
- 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.