# klieo-memory-qdrant

Qdrant-backed implementation of klieo-core's `LongTermMemory`.

Part of the [klieo](https://crates.io/crates/klieo) Rust agent framework.

## Quickstart

```rust
use klieo_memory_qdrant::{MemoryQdrant, QdrantConfig, DummyEmbedder};
use std::sync::Arc;

async fn build() -> Result<(), Box<dyn std::error::Error>> {
    let cfg = QdrantConfig::new("http://127.0.0.1:6334");
    let mem = MemoryQdrant::new(cfg, Arc::new(DummyEmbedder)).await?;
    let _ = mem.long_term;
    Ok(())
}
```

## Docker — tested-against matrix

The Qdrant server image you run **must** be wire-compatible with the
`qdrant-client` Rust crate this crate vendors. Major.minor skew
across the `UpsertPoints` RPC has caused first-touch failures (see
adoption-eval finding "qdrant client/server 1.18 vs 1.11 wire
incompatibility").

| klieo-memory-qdrant | vendored qdrant-client | tested server tag(s) |
|---|---|---|
| `0.7.x` | `1.18` | `qdrant/qdrant:v1.12.4` ✓ |
| `0.7.x` | `1.18` | `qdrant/qdrant:v1.13.x` ✓ |
| `0.7.x` | `1.18` | `qdrant/qdrant:v1.11.0` ✗ (UpsertPoints decodes dim=0) |
| `0.7.x` | `1.18` | `qdrant/qdrant:latest` (untested; may drift) |

### Reference docker-compose snippet

```yaml
services:
  qdrant:
    image: qdrant/qdrant:v1.12.4
    ports:
      - "127.0.0.1:6333:6333"  # REST
      - "127.0.0.1:6334:6334"  # gRPC — klieo-memory-qdrant uses this
    volumes:
      - ./qdrant-data:/qdrant/storage
```

## Status

`0.7.x` — public API stable; trait surface follows klieo-core's
strict-SemVer policy. See [`docs/SEMVER.md`](https://github.com/mohrimic/klieo/blob/main/docs/SEMVER.md).

## License

MIT — see [`LICENSE`](https://github.com/mohrimic/klieo/blob/main/LICENSE).
