Heads up This site is currently under heavy development.
← all tools
◆ VECTOR DB RAG

OpenViking

v0.4.17 open-source

Self-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.

Summary

OpenViking is an open-source vector database for RAG that manages context for AI agents. It is available under the AGPLv3 license and runs as a standalone service. The tool is for platform engineers needing context management and skills integration for AI agents. Its documentation positions it alongside tools related to AI agent context management, and the project shows recent commits.

Self-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.

What OpenViking answers

What data sources can it ingest to build context?

it supports context loading from various sources

What kinds of queries can I use to retrieve context?

it provides vector search capabilities

Does it offer features for integrating external tools?

it manages skills integration for AI agents

How is context persistence handled?

it functions as a dedicated context database

What is the necessary setup for running the service?

it operates as a standalone service

Release history

  1. v0.4.17 Aug 28, 2026 · issue 009

    OpenViking v0.4.17 adds inline content retrieval, MCP media blocks, private TOS imports, and an ov-memory-doctor diagnostic skill across Python/Go/TypeScript SDKs.

    └──▷ GET THIS VERSION
    $ git clone --branch v0.4.17 https://github.com/volcengine/OpenViking.git
    # already have the repo? check out this version:
    $ git checkout v0.4.17
    └──▷ TRY IT
    Retrieve search results with full document body inline — useful for feeding context directly into a pipeline without a separate read step.
    $ ov find "deployment procedure" --read-content
    Import a private TOS object in one shot from Python without storing credentials in resource metadata.
    json
    {
      "path": "https://bucket.example.tos-cn-beijing.volces.com/private.pdf",
      "to": "viking://resources/tos/private.pdf",
      "args": {
        "tos_signature": "<TOS_SIGNATURE>"
      }
    }
    • Adds read_content field to ranked find and list-mode search responses, returning the full visible text of each hit URI in a content field; CLI exposes this as --read-content.
    • Adds args.tos_signature and args.tos_access to add_resource for one-shot private TOS HTTP(S) imports — credentials are used only for the HEAD/GET and are never persisted to resource metadata or the async queue.
    • Adds ov-memory-doctor diagnostic skill to the Claude Code and Codex memory plugins, checking installation, configuration, authentication, service connectivity, and recent activity.
    • Adds wildcard (*, ?) filtering on the name field when listing accounts and users.
    • MCP read now returns standard image and audio content blocks; mode=download exports raw bytes (video requires download mode).
    +5 moreshow less
    • Python SDK introduces typed options objects while preserving common named arguments; options and flattened named arguments for the same setting cannot be combined.
    • Aligns Python, Go, and TypeScript SDK interfaces across find/search, context search, recall, resources, content, sessions, skills, reindex, and admin operations.
    • Directories created with mkdir now automatically generate a minimal L0 summary and queue vectorisation even when no description is provided, making them immediately searchable.
    • Content write operations replace and append now create the target file and any missing parent directories when the path does not exist (create still returns 409 if the file already exists).
    • Adds memory-extraction observability metrics split by type, action, and result, plus controlled error codes and real latency tracking for model calls.
    └──▷ BREAKING ON UPGRADE
    • !URI forms without a user ID — viking://user/resources, viking://user/memories, etc. — are removed from public request entry points and now return HTTP 400 with a corrective hint. Replace them with viking://~/resources, viking://~/memories, or the explicit viking://user/{user_id}/... form. Scripts, agent prompts, and plugins must be upgraded alongside the server; the old server does not recognise viking://~, so server and client must be upgraded together.
  2. v0.4.16 Aug 21, 2026 · issue 004

    OpenViking v0.4.16 adds remote VikingBot Skills, per-user memory policies, faster async resource import, and the viking://~ URI shorthand.

    └──▷ GET THIS VERSION
    $ git clone --branch v0.4.16 https://github.com/volcengine/OpenViking.git
    # already have the repo? check out this version:
    $ git checkout v0.4.16
    └──▷ TRY IT
    Restrict a specific user to only certain Memory extraction types, then clear the override to fall back to the server default.
    $ # Set a memory policy for a user
    curl -X PATCH https://<host>/api/v1/admin/accounts/<account_id>/users/<user_id>/settings \
      -H 'Content-Type: application/json' \
      -d '{"memory_policy": {"allowed_types": ["episodic"]}}'
    
    # Clear the override and restore inherited default
    curl -X PATCH https://<host>/api/v1/admin/accounts/<account_id>/users/<user_id>/settings \
      -H 'Content-Type: application/json' \
      -d '{"memory_policy": null}'
    Reference the caller's own user root without hard-coding a user path, useful in scripts or agent configs that run as different identities.
    $ ov add-resource viking://~/documents/report.pdf
    Import a large resource asynchronously in the background to avoid blocking the caller, then monitor task progress via the task stats that now include context count and queued-upload stage.
    $ ov add-resource --wait=false viking://~/datasets/corpus.zip
    • Adds GET and PATCH /api/v1/admin/accounts/{account_id}/users/{user_id}/settings endpoints to read and update per-user memory_policy, controlling which Memory types can be extracted; setting memory_policy to null clears the override and restores the inherited default.
    • Adds viking://~ URI alias that resolves to the authenticated caller's user root directory, usable anywhere a viking://user/... URI is accepted.
    • Adds VolcEngine/BytePlus plan tiers and custom interactive configuration to the CLI init wizard.
    • Adds new TOS resource connector arguments for the add-resource command.
    • Exposes context count and queued-upload-stage statistics in resource upload tasks, improving observability of add-resource operations.
    +6 moreshow less
    • Moves wait=false add-resource source-data preparation into a persistent background task chain, reducing request latency while preserving task ownership and reliability.
    • VikingBot can now discover, cache, and execute Skills hosted on remote OpenViking instances.
    • Context Compilation gains source materialization, read-chain tracing, and reusable long-running-agent workflow support (LLM Wiki, knowledge graph, daily digest, knowledge distillation).
    • DSH tools are now served over the shared stdio MCP Proxy, and a new DSH Memory Plugin is included.
    • L0/L1 semantic sidecars are now managed as protected OKF metadata, with write-protection enforced.
    • Web Studio request logs now display error details alongside Task API limit enforcement.
    └──▷ BREAKING ON UPGRADE
    • !The experimental Resource Relations REST API (/api/v1/relations), CLI commands (ov relations, ov link, ov unlink), and associated documentation have been removed. Any integrations using these must be deleted or replaced before upgrading.
  3. v0.4.14 Aug 17, 2026 · issue 004

    OpenViking v0.4.14 adds MCP write/edit/tree, DSH memory plugin, DeerFlow/TRAE integrations, and private-repo Git ingestion while removing Qdrant and openGauss backends.

    └──▷ GET THIS VERSION
    $ git clone --branch v0.4.14 https://github.com/volcengine/OpenViking.git
    # already have the repo? check out this version:
    $ git checkout v0.4.14
    └──▷ TRY IT
    Install the DSH memory plugin so every DeepSeek Harness session automatically captures context and recalls workspace memories before each agent step.
    $ export OPENVIKING_URL=http://127.0.0.1:1933
    export OPENVIKING_API_KEY=your-api-key
    
    dsh plugin --profile default add @openviking/dsh-memory-plugin
    dsh --profile default --dump-config
    Wire DeerFlow to OpenViking so conversations are automatically written and recalled; also expose MCP tools for agent-invoked search and editing.
    config.yaml
    memory:
      enabled: true
      injection_enabled: true
      shutdown_flush_timeout_seconds: 30
      manager_class: openviking
      mode: middleware
      backend_config:
        base_url: https://openviking.example.com
        owner_user_id: default
        api_key_env: OPENVIKING_API_KEY
        startup_policy: fail_fast
        failure_policy:
          read: fail_open
          write: log_and_drop
    Install the TRAE/TRAE CN Hooks + MCP integration for automatic recall, per-turn session capture, and short-session commits.
    $ bash <(curl -fsSL https://raw.githubusercontent.com/volcengine/OpenViking/main/examples/memory-plugin-shared/install.sh) \
      --harness trae,trae-cn
    • MCP gains tree, write, and edit operations against viking:// workspaces; write supports create, replace, and append modes; edit performs exact string replacement and leaves the file unchanged when a match is missing or ambiguous; wait=true blocks until semantic and vector indexes are refreshed; viking://user/... addresses the authenticated user's own workspace.
    • New @openviking/dsh-memory-plugin for DeepSeek Harness adds automatic recall, Session capture, retryable-write replay, viking:// path protection, and model-callable tools (viking_search, viking_read, viking_browse, viking_remember, viking_add_resource, viking_forget); pinned to @deepseek-ai/dsh 0.1.0-rc.6 and Node.js ^22.19.0 or >=24.
    • DSH plugin environment variables OPENVIKING_WORKSPACE_PEER=1 and OPENVIKING_RECALL_PEER_SCOPE=actor control workspace-scoped actor peer derivation and recall restriction.
    • DeerFlow integration adds MemoryManager (automatic write, recall, and context injection) configurable via memory block in config.yaml with keys manager_class, mode, startup_policy, failure_policy.read, and failure_policy.write; MCP access configured in extensions_config.json under mcpServers.openviking.
    • New agent-plugins/ package provides a portable Agent Plugins 1.0 bundle with a zero-runtime-dependency stdio-to-HTTP MCP proxy and openviking-memory Skill for clients that conform to Agent Plugins 1.0 but lack dedicated hooks.
    +10 moreshow less
    • OpenCode gains a hooks-only memory mode.
    • OpenViking Assets resource ingestion now accepts pinned 40-character Git commit SHAs, explicit to destination targets, and HTTPS private repository credentials; add_resource and Watch flows also support private Git authentication.
    • Feishu/Lark ingestion now supports Drive files and recursive folder imports.
    • Web Studio adds complete Watch management: view, edit, pause, resume, trigger, and history flows, plus richer remote resource import options.
    • reindex now accepts replace or append mode to update tags on successfully rebuilt records.
    • Experience trajectory list and outcome distribution endpoints accept inclusive UTC date range filters.
    • Sessions support setting default event-memory tags at creation time, updating them via the configuration interface, and overriding or clearing them per single commit; auto-commit policies can also be updated or disabled dynamically.
    • Configuring experiences now automatically enables cases and trajectories; Agent Evolution derivative memories are generated only when extraction actually produces a case.
    • Web Studio adds an account deletion flow with immediate identity revocation and durable-queue data cleanup, and a scope-grouped Skills view.
    • MCP Streamable HTTP switches to stateless mode, eliminating intermittent Session not found errors in multi-instance or load-balanced deployments.
    └──▷ BREAKING ON UPGRADE
    • !The embedded Python client classes OpenViking, SyncOpenViking, AsyncOpenViking, and LocalClient are no longer exported; callers must run OpenViking as a separate service and connect via openviking-sdk.
    • !mineru_endpoint is now treated as a base URL and OpenViking calls POST {endpoint}/file_parse; mineru_params is renamed to mineru_bodys; mineru_api_key has been removed.
    • !memory.version is now ignored and V2 extraction is no longer selectable; memory.v2_lock_retry_interval_seconds and memory.v2_lock_max_retries are no longer supported.
    • !The Qdrant and openGauss vector backends have been removed.
    • !SessionCommit worker default concurrency changed from 4 to 8.
  4. v0.4.13 Aug 6, 2026 · issue 004

    OpenViking v0.4.13 adds OIDC/LDAP auth, Redis QueueFS, server-side recall context assembly, and audio/video multimodal understanding

    └──▷ GET THIS VERSION
    $ git clone --branch v0.4.13 https://github.com/volcengine/OpenViking.git
    # already have the repo? check out this version:
    $ git checkout v0.4.13
    └──▷ TRY IT
    Retrieve model-ready context blocks server-side without client-side assembly, for a RAG pipeline that needs token-budgeted, deduplicated context.
    $ curl -X POST https://<host>/search \
      -H 'Content-Type: application/json' \
      -H 'Authorization: Bearer <token>' \
      -d '{"query": "How does the payment flow work?", "mode": "context", "detail": "full"}'
    Enable auto-commit for a session by setting a token-count threshold and idle timeout at the server level.
    yaml
    memory:
      session_auto_commit:
        default_enabled: true
        idle_scheduler: true
    • Adds mode="context" to the /search endpoint for server-side recall context assembly — executes recall planning, quota allocation, token budgeting, detail-tier downgrade, cross-turn deduplication, and optional LLM digest, returning context blocks ready to inject into a model; existing mode="list" remains the default.
    • Adds args.parse_mode=no_split to resource import so PDF, Word, PowerPoint, and HTML sources are parsed and converted to Markdown but kept as a single body without splitting by heading, paragraph, or length.
    • Adds processing_mode to resource import and content write: semantic_and_vectors (default) regenerates .abstract.md, .overview.md, and vectors; vectors_only skips VLM semantic understanding and only vectorizes the current file, preserving existing semantic artifacts. Supported in Python SDK, TypeScript SDK, CLI, and HTTP API.
    • Adds queue_workers.external_parse.max_concurrent config key to set ExternalParse worker concurrency, defaulting to 4; takes effect after service restart.
    • Adds enable_watch_scheduler config toggle; read-only replicas sharing writer data can set this to false to avoid redundant resource refresh sweeps. Defaults to true.
    +15 moreshow less
    • Adds server.timeout_keep_alive config key to set the HTTP idle keep-alive timeout, defaulting to 5 seconds.
    • Adds memory.session_auto_commit server-side config to control default enablement and idle scheduler for Session Auto Commit v2, which supports per-session auto_commit_policy triggered by pending token count, message count, idle time, recent-message retention count, and minimum commit interval.
    • Adds OIDC and LDAP authentication modes supporting Okta, Auth0, Keycloak, Azure AD, Windows AD, and OpenLDAP, with claim/attribute mapping to account, user, and role; installable via uv pip install 'openviking[auth]'; CLI gains LDAP credential support.
    • Adds Redis backend for QueueFS (storage.agfs.queuefs) supporting standalone, Cluster, and Sentinel modes for multi-instance shared-queue deployments; existing SQLite QueueFS remains the default.
    • Adds audio/video multimodal understanding backend based on Volcano Ark (火山方舟), supporting long media upload, async polling, result caching, timeout control, and audio/video summary templates.
    • Adds langchain-openviking as a standalone package providing Retriever, Tools, Message History, Context Wrapper, Store, and Middleware; the original openviking.integrations.langchain import path is retained as a compatibility shim.
    • Adds ZCode Memory Plugin with session capture, auto recall, MCP proxy, and shared pending queue.
    • Adds Experience Memory tools and skills to the OpenClaw plugin for querying, reading, and using experience memory stored in OpenViking.
    • Adds experience trajectory lineage tracking in Agent Evolution, recording associations between experiences and their originating trajectories, with corresponding API and vector metadata support.
    • Adds experience outcome aggregation and snapshot refinement in Agent Evolution, combining lineage and historical outcomes to produce more stable experience versions.
    • find and search results now return explicit tags and omit empty optional fields.
    • VectorDB gains a text field type for storing large strings that exceed ordinary string field limits.
    • RAGFS gains structured lock tracing logs covering wait, contention, expiry, and release lifecycle for lock debugging.
    • Removes forced LangChain client dependency from the main openviking server package, reducing image size and dependency surface.
    • Packed OpenClaw/ArkClaw marketplace plugins no longer support {source: 'exec'} SecretRef; {source: 'env'} and {source: 'file'} remain supported.
    └──▷ BREAKING ON UPGRADE
    • !Packed OpenClaw/ArkClaw marketplace plugins no longer execute SecretRef with {source: 'exec'}; switch to {source: 'env'}, {source: 'file'}, or inject secrets into the environment before launching OpenClaw.
    • !search(mode="context") returns HTTP 400 when target_uri is supplied; the level parameter is replaced by the detail tier in context mode.
  5. v0.4.12 Aug 3, 2026 · issue 004

    OpenViking v0.4.12 adds ov compile, Assets Manifest, turn-aware session retention, task cancellation, and single-file Snapshot Diff.

    └──▷ GET THIS VERSION
    $ git clone --branch v0.4.12 https://github.com/volcengine/OpenViking.git
    # already have the repo? check out this version:
    $ git checkout v0.4.12
    └──▷ TRY IT
    Compile scattered research notes into a browsable, searchable wiki — run without --wait first to get a Task ID, or add --wait to block until done.
    $ ov compile \
      --from viking://resources/research \
      --to viking://resources/research-wiki \
      --skill viking://user/default/skills/research-compiler \
      --reason "Track historical progress and preserve supporting evidence." \
      --wait
    Validate a new asset manifest (credentials, Git access, sync plan) before committing any changes to disk or creating Resources.
    $ ov add-resource --manifest manifest.yaml --args dry_run:true
    Retain the last two full conversation turns (bounded by 12,000 tokens) when committing a session, so long sessions stay within context limits without losing mid-turn coherence.
    $ curl -X POST http://localhost:1933/api/v1/sessions/a1b2c3d4/commit \
      -H "Content-Type: application/json" \
      -H "X-API-Key: your-key" \
      -d '{
        "retention_mode": "turn_budget",
        "keep_recent_turn_count": 2,
        "retained_message_token_budget": 12000,
        "min_raw_tail_steps": 2
      }'
    • New ov compile command compiles one or more viking:// source directories into structured artifacts using a Skill-driven isolated AgentLoop, committing results to a target Resource, Memory, or Skill namespace; accepts --from, --to, --skill, --reason, --wait, and --timeout flags.
    • New GET /bot/v1/compile/{task_id} endpoint lets callers poll async ov compile task status; completed results distinguish created, updated, and unchanged artifacts and report page count, link count, warnings, and OKF version.
    • New ov add-resource --manifest <manifest.yaml> command supports the openviking-assets/1 YAML manifest protocol for declarative, version-controllable asset catalog management with --args dry_run:true preflight and --wait --timeout flags; state is persisted to <manifest>.state.json.
    • New turn_budget retention mode for Session Commit API (POST /api/v1/sessions/{id}/commit) preserves complete user turns rather than fixed message counts, controlled via retention_mode, keep_recent_turn_count, retained_message_token_budget, and min_raw_tail_steps fields.
    • New ov task cancel <task_id> command and Python SDK await client.cancel_task("uuid-xxx") enable cooperative cancellation of add_resource, session_commit, admin_reindex, and snapshot_restore_reindex tasks; status transitions from cancelling to cancelled with idempotent repeat calls.
    +3 moreshow less
    • New ov snapshot diff <path> --from <ref> --to <ref> command produces Unified Diff for UTF-8 text files between two commit references, returning added, deleted, modified, or unchanged; also available via Python SDK client.snapshot.diff(path, from_ref=..., to_ref=...) and HTTP API; per-side limit is 10 MiB / 100,000 lines, diff limit is 20 MiB.
    • VikingBot Chat API now accepts OpenAI-style image input.
    • LangChain/LangGraph integration adds native async calls and request-level Actor Peer support.
    └──▷ BREAKING ON UPGRADE
    • !HTTP Server server.agent_evolution.enabled now defaults to false; deployments relying on automatic Case, Trajectory, and Experience generation after Session Commit must explicitly set {"server": {"agent_evolution": {"enabled": true}}} in ov.conf to restore the previous behavior.
    • !The /api/v1/code/outline, /api/v1/code/search, and /api/v1/code/expand endpoints and the MCP tools code_outline, code_search, and code_expand have been removed; callers must migrate to the Skeleton-first code summary and the generic read, grep, find, and search capabilities.
my-toolchain — 0 tools
paste an install list to detect your tools

A brew list, a Brewfile, requirements.txt, a Dockerfile — or just the product names, free-form. Nothing leaves your browser.

    browse all tools →