# OpenViking

> A context database that stores agent memory, docs and skills as browsable files

- Repository: https://github.com/volcengine/OpenViking
- Category: Memory, RAG & data
- Stars: 40,609 · Forks: 3,278 · Language: Python · License: AGPL-3.0
- Experience: Some experience
- Page: https://ir.adyog.com/repos/volcengine/openviking/

Most agent memory is a black box. Text goes in, embeddings come out, and nobody can see what was stored. OpenViking organizes context as a virtual filesystem under viking:// instead. Agents use familiar commands such as ls, tree, read, write and grep, and you can open any directory to check or edit what the agent knows.

Content falls into three types: resources (documents and code), memories (user preferences and experience), and skills (how to do tasks). Directories carry generated summaries at three levels: a one-sentence abstract (L0), an overview (L1), and the full original (L2). An agent reads the short summaries first and opens full files only when needed. Search can be limited to one subtree rather than a flat pool of vectors.

When a session is committed, the conversation is archived and memories are extracted as Markdown files you can read, edit and merge. The README reports gains on the LoCoMo and tau2-bench benchmarks with lower token use. These are the authors' own results, run with Doubao models, so check them against your own setup.

## What it does

- **One filesystem for all context**: Documents, memories and skills share a single viking:// tree. Each item has a URI you can browse and retrieve.
- **Layered summaries**: Directories get generated L0 abstracts and L1 overviews. Agents judge relevance before loading the full L2 content.
- **Scoped search**: `find` runs a query directly. `search` plans retrieval from session context. Both can be limited to a project or memory subtree.
- **Readable session memory**: Committing a session archives it and extracts memories as Markdown you can inspect, edit and merge.
- **Agent plugins and SDKs**: An installer sets up a memory plugin for Claude Code, Codex, Cursor, TRAE, OpenCode and more. Python, Go and TypeScript SDKs and an HTTP API are also available.

## What you could build

- Give a coding agent memory that persists across sessions and that you can read and correct.
- Import a code repository or documentation set and search it with ov find and ov grep.
- Store reusable skills next to project knowledge so an agent can find both in one place.
- Build your own agent backend on the Python, Go or TypeScript SDK or the HTTP API.
- Turn source material into a wiki, knowledge graph or report with ov compile (needs VikingBot enabled).

## Who it's for

Developers building or using AI agents who want inspectable memory; you should be comfortable with a command line, Python tooling, and getting a model provider API key for embeddings and a VLM.

## Get started

Install the server with uv and run the init wizard, which writes the model configuration (needs uv, Python 3.10+, and a provider with an embedding model and a VLM). Then use the ov CLI to add a resource and search it, or run the plugin installer to connect your coding agent. A hosted service and a browser demo are also available.

```
uv tool install openviking --upgrade && openviking-server init
```
```
ov add-resource https://github.com/volcengine/OpenViking
```
```
curl -fsSL https://openviking.ai/install | bash
```

Tags: agent-memory, context-database, rag, agent-skills, mcp
