Skip to content

Architecture Overview

OpenViking is a context database designed for AI Agents, unifying all context types (Memory, Resource, Skill) into a directory structure with semantic retrieval and progressive content loading.

System Overview

┌────────────────────────────────────────────────────────────────────────────┐
│                        OpenViking System Architecture                       │
├────────────────────────────────────────────────────────────────────────────┤
│                                                                            │
│                              ┌─────────────┐                               │
│                              │   Client    │                               │
│                              │ (OpenViking)│                               │
│                              └──────┬──────┘                               │
│                                     │ delegates                            │
│                              ┌──────▼──────┐                               │
│                              │   Service   │                               │
│                              │    Layer    │                               │
│                              └──────┬──────┘                               │
│                                     │                                      │
│           ┌─────────────────────────┼─────────────────────────┐            │
│           │                         │                         │            │
│           ▼                         ▼                         ▼            │
│    ┌─────────────┐          ┌─────────────┐          ┌─────────────┐      │
│    │  Retrieve   │          │   Session   │          │    Parse    │      │
│    │  (Context   │          │  (Session   │          │  (Context   │      │
│    │  Retrieval) │          │  Management)│          │  Extraction)│      │
│    │ search/find │          │ add/used    │          │ Doc parsing │      │
│    │ Intent      │          │ commit      │          │ L0/L1/L2    │      │
│    │ Rerank      │          │ commit      │          │ Tree build  │      │
│    └──────┬──────┘          └──────┬──────┘          └──────┬──────┘      │
│           │                        │                        │             │
│           │                        │ Memory extraction      │             │
│           │                        ▼                        │             │
│           │                 ┌─────────────┐                 │             │
│           │                 │ Compressor  │                 │             │
│           │                 │ Compress/   │                 │             │
│           │                 │ Deduplicate │                 │             │
│           │                 └──────┬──────┘                 │             │
│           │                        │                        │             │
│           └────────────────────────┼────────────────────────┘             │
│                                    ▼                                      │
│    ┌─────────────────────────────────────────────────────────────────┐    │
│    │                         Storage Layer                            │    │
│    │               AGFS (File Content)  +  Vector Index               │    │
│    └─────────────────────────────────────────────────────────────────┘    │
│                                                                            │
└────────────────────────────────────────────────────────────────────────────┘

Core Modules

ModuleResponsibilityKey Capabilities
ClientUnified entryProvides all operation interfaces, delegates to Service layer
ServiceBusiness logicFSService, SearchService, SessionService, ResourceService, RelationService, PackService, DebugService
RetrieveContext retrievalIntent analysis (IntentAnalyzer), hierarchical retrieval (HierarchicalRetriever), Rerank
SessionSession managementMessage recording, usage tracking, session compression, memory commit
ParseContext extractionDocument parsing (PDF/MD/HTML), tree building (TreeBuilder), async semantic generation
CompressorMemory compression8-category memory extraction, LLM deduplication decisions
StorageStorage layerVikingFS virtual filesystem, vector index, AGFS integration

Service Layer

The Service layer decouples business logic from the transport layer, enabling reuse across HTTP Server and CLI:

ServiceResponsibilityKey Methods
FSServiceFile system operationsls, mkdir, rm, mv, tree, stat, read, abstract, overview, grep, glob
SearchServiceSemantic searchsearch, find
SessionServiceSession managementsession, sessions, commit, delete
ResourceServiceResource importadd_resource, add_skill, wait_processed
RelationServiceRelation managementrelations, link, unlink
PackServiceImport/exportexport_ovpack, import_ovpack
DebugServiceDebug serviceobserver (ObserverService)

Dual-Layer Storage

OpenViking uses a dual-layer storage architecture separating content from index (see Storage Architecture):

LayerResponsibilityContent
AGFSContent storageL0/L1/L2 full content, multimedia files, relations
Vector IndexIndex storageURIs, vectors, metadata (no file content)

Data Flow Overview

Adding Context

Input → Parser → TreeBuilder → AGFS → SemanticQueue → Vector Index
  1. Parser: Parse documents, create file and directory structure (no LLM calls)
  2. TreeBuilder: Move temp directory to AGFS, enqueue for semantic processing
  3. SemanticQueue: Async bottom-up L0/L1 generation
  4. Vector Index: Build index for semantic search

Retrieving Context

Query → Intent Analysis → Hierarchical Retrieval → Rerank → Results
  1. Intent Analysis: Analyze query intent, generate 0-5 typed queries
  2. Hierarchical Retrieval: Directory-level recursive search using priority queue
  3. Rerank: Scalar filtering + model reranking
  4. Results: Return contexts sorted by relevance

Session Commit

Messages → Compress → Archive → Memory Extraction → Storage
  1. Messages: Accumulate conversation messages and usage records
  2. Compress: Keep recent N rounds, archive older messages
  3. Archive: Generate L0/L1 for history segments
  4. Memory Extraction: Extract 8-category memories from messages
  5. Storage: Write to AGFS + vector index

Deployment Modes

Embedded Mode

For local development and single-process applications:

python
client = OpenViking(path="./data")
  • Auto-starts AGFS subprocess
  • Uses local vector index
  • Singleton pattern

HTTP Mode

For team sharing, production deployment, and cross-language integration:

python
# Python SDK connects to OpenViking Server
client = SyncHTTPClient(url="http://localhost:1933", api_key="xxx")
bash
# Or use curl / any HTTP client
curl http://localhost:1933/api/v1/search/find \
  -H "X-API-Key: xxx" \
  -d '{"query": "how to use openviking"}'
  • Server runs as standalone process (openviking-server)
  • Clients connect via HTTP API
  • Supports any language that can make HTTP requests
  • See Server Deployment for setup

Design Principles

PrincipleDescription
Pure Storage LayerStorage only handles AGFS operations and basic vector search; Rerank is in retrieval layer
Three-Layer InformationL0/L1/L2 enables progressive detail loading, saving token consumption
Two-Stage RetrievalVector search recalls candidates + Rerank improves accuracy
Single Data SourceAll content read from AGFS; vector index only stores references

Released under the Apache-2.0 License.