Skip to content
Back to skills

148 Client 89374855

ASecurity

The OpenViking client is the main entry point for all operations.

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 11, 2026
devopspythontestingapidatabasebackenddocumentation

Works with

  • cli
  • api

Security analysis

A100/100

Scanned October 11, 2026

npx -y skills add tools-only/X-Skills --skill 148-client_89374855 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 148 Client 89374855?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 148 Client 89374855
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-148-client-89374855/badge)](https://www.skillsdirectory.com/skills/tools-only-148-client-89374855)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
# Client

The OpenViking client is the main entry point for all operations.

## Deployment Modes

| Mode | Description | Use Case |
|------|-------------|----------|
| **Embedded** | Local storage, singleton instance | Development, small applications |
| **Service** | Remote storage services, multiple instances | Production, multi-process |

## API Reference

### OpenViking()

Create an OpenViking client instance.

**Signature**

```python
def __init__(
    self,
    path: Optional[str] = None,
    vectordb_url: Optional[str] = None,
    agfs_url: Optional[str] = None,
    user: Optional[str] = None,
    config: Optional[OpenVikingConfig] = None,
    **kwargs,
)
```

**Parameters**

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| path | str | No* | None | Local storage path (embedded mode) |
| vectordb_url | str | No* | None | Remote VectorDB service URL (service mode) |
| agfs_url | str | No* | None | Remote AGFS service URL (service mode) |
| user | str | No | None | Username for session management |
| config | OpenVikingConfig | No | None | Advanced configuration object |

*Either `path` (embedded mode) or both `vectordb_url` and `agfs_url` (service mode) must be provided.

**Example: Embedded Mode**

```python
import openviking as ov

# Create client with local storage
client = ov.OpenViking(path="./my_data")
client.initialize()

# Use client...
results = client.find("test query")
print(f"Found {results.total} results")

client.close()
```

**Example: Service Mode**

```python
import openviking as ov

# Connect to remote services
client = ov.OpenViking(
    vectordb_url="http://vectordb.example.com:8000",
    agfs_url="http://agfs.example.com:8001",
)
client.initialize()

# Use client...
client.close()
```

**Example: Using Config Object**

```python
import openviking as ov
from openviking.utils.config import (
    OpenVikingConfig,
    StorageConfig,
    AGFSConfig,
    VectorDBBackendConfig
)

config = OpenVikingConfig(
    storage=StorageConfig(
        agfs=AGFSConfig(
            backend="local",
            path="./custom_data",
        ),
        vectordb=VectorDBBackendConfig(
            backend="local",
            path="./custom_data",
        )
    )
)

client = ov.OpenViking(config=config)
client.initialize()

# Use client...
client.close()
```

---

### initialize()

Initialize storage and indexes. Must be called before using other methods.

**Signature**

```python
def initialize(self) -> None
```

**Parameters**

None.

**Returns**

| Type | Description |
|------|-------------|
| None | - |

**Example**

```python
client = ov.OpenViking(path="./data")
client.initialize()  # Required before any operations
```

---

### close()

Close the client and release resources.

**Signature**

```python
def close(self) -> None
```

**Parameters**

None.

**Returns**

| Type | Description |
|------|-------------|
| None | - |

**Example**

```python
client = ov.OpenViking(path="./data")
client.initialize()

# ... use client ...

client.close()  # Clean up resources
```

---

### wait_processed()

Wait for all pending resource processing to complete.

**Signature**

```python
def wait_processed(self, timeout: float = None) -> Dict[str, Any]
```

**Parameters**

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| timeout | float | No | None | Timeout in seconds |

**Returns**

| Type | Description |
|------|-------------|
| Dict[str, Any] | Processing status for each queue |

**Return Structure**

```python
{
    "queue_name": {
        "processed": 10,      # Number of processed items
        "error_count": 0,     # Number of errors
        "errors": []          # Error details
    }
}
```

**Example**

```python
import openviking as ov

client = ov.OpenViking(path="./data")
client.initialize()

# Add resources
client.add_resource("./docs/")

# Wait for processing to complete
status = client.wait_processed(timeout=60)
print(f"Processed: {status}")

client.close()
```

---

### reset()

Reset the singleton instance. Primarily used for testing.

**Signature**

```python
@classmethod
def reset(cls) -> None
```

**Parameters**

None.

**Returns**

| Type | Description |
|------|-------------|
| None | - |

**Example**

```python
# Reset singleton (for testing)
ov.OpenViking.reset()
```

---

### observers

Get observer objects for monitoring.

**Signature**

```python
@property
def observers(self) -> Dict[str, Any]
```

**Returns**

| Type | Description |
|------|-------------|
| Dict[str, Any] | Observer objects |

**Return Structure**

```python
{
    "queue": QueueObserver,      # Queue processing observer
    "vikingdb": VikingDBObserver # Vector database observer
}
```

---

## Singleton Behavior

In embedded mode, OpenViking uses singleton pattern:

```python
# These return the same instance
client1 = ov.OpenViking(path="./data")
client2 = ov.OpenViking(path="./data")
assert client1 is client2  # True
```

In service mode, each call creates a new instance:

```python
# These are different instances
client1 = ov.OpenViking(vectordb_url="...", agfs_url="...")
client2 = ov.OpenViking(vectordb_url="...", agfs_url="...")
assert client1 is not client2  # True
```

## Error Handling

```python
import openviking as ov

client = ov.OpenViking(path="./data")

try:
    client.initialize()
except RuntimeError as e:
    print(f"Initialization failed: {e}")

try:
    content = client.read("viking://invalid/path/")
except FileNotFoundError:
    print("Resource not found")

client.close()
```

## Related Documentation

- [Resources](resources.md) - Resource management
- [Retrieval](retrieval.md) - Search operations
- [Sessions](sessions.md) - Session management
- [Configuration](../configuration/configuration.md) - Configuration options

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.