Skip to content

[Feature]: Server/CLI Mode Support #48

@qin-ctx

Description

@qin-ctx

Problem Statement

Related Discussion: #37

Background

Current Issues:

  • No CLI command-line tool
  • No HTTP API, cannot be called from other languages
  • Complex production deployment

Design Goals:

  • CLI Mode: Support command-line tools and Agent subprocess calls
  • Server Mode: Provide HTTP API service
  • Multi-language SDKs: Python / TypeScript / Golang
  • Maintain backward compatibility

Proposed Solution

Architecture

CLI / SDK (Python/TS/Go)
         │
         ▼
   ┌───────────┐
   │  Server   │  ← HTTP API
   └─────┬─────┘
         │
   ┌─────┴─────┐
   │  Service  │  ← Business Logic
   └─────┬─────┘
         │
   ┌─────┴─────┐
   │ VikingFS  │  ← Storage Layer
   └───────────┘

Task Breakdown

Task Description Dependencies Priority Assign Status
T1 Service Layer Extraction - P0 @qin-ctx ✅ Done
T2 HTTP Server Implementation T1 P1 @qin-ctx ✅ Done
T3 CLI Basic Framework T1 P1 @qin-ctx ✅ Done
T4 Python SDK HTTP Mode T2 P2 @qin-ctx ✅ Done
T5 CLI Complete Commands T3 P2 @qin-ctx ✅ Done
T6 Integration Tests T4, T5 P3 @qin-ctx ✅ Done
T7 Documentation Update T6 P3 @qin-ctx ✅ Done
T8 Docker Deployment T2 P1 ⬜ Not Started
T9 MCP Server Support T1 P1 @Wangzy455 ⬜ Not Started
T10 TypeScript SDK T2 P2 ⬜ Not Started
T11 Golang SDK T2 P2 ⬜ Not Started

Status Legend: ⬜ Not Started | 🔄 In Progress | ✅ Done | ⏸️ Blocked

Dependency Graph

T1 (Service Layer)
    ├── T2 (Server) ──┬── T4 (Python SDK) ──┐
    │                 ├── T8 (Docker)        │
    │                 ├── T10 (TS SDK)       ├── T6 (Tests) ── T7 (Docs)
    │                 └── T11 (Go SDK)       │
    │                                        │
    ├── T3 (CLI Basic) ── T5 (CLI Full) ────┘
    │
    └── T9 (MCP Server)

Design Documents

  • Technical Design - Complete architecture, interface definitions, API design
  • Task Prompts - Detailed requirements and acceptance criteria for each task

Alternatives Considered

No response

Feature Area

Core (Client/Engine)

Use Case

CLI Command Examples

openviking serve --port 8000           # Start server
openviking add-resource ./docs/        # Import resources
openviking find "how to configure"     # Semantic search
openviking read viking://resources/x   # Read content
openviking abstract viking://...       # L0 summary
openviking session new --user alice    # Create session

SDK Usage Examples

from openviking import OpenViking

# Embedded mode (existing)
client = OpenViking(path="./data")

# HTTP mode (new)
client = OpenViking(url="http://localhost:8000", api_key="xxx")

# Consistent API
results = client.find("how to configure")

Example API (Optional)

Additional Context

No response

Contribution

  • I am willing to contribute to implementing this feature

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

Status

Backlog

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions