docs/en/api/07-system.md
OpenViking provides system health, observability, and debug APIs for monitoring component status.
Basic health check endpoint. No authentication required. Returns service version and health status. If authentication is provided, also returns auth mode and identity information.
Code Entry Points:
openviking/server/routers/system.py:health_check - HTTP routeopenviking_cli/client/sync_http.py:SyncHTTPClient.health - SDK entrycrates/ov_cli/src/commands/system.rs - CLI commandNo parameters.
HTTP API
GET /health
curl -X GET http://localhost:1933/health
Python SDK
import openviking as ov
client = ov.SyncHTTPClient(url="http://localhost:1933")
client.initialize()
healthy = client.health()
print(f"Healthy: {healthy}")
CLI
ov system health
Response Example
{
"status": "ok",
"healthy": true,
"version": "0.1.x",
"auth_mode": "api_key"
}
Readiness probe for deployment environments. Checks AGFS, VectorDB, APIKeyManager, and Ollama (if configured) status. Returns 200 when all configured subsystems are ready and 503 otherwise. No authentication required (designed for Kubernetes probes).
Code Entry Points:
openviking/server/routers/system.py:readiness_check - HTTP routeNo parameters.
Check Item Descriptions:
agfs: Whether Viking filesystem is accessiblevectordb: Whether vector database is healthyapi_key_manager: Whether API key manager is loadedollama: Whether Ollama service is reachable (only if configured)HTTP API
GET /ready
curl -X GET http://localhost:1933/ready
Response Example
{
"status": "ready",
"checks": {
"agfs": "ok",
"vectordb": "ok",
"api_key_manager": "ok",
"ollama": "not_configured"
}
}
Get system status including initialization state and authenticated user info. result.user is the authenticated request's user_id (from API key or headers), not the process-level service default - clients can use this to resolve multi-tenant paths.
Code Entry Points:
openviking/server/routers/system.py:system_status - HTTP routeopenviking_cli/client/sync_http.py:SyncHTTPClient.get_status - SDK entrycrates/ov_cli/src/commands/system.rs - CLI commandNo parameters.
HTTP API
GET /api/v1/system/status
curl -X GET http://localhost:1933/api/v1/system/status \
-H "X-API-Key: your-key"
Python SDK
status = client.get_status()
print(status)
CLI
ov system status
Response Example
{
"status": "ok",
"result": {
"initialized": true,
"user": "alice"
},
"time": 0.1
}
Wait for all asynchronous processing (embedding, semantic generation) to complete. This method blocks until all queued tasks are processed or timeout occurs.
Code Entry Points:
openviking/server/routers/system.py:wait_processed - HTTP routeopenviking_cli/client/sync_http.py:SyncHTTPClient.wait_processed - SDK entrycrates/ov_cli/src/commands/system.rs - CLI commandParameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| timeout | float | No | None | Timeout in seconds. None means wait indefinitely |
HTTP API
POST /api/v1/system/wait
curl -X POST http://localhost:1933/api/v1/system/wait \
-H "Content-Type: application/json" \
-H "X-API-Key: your-key" \
-d '{
"timeout": 60.0
}'
Python SDK
# Add resources
client.add_resource("./docs/")
# Wait for all processing to complete
status = client.wait_processed(timeout=60.0)
print(f"Processing complete: {status}")
CLI
ov system wait --timeout 60
Response Example
{
"status": "ok",
"result": {
"Embedding": {
"processed": 10,
"requeue_count": 0,
"error_count": 0,
"errors": []
},
"Semantic": {
"processed": 10,
"requeue_count": 0,
"error_count": 0,
"errors": []
}
},
"time": 0.1
}
The observer API provides detailed component-level monitoring.
Get queue system status (embedding and semantic processing queues). Shows pending, in-progress, completed, and error counts for each queue.
Code Entry Points:
openviking/server/routers/observer.py:observer_queue - HTTP routeopenviking/service/debug_service.py:ObserverService.queue - Core implementationopenviking/storage/observers/queue_observer.py - Queue observercrates/ov_cli/src/commands/observer.rs - CLI commandNo parameters.
HTTP API
GET /api/v1/observer/queue
curl -X GET http://localhost:1933/api/v1/observer/queue \
-H "X-API-Key: your-key"
Python SDK
print(client.observer.queue)
# Output:
# [queue] (healthy)
# Queue Pending In Progress Processed Errors Total
# Embedding 0 0 10 0 10
# Semantic 0 0 10 0 10
# TOTAL 0 0 20 0 20
CLI
ov observer queue
Response Example
{
"status": "ok",
"result": {
"name": "queue",
"is_healthy": true,
"has_errors": false,
"status": "Queue Pending In Progress Processed Errors Total\nEmbedding 0 0 10 0 10\nSemantic 0 0 10 0 10\nTOTAL 0 0 20 0 20"
},
"time": 0.1
}
Get VikingDB status (collections, indexes, vector counts).
Code Entry Points:
openviking/server/routers/observer.py:observer_vikingdb - HTTP routeopenviking/service/debug_service.py:ObserverService.vikingdb - Core implementationopenviking/storage/observers/vikingdb_observer.py - VikingDB observercrates/ov_cli/src/commands/observer.rs - CLI commandNo parameters.
HTTP API
GET /api/v1/observer/vikingdb
curl -X GET http://localhost:1933/api/v1/observer/vikingdb \
-H "X-API-Key: your-key"
Python SDK
print(client.observer.vikingdb())
# Output:
# [vikingdb] (healthy)
# Collection Index Count Vector Count Status
# context 1 55 OK
# TOTAL 1 55
# Access specific attributes
print(client.observer.vikingdb().is_healthy) # True
print(client.observer.vikingdb().status) # Status table string
CLI
ov observer vikingdb
Response Example
{
"status": "ok",
"result": {
"name": "vikingdb",
"is_healthy": true,
"has_errors": false,
"status": "Collection Index Count Vector Count Status\ncontext 1 55 OK\nTOTAL 1 55"
},
"time": 0.1
}
Get aggregated model subsystem status (VLM, embedding, rerank). Checks if each model provider is healthy and available.
Code Entry Points:
openviking/server/routers/observer.py:observer_models - HTTP routeopenviking/service/debug_service.py:ObserverService.models - Core implementationopenviking/storage/observers/models_observer.py - Models observercrates/ov_cli/src/commands/observer.rs - CLI commandNo parameters.
HTTP API
GET /api/v1/observer/models
curl -X GET http://localhost:1933/api/v1/observer/models \
-H "X-API-Key: your-key"
Python SDK
print(client.observer.models)
# Output:
# [models] (healthy)
# provider_model healthy detail
# dense_embedding yes ...
# rerank yes ...
# vlm yes ...
CLI
ov observer models
Response Example
{
"status": "ok",
"result": {
"name": "models",
"is_healthy": true,
"has_errors": false,
"status": "provider_model healthy detail\ndense_embedding yes ...\nrerank yes ...\nvlm yes ..."
},
"time": 0.1
}
Get distributed lock system status.
Code Entry Points:
openviking/server/routers/observer.py:observer_lock - HTTP routeopenviking/service/debug_service.py:ObserverService.lock - Core implementationopenviking/storage/observers/lock_observer.py - Lock observercrates/ov_cli/src/commands/observer.rs - CLI commandNo parameters.
HTTP API
GET /api/v1/observer/lock
curl -X GET http://localhost:1933/api/v1/observer/lock \
-H "X-API-Key: your-key"
Python SDK
print(client.observer.lock)
CLI
ov observer transaction
Response Example
{
"status": "ok",
"result": {
"name": "lock",
"is_healthy": true,
"has_errors": false,
"status": "..."
},
"time": 0.1
}
Get retrieval quality metrics.
Code Entry Points:
openviking/server/routers/observer.py:observer_retrieval - HTTP routeopenviking/service/debug_service.py:ObserverService.retrieval - Core implementationopenviking/storage/observers/retrieval_observer.py - Retrieval observercrates/ov_cli/src/commands/observer.rs - CLI commandNo parameters.
HTTP API
GET /api/v1/observer/retrieval
curl -X GET http://localhost:1933/api/v1/observer/retrieval \
-H "X-API-Key: your-key"
Python SDK
print(client.observer.retrieval)
CLI
ov observer retrieval
Response Example
{
"status": "ok",
"result": {
"name": "retrieval",
"is_healthy": true,
"has_errors": false,
"status": "..."
},
"time": 0.1
}
Get overall system status, including all components (queue, vikingdb, models, lock, retrieval).
Code Entry Points:
openviking/server/routers/observer.py:observer_system - HTTP routeopenviking/service/debug_service.py:ObserverService.system - Core implementationcrates/ov_cli/src/commands/observer.rs - CLI commandNo parameters.
HTTP API
GET /api/v1/observer/system
curl -X GET http://localhost:1933/api/v1/observer/system \
-H "X-API-Key: your-key"
Python SDK
print(client.observer.system())
# Output:
# [queue] (healthy)
# ...
#
# [vikingdb] (healthy)
# ...
#
# [models] (healthy)
# ...
#
# [system] (healthy)
CLI
ov observer system
Response Example
{
"status": "ok",
"result": {
"is_healthy": true,
"errors": [],
"components": {
"queue": {
"name": "queue",
"is_healthy": true,
"has_errors": false,
"status": "..."
},
"vikingdb": {
"name": "vikingdb",
"is_healthy": true,
"has_errors": false,
"status": "..."
},
"models": {
"name": "models",
"is_healthy": true,
"has_errors": false,
"status": "..."
},
"lock": {
"name": "lock",
"is_healthy": true,
"has_errors": false,
"status": "..."
},
"retrieval": {
"name": "retrieval",
"is_healthy": true,
"has_errors": false,
"status": "..."
}
}
},
"time": 0.1
}