shadylukin/neumann/neumann-client

Claude Code and agent skill by shadylukin/neumann

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Integrate Neumann database using official client SDKs. Use when writing Rust, Python, or TypeScript code that connects to Neumann, executes queries, or handles results.

Install

npx vskill@latest install shadylukin/neumann/neumann-client

SKILL.md

Neumann Client SDK

SDK Overview

Three official SDKs connect to Neumann:

SDKPackageTransportEmbedded Mode
Rustneumann_client crategRPC (tonic)Yes (in-process QueryRouter)
Pythonneumann packagegRPC (grpcio)Yes (PyO3 native bindings)
TypeScript@neumann/clientgRPC / gRPC-WebNo

All SDKs share the same gRPC protocol (neumann.v1.QueryService) on the default port 9200. The Rust SDK additionally supports an embedded mode that runs the full query engine in-process without a server.

The query language is identical across all SDKs -- you send the same Neumann query strings regardless of which client you use. Result types map to language-appropriate discriminated unions (Rust enums, Python dataclass with QueryResultType, TypeScript tagged unions with type guards).

Connection Patterns

rust
// Rust -- remote (async)
let client = NeumannClient::connect("localhost:9200")
.api_key("key").with_tls().timeout_ms(30_000).build().await?;
// Rust -- embedded (sync, no server needed; feature = "embedded")
let client = NeumannClient::embedded()?;
let result = client.execute_sync("SELECT users")?;
python
# Python -- sync
with NeumannClient.connect("localhost:9200", api_key="...") as client:
result = client.query("SELECT users")
# Python -- async
async with AsyncNeumannClient("localhost:9200") as client:
result = await client.query("SELECT users")
typescript
// TypeScript -- Node.js (gRPC) or browser (gRPC-Web via connectWeb)
const client = await NeumannClient.connect('localhost:9200', { apiKey: 'key' });
const result = await client.query('SELECT users');
client.close();

Query Execution

All SDKs support single query, batch, and streaming execution.

OperationRustPythonTypeScript
Singleexecute(q).awaitquery(q)query(q)
Batchexecute_batch(qs).awaitexecute_batch(qs)executeBatch(qs)
Streamexecute_stream(q).awaitexecute_stream(q)executeStream(q)
PaginatedN/AN/AexecutePaginated(q, opts)

Result Handling

Results are discriminated unions. You MUST check the result type before accessing data. Accessing the wrong accessor returns None/null/empty.

Rust
rust
use query_router::QueryResult;
match result {
QueryResult::Rows(rows) => { /* Vec<Row> */ }
QueryResult::Nodes(nodes) => { /* Vec<NodeResult> */ }
QueryResult::Edges(edges) => { /* Vec<EdgeResult> */ }
QueryResult::Similar(items) => { /* Vec<SimilarResult> */ }
QueryResult::Count(n) => { /* usize */ }
QueryResult::Value(s) => { /* String */ }
QueryResult::Path(ids) => { /* Vec<u64> */ }
QueryResult::TableList(names) => { /* Vec<String> */ }
QueryResult::Empty => { /* DDL/DML success */ }
_ => { /* handle other variants */ }
}
Python
python
from neumann.types import QueryResultType
if result.type == QueryResultType.ROWS:
for row in result.rows:
print(row.get_string("name"), row.get_int("age"))
print(row.to_dict()) # {"name": "Alice", "age": 30}
elif result.type == QueryResultType.NODES:
for node in result.nodes:
print(node.label, node.properties)
elif result.type == QueryResultType.SIMILAR:
for item in result.similar_items:
print(item.key, item.score)
elif result.type == QueryResultType.COUNT:
print(result.count)
TypeScript
typescript
import { isRowsResult, isNodesResult, isSimilarResult, rowToObject } from '@neumann/client';
if (isRowsResult(result)) {
for (const row of result.rows) {
console.log(rowToObject(row));
}
} else if (isNodesResult(result)) {
for (const node of result.nodes) {
console.log(node.label, node.properties);
}
} else if (isSimilarResult(result)) {
for (const item of result.items) {
console.log(item.key, item.score);
}
}

Error Handling

All SDKs use the same error code hierarchy. Retryable errors (Connection, Timeout, Unavailable) should be retried with backoff. Non-retryable errors (Parse, Query, NotFound, Authentication) indicate a logic or data problem.

ErrorCodeRetryableWhen
Connection/Unavailable6YesServer down or unreachable
Timeout6YesRequest exceeded deadline
Authentication5NoBad or missing API key
PermissionDenied3NoInsufficient privileges
NotFound2NoTable, node, or key missing
InvalidArgument1NoBad parameter values
Parse8NoQuery syntax error
Query9NoExecution failure
Internal7NoServer bug

Check retryability: Rust err.is_retryable(), Python ClientConfig.fast_fail() or ClientConfig.high_latency(), TypeScript isRetryable(err).

Vector Client

Each SDK provides a dedicated VectorClient for collection and point operations without writing raw queries.

python
from neumann import VectorClient
vc = VectorClient.connect("localhost:9200")
vc.create_collection("docs", dimension=384, distance="cosine")
vc.upsert_points("docs", [VectorPoint(id="d1", vector=[...], payload={"title": "Hello"})])
results = vc.query_points("docs", query_vector=[...], limit=10)
typescript
const vc = await VectorClient.connect('localhost:9200');
await vc.createCollection('docs', 384, 'cosine');
await vc.upsertPoints('docs', [{ id: 'd1', vector: [...], payload: { title: 'Hello' } }]);
const results = await vc.queryPoints('docs', queryVector, { limit: 10 });

Configuration

All SDKs support timeout, retry, and keepalive configuration with presets.

PresetTimeoutsRetriesUse Case
default30s connect, 30s query3 attemptsGeneral use
fast_fail2s connect, 5s query1 attemptHealth checks, probes
no_retry30s connect, 30s query1 attemptNon-idempotent writes
high_latency30s connect, 120s query5 attemptsCross-region, slow networks
python
config = ClientConfig.high_latency()
client = NeumannClient.connect("remote-host:9200", config=config)
typescript
import { highLatencyConfig } from '@neumann/client';
const client = await NeumannClient.connect('remote-host:9200', highLatencyConfig());

Reference

  • references/rust-api.md -- Rust SDK type reference
  • references/python-api.md -- Python SDK type reference
  • references/typescript-api.md -- TypeScript SDK type reference
  • references/grpc-api.md -- gRPC protocol and grpcurl examples
  • references/rest-api.md -- REST/HTTP gateway reference

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
73
Repository forks
6
7-day trend score
22

Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 18 Mar 2026, 7 months ago.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/shadylukin/neumann/neumann-client/badge)](https://verified-skill.com/skills/shadylukin/neumann/neumann-client)

Something wrong with this skill or its page? Tell us.