-
Notifications
You must be signed in to change notification settings - Fork 125
Open
Labels
enhancementNew feature or requestNew feature or request
Description
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 sessionSDK 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
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request
Type
Projects
Status
Backlog