🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

OpenViking Setup

by @engsathiago

Set up OpenViking context database for OpenClaw agents. OpenViking is an open-source context database designed specifically for AI agents with filesystem-bas...

Versionv1.0.0
Downloads758
Installs1
Stars⭐ 1
TERMINAL
clawhub install openviking-setup

πŸ“– About This Skill


name: openviking-setup description: Set up OpenViking context database for OpenClaw agents. OpenViking is an open-source context database designed specifically for AI agents with filesystem-based memory management, tiered context loading (L0/L1/L2), and self-evolving memory. Use when asked to set up OpenViking, configure context database for agents, implement persistent memory, or when memory management optimization is needed. Triggers on "install openviking", "setup openviking", "context database", "tiered memory", "L0 L1 L2 context".

OpenViking Setup for OpenClaw

OpenViking brings filesystem-based memory management to AI agents with tiered context loading and self-evolving memory. This skill guides you through installation and configuration.

What OpenViking Provides

  • Filesystem paradigm: Unified context management (memories, resources, skills)
  • Tiered loading (L0/L1/L2): Load only what's needed, save tokens
  • Self-evolving memory: Gets smarter with use
  • OpenClaw plugin: Native integration available
  • Prerequisites

  • Python 3.10+
  • Go 1.22+ (for AGFS components)
  • GCC 9+ or Clang 11+ (for core extensions)
  • VLM model access (for image/content understanding)
  • Embedding model access (for vectorization)
  • Quick Start

    Step 1: Install OpenViking

    # Python package
    pip install openviking --upgrade --force-reinstall

    CLI tool

    curl -fsSL https://raw.githubusercontent.com/volcengine/OpenViking/main/crates/ov_cli/install.sh | bash

    Step 2: Create Configuration

    Create ~/.openviking/ov.conf:

    {
      "storage": {
        "workspace": "/home/your-name/openviking_workspace"
      },
      "log": {
        "level": "INFO",
        "output": "stdout"
      },
      "embedding": {
        "dense": {
          "api_base": "https://api.openai.com/v1",
          "api_key": "your-openai-api-key",
          "provider": "openai",
          "dimension": 1536,
          "model": "text-embedding-3-small"
        },
        "max_concurrent": 10
      },
      "vlm": {
        "api_base": "https://api.openai.com/v1",
        "api_key": "your-openai-api-key",
        "provider": "openai",
        "model": "gpt-4o",
        "max_concurrent": 100
      }
    }
    

    Step 3: Configure Provider

    OpenViking supports multiple VLM providers:

    | Provider | Model Example | Notes | |----------|---------------|-------| | openai | gpt-4o | Official OpenAI API | | volcengine | doubao-seed-2-0-pro | Volcengine Doubao | | litellm | claude-3-5-sonnet | Unified access (Anthropic, DeepSeek, Gemini, etc.) |

    For LiteLLM (recommended for flexibility):

    {
      "vlm": {
        "provider": "litellm",
        "model": "claude-3-5-sonnet-20241022",
        "api_key": "your-anthropic-key"
      }
    }
    

    For Ollama (local models):

    {
      "vlm": {
        "provider": "litellm",
        "model": "ollama/llama3.1",
        "api_base": "http://localhost:11434"
      }
    }
    

    OpenClaw Integration

    Plugin Installation

    OpenViking has a native OpenClaw plugin for seamless integration:

    # Install OpenClaw plugin
    pip install openviking-openclaw

    Or from source

    git clone https://github.com/volcengine/OpenViking cd OpenViking/plugins/openclaw pip install -e .

    Configuration for OpenClaw

    Add to your OpenClaw config:

    # ~/.openclaw/config.yaml
    memory:
      provider: openviking
      config:
        workspace: ~/.openviking/workspace
        tiers:
          l0:
            max_tokens: 4000
            auto_flush: true
          l1:
            max_tokens: 16000
            compression: true
          l2:
            max_tokens: 100000
            archive: true
    

    Memory Tiers Explained

    | Tier | Purpose | Token Budget | Behavior | |------|---------|--------------|----------| | L0 | Active working memory | 4K tokens | Always loaded, fast access | | L1 | Frequently accessed | 16K tokens | Compressed, on-demand | | L2 | Archive/cold storage | 100K+ tokens | Semantic search only |

    How Tiers Work

    1. New context goes to L0 2. L0 fills β†’ oldest items compressed to L1 3. L1 fills β†’ oldest items archived to L2 4. Retrieval searches all tiers, returns relevant context

    Directory Structure

    ~/.openviking/
    β”œβ”€β”€ ov.conf                 # Configuration
    └── workspace/
        β”œβ”€β”€ memories/
        β”‚   β”œβ”€β”€ sessions/        # L0: Active session memory
        β”‚   β”œβ”€β”€ compressed/     # L1: Compressed memories
        β”‚   └── archive/        # L2: Long-term storage
        β”œβ”€β”€ resources/          # Files, documents, assets
        └── skills/             # Skill-specific context
    

    Usage Patterns

    Adding Memory

    from openviking import MemoryStore

    store = MemoryStore()

    Add to L0

    store.add_memory( content="User prefers Portuguese language responses", metadata={"tier": "l0", "category": "preference"} )

    Add resource

    store.add_resource( path="project_spec.md", content=open("project_spec.md").read() )

    Retrieving Context

    # Semantic search across all tiers
    results = store.search(
        query="user preferences",
        tiers=["l0", "l1", "l2"],
        limit=10
    )

    Directory-based retrieval (more precise)

    results = store.retrieve( path="memories/sessions/2026-03-16/", recursive=True )

    Compaction

    # Trigger manual compaction
    store.compact()

    View compaction status

    status = store.status() print(f"L0: {status.l0_tokens}/{status.l0_max}") print(f"L1: {status.l1_tokens}/{status.l1_max}")

    Best Practices

    Memory Hygiene

    1. Categorize entries: Use metadata tags for better retrieval 2. Flush L0 regularly: Let compaction run, don't hoard 3. Use directory structure: Organize by project/topic 4. Review L2 periodically: Archive stale memories

    Token Efficiency

    1. Let OpenViking manage tiers automatically 2. Use semantic search for L2 (don't load entire archive) 3. Compress verbose content before adding to L1 4. Keep L0 under 50% capacity for best performance

    OpenClaw Workflow

    1. Session starts β†’ OpenViking loads L0 2. Conversation proceeds β†’ context auto-promoted to L1/L2 3. Long gaps β†’ L2 provides relevant historical context 4. Sessions compound β†’ agent gets smarter over time

    Troubleshooting

    Common Issues

    "No module named 'openviking'"

  • Ensure Python 3.10+ is active
  • Try pip install --user openviking
  • "Embedding model not found"

  • Check ov.conf has correct provider and model
  • Verify API key is valid
  • "L0 overflow"

  • Reduce l0.max_tokens in config
  • Manually call store.compact()
  • "Slow retrieval from L2"

  • Consider pre-loading frequently accessed resources to L1
  • Use directory-based retrieval for better precision
  • Resources

  • GitHub: https://github.com/volcengine/OpenViking
  • Documentation: https://github.com/volcengine/OpenViking/tree/main/docs
  • OpenClaw Plugin: https://github.com/volcengine/OpenViking/tree/main/plugins/openclaw
  • Examples: https://github.com/volcengine/OpenViking/tree/main/examples
  • What Gets Better

    After setup, your agent gains:

    1. Persistent memory across sessions 2. Smarter retrieval with semantic + directory search 3. Token efficiency with tiered loading 4. Self-improvement as context accumulates 5. Observable context with retrieval trajectories

    The more your agent works, the more context it retainsβ€”without token bloat.

    πŸ’‘ Examples

    Step 1: Install OpenViking

    # Python package
    pip install openviking --upgrade --force-reinstall

    CLI tool

    curl -fsSL https://raw.githubusercontent.com/volcengine/OpenViking/main/crates/ov_cli/install.sh | bash

    Step 2: Create Configuration

    Create ~/.openviking/ov.conf:

    {
      "storage": {
        "workspace": "/home/your-name/openviking_workspace"
      },
      "log": {
        "level": "INFO",
        "output": "stdout"
      },
      "embedding": {
        "dense": {
          "api_base": "https://api.openai.com/v1",
          "api_key": "your-openai-api-key",
          "provider": "openai",
          "dimension": 1536,
          "model": "text-embedding-3-small"
        },
        "max_concurrent": 10
      },
      "vlm": {
        "api_base": "https://api.openai.com/v1",
        "api_key": "your-openai-api-key",
        "provider": "openai",
        "model": "gpt-4o",
        "max_concurrent": 100
      }
    }
    

    Step 3: Configure Provider

    OpenViking supports multiple VLM providers:

    | Provider | Model Example | Notes | |----------|---------------|-------| | openai | gpt-4o | Official OpenAI API | | volcengine | doubao-seed-2-0-pro | Volcengine Doubao | | litellm | claude-3-5-sonnet | Unified access (Anthropic, DeepSeek, Gemini, etc.) |

    For LiteLLM (recommended for flexibility):

    {
      "vlm": {
        "provider": "litellm",
        "model": "claude-3-5-sonnet-20241022",
        "api_key": "your-anthropic-key"
      }
    }
    

    For Ollama (local models):

    {
      "vlm": {
        "provider": "litellm",
        "model": "ollama/llama3.1",
        "api_base": "http://localhost:11434"
      }
    }
    

    βš™οΈ Configuration

  • Python 3.10+
  • Go 1.22+ (for AGFS components)
  • GCC 9+ or Clang 11+ (for core extensions)
  • VLM model access (for image/content understanding)
  • Embedding model access (for vectorization)
  • πŸ“‹ Tips & Best Practices

    Memory Hygiene

    1. Categorize entries: Use metadata tags for better retrieval 2. Flush L0 regularly: Let compaction run, don't hoard 3. Use directory structure: Organize by project/topic 4. Review L2 periodically: Archive stale memories

    Token Efficiency

    1. Let OpenViking manage tiers automatically 2. Use semantic search for L2 (don't load entire archive) 3. Compress verbose content before adding to L1 4. Keep L0 under 50% capacity for best performance

    OpenClaw Workflow

    1. Session starts β†’ OpenViking loads L0 2. Conversation proceeds β†’ context auto-promoted to L1/L2 3. Long gaps β†’ L2 provides relevant historical context 4. Sessions compound β†’ agent gets smarter over time