VO

volcengine/openviking

Developer tools
41.1K stars Quality 75 Trend 99AGPL-3.0

Website · Live Demo · GitHub · Issues · Docs · Blog

Overview

Website · Live Demo · GitHub · Issues · Docs · Blog

README


What is OpenViking

OpenViking is an open-source context database for AI agents — one filesystem for everything an agent knows: knowledge, memory, and skills.

Most agent memory is a black box: text goes in, embeddings come out, and nobody can see what was actually stored. OpenViking organizes context as a virtual filesystem under viking:// instead. Agents navigate it like files — ls, tree, read, write, grep — and you can open any directory to inspect and edit what your agent knows. Every directory carries a generated summary, so agents can scan summaries first and decide what to read.

Try OpenViking Studio in your browser, no installation required. Self-host Web Studio.

Why OpenViking

  • One filesystem for knowledge, memory, and skills. Resources hold documents and code; memories retain user preferences and experience; skills define how to perform tasks — not just extracted facts, but the full context, each with a viking:// URI for browsing and retrieval. → Viking URI · Context types
  • Search a directory, not the whole index. Scope semantic search to a project or memory subtree instead of scanning a flat vector pool. find runs a query directly; search plans retrieval from session context. → Retrieval
  • Read the summary before the source. Generated directory abstracts (L0) and overviews (L1) let agents judge relevance before opening full content (L2). → Context layers
  • Sessions become files you can read. Committing a session archives the conversation and extracts memories as Markdown you can inspect, edit, and merge. With VikingBot enabled, ov compile organizes source material into a wiki, knowledge graph, or report. → Sessions · Context compilation

Architecture · Design rationale

viking://
├── resources/              # Resources: project docs, repos, web pages, etc.
│   └── my_project/
│       ├── docs/
│       │   ├── api/
│       │   └── tutorials/
│       └── src/
└── user/
    └── {user_id}/
        ├── memories/
        │   └── preferences/
        │       ├── writing_style
        │       └── coding_habits
        ├── resources/
        │   └── private_project/
        ├── skills/
        │   ├── search_code
        │   └── analyze_data
        └── peers/
            └── web-visitor-alice/

The three loading tiers:

  • L0 (Abstract): a one-sentence summary for quick relevance checks.
  • L1 (Overview): core information and usage scenarios for planning.
  • L2 (Details): the full original data, read only when needed.

Semantically processed directories carry L0/L1 summaries, so agents can judge relevance before reading full files:

viking://resources/my_project/
├── .abstract.md           # L0: quick relevance check
├── .overview.md           # L1: structure and key points
└── docs/
    ├── .abstract.md
    ├── .overview.md
    └── api/
        ├── auth.md         # L2: full content, loaded on demand
        └── endpoints.md

Proof it works

OpenViking 0.3.22 has been evaluated on long-conversation user memory (LoCoMo) and multi-turn agent tasks (tau2-bench). Full results and setup details, including knowledge-base QA, are in the benchmark report; reproduction scripts live in ./benchmark.

To run your own experiments, follow the RAG and Memory evaluation guide for routine VikingBot memory evaluation, published LoCoMo reproduction, separate mem0 prompt comparisons, and RAG evaluation.

The memory evaluation used Doubao 2.0 Pro as the VLM and Doubao-embedding-vision-251215 as the embedding model.

  • User memory (LoCoMo): with OpenViking, all three agent integrations land at 80–83% accuracy — up from 24–57% on their native memory — while input tokens drop by 34.3–91.0% and query latency by 58.45–66.10%.
  • Agent experience (tau2-bench): experience memory lifts task success by +6.87pp (retail) and +11.87pp (airline) over the same LLM without memory.

Quick start

Set up an OpenViking server first; if you already have one, skip to Use it with your agent. Deploying your own needs uv, Python 3.10+ and a model provider with an embedding model and a VLM.

Explore with the CLI

The openviking package includes the ov CLI. With the server running, import a repository and search it:

ov status
ov add-resource https://github.com/volcengine/OpenViking
# Replace TASK_ID with the returned task_id; repeat until status is completed
ov task status TASK_ID
ov ls viking://resources/
ov tree viking://resources/volcengine -L 2
ov find "what is openviking"
ov grep "openviking" --uri viking://resources/volcengine/OpenViking/docs/en

ov find returns matching context with URIs you can inspect. For client configuration (ov config), standalone CLI installs, and index maintenance, see CLI setup.

Build your own integration with the Python, Go, or TypeScript SDK, or the HTTP API.

Use it with your agent

Connect your coding agent to OpenViking for cross-session memory. The memory plugin installer covers Claude Code, Codex, Cursor, TRAE, OpenCode and more, and detects which ones you have.

Then restart your agent. The installer ends with the next steps for each tool, for example:

  Claude Code
    Next: restart Claude Code
    ⋮
    Verify: run /openviking-memory:ov in a session

On its first start Codex stops at Hooks need review; choose Trust all and continue.

Try it: ask it to remember one of your preferences, then ask about it in a new session a little later. Memories are processed in the background, so it’s normal not to find one right after you say it.

The installer needs macOS or Linux, Node.js 18+ and curl, no sudo. On Windows, use the desktop app.

Setup guides for each integration:

General integrations

For setup instructions and integration details, see Integrations.

For framework applications, see the LangChain/LangGraph and Microsoft Agent Framework packages, with a guide to adding other adapters.

Desktop App (Beta)

The desktop app is a console for macOS and Windows x64 (beta). It configures supported local agent integrations, inspects recall and capture events in sessions, and syncs local memories and skills to OpenViking.

Download:

VikingBot

VikingBot is an AI agent framework built on top of OpenViking:

pip install "openviking[bot]"
openviking-server --with-bot
ov chat   # in another terminal

The official Docker image bundles VikingBot and starts it by default alongside the server and console UI. Details: VikingBot guide.

Deploy in production

Run the open-source server in your own environment under AGPLv3. It requires no activation key. Start with server setup or the Docker and deployment guide.

The server supports accounts and user isolation and opt-in resource ACLs. Configure authentication before exposing it beyond localhost.

Commercial editions

Research

Memory that evolves with your agent. VikingMem develops an event-driven approach to extracting, updating, and consolidating long-term memory, giving stateful agents a way to retain useful experience as interactions accumulate. OpenViking open-sources a subset of these core capabilities.

VikingMem: A Memory Base Management System for Stateful LLM-based Applications Jiajie Fu, Junwen Chen, Mengzhao Wang, Aoxiang He, Maojia Sheng, Xiangyu Ke, Yifan Zhu, and Yunjun Gao. arXiv:2605.29640, 2026. Presented at VLDB 2026 in September. 📄 Read the paper on arXiv · Read PDF

Directory structure as retrieval context. This paper provides the formal foundations, index design, and experimental evidence behind OpenViking’s directory-aware retrieval. It defines directory-scoped query and maintenance operations and introduces TrieHI, which OpenViking integrates to resolve directory scopes before vector ranking. This connects the filesystem paradigm to retrieval: agents can search a project or memory subtree, retain its surrounding context, and reorganize it as knowledge evolves.

Directory-Aware Query and Maintenance in Vector Databases Mengzhao Wang, Zheng Gong, Jingpei Hu, Jiajie Fu, Maojia Sheng, Junwen Chen, and Yifan Zhu. arXiv:2606.16903, 2026. Accepted by ICDE. 📄 Read the paper on arXiv · Read PDF

Retrieve the evidence you need with fewer tokens. VikingRAG combines semantic search with document structure, exposing relevant directory segments as evidence gaps arise. Its core mechanisms are integrated into OpenViking. The paper further explores reusing retrieval traces and escalating to multi-round retrieval only when needed, reducing repeated exploration while preserving answer quality.

VikingRAG: Accurate and Token-efficient Retrieval-augmented Generation over Structured Documents Peiyuan Gao, Gaoyuan Zhang, Haojie Qin, Yahui Sun, Qianyi Zhang, Yunhao Zhang, Zeyu Wang, and Wei Lu. arXiv:2609.11390, 2026. Submitted. 📄 Read the paper on arXiv · Read PDF

Partner Projects

  • deer-flow - Open-source long-horizon SuperAgent harness
  • NoKV - AI native distributed file system
  • loopx - Lightweight loop engineering state kernel
  • Hermes Agent - The agent that grows with you
  • NVIDIA cuVS - GPU-accelerated vector search and clustering library

To propose a partnership, open an issue.

Community & Contributing

Security and privacy

For vulnerability reporting and supported versions, see SECURITY.md

License

Copyright © 2026 Volcano Engine (火山引擎) and the OpenViking contributors.

The OpenViking project uses different licenses for different components:

  • Main Project: AGPLv3 - see the LICENSE file for details
  • crates/ov_cli: Apache 2.0 - see the LICENSE for details
  • examples: Apache 2.0 - see the LICENSE for details. The Hermes plugin in examples/hermes-plugin retains its MIT license.
  • integrations/frameworks: the LangChain/LangGraph adapter uses AGPLv3 and the Microsoft Agent Framework adapter uses MIT; see each package’s LICENSE. Their runnable examples retain Apache 2.0; see each package’s examples/LICENSE.
  • third_party: Respective original licenses of third-party projects

Please also note: any wholesale rewriting and subsequent re-open-sourcing of this project is prohibited; any request to translate all or a substantial portion of the project code into another coding language requires prior written authorization from Volcano Engine. For permission requests, please contact the Volcano Engine team — see Community & Contributing for contact channels.

View the full README on GitHub

Recommended Tools

Try a different keyword or remove a filter.

Install

npx skillfish add volcengine/openviking
New to MCP? Start with the mcpskill.org guide →