Skip to main content
OpenViking uses JSON configuration files to manage settings for embedding models, storage backends, server deployment, and more.

Configuration Files

OpenViking uses two config files:
FilePurposeDefault Path
ov.confSDK embedded mode + server config~/.openviking/ov.conf
ovcli.confHTTP client and CLI connection to remote server~/.openviking/ovcli.conf
When config files are at the default path, OpenViking loads them automatically — no additional setup needed.
If config files are at a different location:
export OPENVIKING_CONFIG_FILE=/path/to/ov.conf
export OPENVIKING_CLI_CONFIG_FILE=/path/to/ovcli.conf

Quick Start Configuration

Create ~/.openviking/ov.conf:
{
  "embedding": {
    "dense": {
      "provider": "volcengine",
      "api_key": "your-api-key",
      "model": "doubao-embedding-vision-250615",
      "dimension": 1024,
      "input": "multimodal"
    }
  },
  "vlm": {
    "provider": "volcengine",
    "api_key": "your-api-key",
    "model": "doubao-seed-2-0-pro-260215"
  },
  "storage": {
    "workspace": "./data",
    "agfs": { "backend": "local" },
    "vectordb": { "backend": "local" }
  }
}

Embedding Configuration

Embedding models convert text and multimodal content into vectors for semantic search.

Dense Embedding

{
  "embedding": {
    "max_concurrent": 10,
    "dense": {
      "provider": "volcengine",
      "api_key": "your-api-key",
      "model": "doubao-embedding-vision-250615",
      "dimension": 1024,
      "input": "multimodal"
    }
  }
}
Parameters
ParameterTypeDescription
max_concurrentintMaximum concurrent embedding requests (default: 10)
providerstring"volcengine", "openai", "vikingdb", or "jina"
api_keystringAPI key for authentication
modelstringModel name
dimensionintVector dimension (must match model output)
inputstringInput type: "text" or "multimodal"
batch_sizeintBatch size for embedding requests
{
  "embedding": {
    "dense": {
      "api_base": "https://ark.cn-beijing.volces.com/api/v3",
      "api_key": "your-volcengine-api-key",
      "provider": "volcengine",
      "dimension": 1024,
      "model": "doubao-embedding-vision-250615",
      "input": "multimodal"
    }
  }
}
Recommended models:
  • doubao-embedding-vision-250615 (1024 dim, multimodal)
  • doubao-embedding-250615 (1024 dim, text only)
{
  "embedding": {
    "dense": {
      "api_base": "https://api.openai.com/v1",
      "api_key": "your-openai-api-key",
      "provider": "openai",
      "dimension": 3072,
      "model": "text-embedding-3-large"
    }
  }
}
{
  "embedding": {
    "dense": {
      "provider": "jina",
      "api_key": "jina_xxx",
      "model": "jina-embeddings-v5-text-small",
      "dimension": 1024
    }
  }
}
Available models:
  • jina-embeddings-v5-text-small: 677M params, 1024 dim, max seq 32768
  • jina-embeddings-v5-text-nano: 239M params, 768 dim, max seq 8192
Get your API key at jina.ai. Jina models support local deployment via GGUF/MLX.

Hybrid Embedding

Combine dense and sparse embeddings for better retrieval:
{
  "embedding": {
    "hybrid": {
      "provider": "volcengine",
      "api_key": "your-api-key",
      "model": "doubao-embedding-hybrid",
      "dimension": 1024
    }
  }
}

VLM Configuration

Vision Language Models generate semantic abstracts (L0) and overviews (L1) for resources.
{
  "vlm": {
    "api_key": "your-api-key",
    "model": "doubao-seed-2-0-pro-260215",
    "api_base": "https://ark.cn-beijing.volces.com/api/v3",
    "thinking": false,
    "max_concurrent": 100
  }
}
Parameters
ParameterTypeDescription
api_keystringAPI key
modelstringModel name
api_basestringAPI endpoint (optional)
thinkingbooleanEnable thinking mode for VolcEngine models (default: false)
max_concurrentintMaximum concurrent semantic LLM calls (default: 100)
If VLM is not configured, L0/L1 will be generated from content directly (less semantic), and multimodal resources may have limited descriptions.

Storage Configuration

Configure file storage (AGFS) and vector database backends.
{
  "storage": {
    "workspace": "./data",
    "agfs": {
      "backend": "local",
      "timeout": 10
    },
    "vectordb": {
      "backend": "local",
      "name": "context",
      "project": "default"
    }
  }
}

AGFS Backend

ParameterTypeDescriptionDefault
modestring"http-client" or "binding-client""http-client"
backendstring"local", "s3", or "memory""local"
urlstringAGFS service URL for http-client mode"http://localhost:1833"
timeoutfloatRequest timeout in seconds10.0
{
  "storage": {
    "agfs": {
      "backend": "s3",
      "s3": {
        "bucket": "my-bucket",
        "endpoint": "s3.amazonaws.com",
        "region": "us-east-1",
        "access_key": "your-ak",
        "secret_key": "your-sk",
        "use_ssl": true,
        "use_path_style": true
      }
    }
  }
}
S3 Parameters
ParameterDescription
bucketS3 bucket name
regionAWS region (e.g., us-east-1, cn-beijing)
access_keyS3 access key ID
secret_keyS3 secret access key
endpointCustom S3 endpoint for MinIO, LocalStack, etc.
prefixOptional key prefix for namespace isolation
use_sslEnable HTTPS (default: true)
use_path_styleUse PathStyle (MinIO, SeaweedFS) vs VirtualHostStyle (TOS)

Vector Database Backend

ParameterTypeDescriptionDefault
backendstring"local", "http", "volcengine", or "vikingdb""local"
namestringVectorDB collection name"context"
urlstringRemote service URL for http backendnull
project_namestringProject name"default"
dimensionintVector embedding dimension0
{
  "storage": {
    "vectordb": {
      "name": "context",
      "backend": "volcengine",
      "project": "default",
      "volcengine": {
        "region": "cn-beijing",
        "ak": "your-access-key",
        "sk": "your-secret-key"
      }
    }
  }
}

Server Configuration

When running OpenViking as an HTTP service, add a server section:
{
  "server": {
    "host": "0.0.0.0",
    "port": 1933,
    "root_api_key": "your-secret-root-key",
    "cors_origins": ["*"]
  }
}
FieldTypeDescriptionDefault
hoststringBind address"0.0.0.0"
portintBind port1933
root_api_keystringRoot API key for multi-tenant auth (disabled if not set)null
cors_originsarrayAllowed CORS origins["*"]
When root_api_key is not set, authentication is disabled (dev mode). This is only allowed when binding to localhost (127.0.0.1).

CLI Client Configuration

Create ~/.openviking/ovcli.conf for the HTTP client and CLI:
{
  "url": "http://localhost:1933",
  "api_key": "your-secret-key",
  "agent_id": "my-agent",
  "timeout": 60.0,
  "output": "table",
  "echo_command": true
}
FieldDescriptionDefault
urlServer address(required)
api_keyAPI key for authenticationnull
agent_idAgent identifier for isolationnull
timeoutRequest timeout in seconds60.0
outputOutput format: "table" or "json""table"

Advanced Configuration

Code Summary Mode

Control how code files are summarized:
{
  "code": {
    "code_summary_mode": "ast"
  }
}
ModeDescription
"ast"Extract AST skeleton (class names, method signatures) for files ≥100 lines (recommended)
"llm"Always use LLM for summarization (higher cost)
"ast_llm"Extract AST first, then pass to LLM (highest quality)

Reranking

Reranking improves search result quality:
{
  "rerank": {
    "provider": "volcengine",
    "api_key": "your-api-key",
    "model": "doubao-rerank-250615",
    "threshold": 0.1
  }
}

Logging

{
  "log": {
    "level": "INFO",
    "format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s",
    "output": "stdout",
    "rotation": true,
    "rotation_days": 3
  }
}

Troubleshooting

Error: Invalid API key
Check your API key is correct and has the required permissions.
Error: Vector dimension mismatch
Ensure the dimension in config matches the model’s output dimension.
Error: VLM request timeout
  • Check network connectivity
  • Increase timeout in config
  • Try a smaller model

Deployment

Server deployment and production setup

Authentication

API key setup and multi-tenant auth

Python SDK

Complete Python SDK reference

CLI Usage

Command-line interface guide