OpenViking
v0.4.17 open-sourceSelf-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.
ov find "deployment procedure" --read-content
{
"path": "https://bucket.example.tos-cn-beijing.volces.com/private.pdf",
"to": "viking://resources/tos/private.pdf",
"args": {
"tos_signature": "<TOS_SIGNATURE>"
}
}
# 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}'
ov add-resource viking://~/documents/report.pdf
ov add-resource --wait=false viking://~/datasets/corpus.zip
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
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
bash <(curl -fsSL https://raw.githubusercontent.com/volcengine/OpenViking/main/examples/memory-plugin-shared/install.sh) \
--harness trae,trae-cn
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"}'
memory:
session_auto_commit:
default_enabled: true
idle_scheduler: true
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
ov add-resource --manifest manifest.yaml --args dry_run:true
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
}' 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
Examples
Command line
No option matches that search.
| option | found in | since | description |
|---|
No option matches that search.
Values are placeholders taken from each option’s declared default. Nothing is executed here — the output shown is a recording of a run that already happened.
Release history
- v0.4.17
OpenViking v0.4.17 adds inline content retrieval, MCP media blocks, private TOS imports, and an
ov-memory-doctordiagnostic 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 ITRetrieve 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.{ "path": "https://bucket.example.tos-cn-beijing.volces.com/private.pdf", "to": "viking://resources/tos/private.pdf", "args": { "tos_signature": "<TOS_SIGNATURE>" } }- ›Adds
read_contentfield to rankedfindand list-modesearchresponses, returning the full visible text of each hit URI in acontentfield; CLI exposes this as--read-content. - ›Adds
args.tos_signatureandargs.tos_accesstoadd_resourcefor 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-doctordiagnostic skill to the Claude Code and Codex memory plugins, checking installation, configuration, authentication, service connectivity, and recent activity. - ›Adds wildcard (
*,?) filtering on thenamefield when listing accounts and users. - ›MCP
readnow returns standard image and audio content blocks;mode=downloadexports raw bytes (video requires download mode).
+5 moreshow less
- ›Python SDK introduces typed
optionsobjects while preserving common named arguments;optionsand 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
mkdirnow automatically generate a minimal L0 summary and queue vectorisation even when nodescriptionis provided, making them immediately searchable. - ›Content
writeoperationsreplaceandappendnow create the target file and any missing parent directories when the path does not exist (createstill 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 withviking://~/resources,viking://~/memories, or the explicitviking://user/{user_id}/...form. Scripts, agent prompts, and plugins must be upgraded alongside the server; the old server does not recogniseviking://~, so server and client must be upgraded together.
- ›Adds
- v0.4.16
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 ITRestrict 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.pdfImport 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
GETandPATCH /api/v1/admin/accounts/{account_id}/users/{user_id}/settingsendpoints to read and update per-usermemory_policy, controlling which Memory types can be extracted; settingmemory_policytonullclears the override and restores the inherited default. - ›Adds
viking://~URI alias that resolves to the authenticated caller's user root directory, usable anywhere aviking://user/...URI is accepted. - ›Adds VolcEngine/BytePlus plan tiers and custom interactive configuration to the CLI
initwizard. - ›Adds new TOS resource connector arguments for the
add-resourcecommand. - ›Exposes context count and queued-upload-stage statistics in resource upload tasks, improving observability of
add-resourceoperations.
+6 moreshow less
- ›Moves
wait=falseadd-resourcesource-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.
- ›Adds
- v0.4.14
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 ITInstall 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.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_dropInstall 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, andeditoperations againstviking://workspaces;writesupports create, replace, and append modes;editperforms exact string replacement and leaves the file unchanged when a match is missing or ambiguous;wait=trueblocks until semantic and vector indexes are refreshed;viking://user/...addresses the authenticated user's own workspace. - ›New
@openviking/dsh-memory-pluginfor 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/dsh0.1.0-rc.6and Node.js^22.19.0or>=24. - ›DSH plugin environment variables
OPENVIKING_WORKSPACE_PEER=1andOPENVIKING_RECALL_PEER_SCOPE=actorcontrol workspace-scoped actor peer derivation and recall restriction. - ›DeerFlow integration adds MemoryManager (automatic write, recall, and context injection) configurable via
memoryblock inconfig.yamlwith keysmanager_class,mode,startup_policy,failure_policy.read, andfailure_policy.write; MCP access configured inextensions_config.jsonundermcpServers.openviking. - ›New
agent-plugins/package provides a portable Agent Plugins 1.0 bundle with a zero-runtime-dependency stdio-to-HTTP MCP proxy andopenviking-memorySkill 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
todestination targets, and HTTPS private repository credentials;add_resourceand 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.
- ›
reindexnow acceptsreplaceorappendmode 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
experiencesnow automatically enablescasesandtrajectories; 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, andLocalClientare no longer exported; callers must run OpenViking as a separate service and connect viaopenviking-sdk. - !
mineru_endpointis now treated as a base URL and OpenViking callsPOST {endpoint}/file_parse;mineru_paramsis renamed tomineru_bodys;mineru_api_keyhas been removed. - !
memory.versionis now ignored and V2 extraction is no longer selectable;memory.v2_lock_retry_interval_secondsandmemory.v2_lock_max_retriesare no longer supported. - !The Qdrant and openGauss vector backends have been removed.
- !SessionCommit worker default concurrency changed from 4 to 8.
- ›MCP gains
- v0.4.13
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 ITRetrieve 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.memory: session_auto_commit: default_enabled: true idle_scheduler: true- ›Adds
mode="context"to the/searchendpoint 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; existingmode="list"remains the default. - ›Adds
args.parse_mode=no_splitto 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_modeto resource import and content write:semantic_and_vectors(default) regenerates.abstract.md,.overview.md, and vectors;vectors_onlyskips 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_concurrentconfig key to set ExternalParse worker concurrency, defaulting to4; takes effect after service restart. - ›Adds
enable_watch_schedulerconfig toggle; read-only replicas sharing writer data can set this tofalseto avoid redundant resource refresh sweeps. Defaults totrue.
+15 moreshow less
- ›Adds
server.timeout_keep_aliveconfig key to set the HTTP idle keep-alive timeout, defaulting to5seconds. - ›Adds
memory.session_auto_commitserver-side config to control default enablement and idle scheduler for Session Auto Commit v2, which supports per-sessionauto_commit_policytriggered 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-openvikingas a standalone package providing Retriever, Tools, Message History, Context Wrapper, Store, and Middleware; the originalopenviking.integrations.langchainimport 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.
- ›
findandsearchresults now return explicittagsand omit empty optional fields. - ›VectorDB gains a
textfield 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
openvikingserver 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
SecretRefwith{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_uriis supplied; thelevelparameter is replaced by thedetailtier in context mode.
- ›Adds
- v0.4.12
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 ITCompile scattered research notes into a browsable, searchable wiki — run without--waitfirst to get a Task ID, or add--waitto 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 compilecommand compiles one or moreviking://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--timeoutflags. - ›New
GET /bot/v1/compile/{task_id}endpoint lets callers poll asyncov compiletask status; completed results distinguishcreated,updated, andunchangedartifacts and report page count, link count, warnings, and OKF version. - ›New
ov add-resource --manifest <manifest.yaml>command supports theopenviking-assets/1YAML manifest protocol for declarative, version-controllable asset catalog management with--args dry_run:truepreflight and--wait --timeoutflags; state is persisted to<manifest>.state.json. - ›New
turn_budgetretention mode for Session Commit API (POST /api/v1/sessions/{id}/commit) preserves complete user turns rather than fixed message counts, controlled viaretention_mode,keep_recent_turn_count,retained_message_token_budget, andmin_raw_tail_stepsfields. - ›New
ov task cancel <task_id>command and Python SDK await client.cancel_task("uuid-xxx") enable cooperative cancellation ofadd_resource,session_commit,admin_reindex, andsnapshot_restore_reindextasks; status transitions fromcancellingtocancelledwith 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, returningadded,deleted,modified, orunchanged; 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.enablednow defaults tofalse; deployments relying on automatic Case, Trajectory, and Experience generation after Session Commit must explicitly set{"server": {"agent_evolution": {"enabled": true}}}inov.confto restore the previous behavior. - !The
/api/v1/code/outline,/api/v1/code/search, and/api/v1/code/expandendpoints and the MCP toolscode_outline,code_search, andcode_expandhave been removed; callers must migrate to the Skeleton-first code summary and the genericread,grep,find, andsearchcapabilities.
- ›New