Skip to main content

A Cognitive Memory Engine for Persistent AI Systems

Project description

YantrikDB — A Cognitive Memory Engine for Persistent AI Systems

The memory engine for AI that actually knows you.

PyPI Crates.io License: AGPL-3.0

Get Started in 60 Seconds

For AI agents (MCP — works with Claude, Cursor, Windsurf, Copilot)

pip install yantrikdb-mcp

Add to your MCP client config:

{
  "mcpServers": {
    "yantrikdb": {
      "command": "yantrikdb-mcp"
    }
  }
}

That's it. The agent auto-recalls context, auto-remembers decisions, and auto-detects contradictions — no prompting needed. See yantrikdb-mcp for full docs.

As a Python library

pip install yantrikdb

The engine ships a default embedder (potion-base-2M, ~7 MB, distilled from BGE-base-en-v1.5) — record_text() / recall_text() work out of the box. No sentence-transformers install. No first-run model download. No ONNX runtime. Just one pip install.

import yantrikdb

# Default: bundled embedder, dim=64. Just works.
db = yantrikdb.YantrikDB.with_default("memory.db")

db.record("Alice is the engineering lead", importance=0.8, domain="people")
db.record("Project deadline is March 30", importance=0.9, domain="work")
db.record("User prefers dark mode", importance=0.6, domain="preference")

results = db.recall("who leads the team?", top_k=3)
# → [{"text": "Alice is the engineering lead", "score": 1.0}, ...]

db.relate("Alice", "Engineering", "leads")
db.get_edges("Alice")

db.think()  # consolidate, detect conflicts, mine patterns

db.close()

Want higher-quality embeddings?

Three opt-in upgrade paths, in increasing weight:

# 1. Larger bundled variant — downloads on first call, caches under
#    your user data dir. Self-hosted from yantrikos/yantrikdb-models;
#    no HuggingFace dependency, no rate limits.
db = yantrikdb.YantrikDB("memory.db", embedding_dim=256)
db.set_embedder_named("potion-base-8M")   # ~28 MB, ~92% MiniLM
# or:  db.set_embedder_named("potion-base-32M")  # ~121 MB, ~95% MiniLM

# 2. Bring your own embedder (sentence-transformers, fastembed, custom).
from sentence_transformers import SentenceTransformer
db = yantrikdb.YantrikDB("memory.db", embedding_dim=384)
db.set_embedder(SentenceTransformer("all-MiniLM-L6-v2"))

# 3. Slim build (no bundled embedder, must set_embedder yourself).
#    For deployments where the ~7 MB bundle is intolerable.
#    Rust:  yantrikdb = { version = "0.7", default-features = false }
Path Quality vs MiniLM Size on disk Install network
Bundled default (with_default) ~89% ~7 MB (bundled) none
set_embedder_named("potion-base-8M") ~92% ~28 MB (cached) first call only
set_embedder_named("potion-base-32M") ~95% ~121 MB (cached) first call only
set_embedder(MiniLM) 100% (baseline) ~80 MB sentence-transformers' own download

As a Rust crate

[dependencies]
yantrikdb = "0.7"

# Want set_embedder_named() for runtime model upgrades?
# yantrikdb = { version = "0.7", features = ["embedder-download"] }

# Slim build (no bundled embedder, no network code path):
# yantrikdb = { version = "0.7", default-features = false }

The Problem

Current AI memory is:

Store everything → Embed → Retrieve top-k → Inject into context → Hope it helps.

That's not memory. That's a search engine with extra steps.

Real memory is hierarchical, compressed, contextual, self-updating, emotionally weighted, time-aware, and predictive. YantrikDB is built for that.

Why Not Existing Solutions?

Solution What it does What it lacks
Vector DBs (Pinecone, Weaviate) Nearest-neighbor lookup No decay, no causality, no self-organization
Knowledge Graphs (Neo4j) Structured relations Poor for fuzzy memory, not adaptive
Memory Frameworks (LangChain, Mem0) Retrieval wrappers Not a memory architecture — just middleware
File-based (CLAUDE.md, memory files) Dump everything into context O(n) token cost, no relevance filtering

Benchmark: Selective Recall vs. File-Based Memory

Memories File-Based YantrikDB Token Savings Precision
100 1,770 tokens 69 tokens 96% 66%
500 9,807 tokens 72 tokens 99.3% 77%
1,000 19,988 tokens 72 tokens 99.6% 84%
5,000 101,739 tokens 53 tokens 99.9% 88%

At 500 memories, file-based exceeds 32K context windows. At 5,000, it doesn't fit in any context window — not even 200K. YantrikDB stays at ~70 tokens per query. Precision improves with more data — the opposite of context stuffing.

Architecture

Design Principles

  • Embedded, not client-server — single file, no server process (like SQLite)
  • Local-first, sync-native — works offline, syncs when connected
  • Cognitive operations, not SQLrecord(), recall(), relate(), not SELECT
  • Living system, not passive store — does work between conversations
  • Thread-safeSend + Sync with internal Mutex/RwLock, safe for concurrent access

Five Indexes, One Engine

┌──────────────────────────────────────────────────────┐
│                   YantrikDB Engine                    │
│                                                      │
│  ┌──────────┬──────────┬──────────┬──────────┐       │
│  │  Vector  │  Graph   │ Temporal │  Decay   │       │
│  │  (HNSW)  │(Entities)│ (Events) │  (Heap)  │       │
│  └──────────┴──────────┴──────────┴──────────┘       │
│  ┌──────────┐                                        │
│  │ Key-Value│  WAL + Replication Log (CRDT)          │
│  └──────────┘                                        │
└──────────────────────────────────────────────────────┘
  1. Vector Index (HNSW) — semantic similarity search across memories
  2. Graph Index — entity relationships, profile aggregation, bridge detection
  3. Temporal Index — time-aware queries ("what happened Tuesday", "upcoming deadlines")
  4. Decay Heap — importance scores that degrade over time, like human memory
  5. Key-Value Store — fast facts, session state, scoring weights

Decoupled Write Path (v0.6.6+)

The vector index is structured as a two-tier LSM: a small mutable delta and an immutable HNSW cold tier swapped atomically via ArcSwap. Foreground writes only touch the delta (brief lock, O(1) push); HNSW work amortizes on a dedicated compactor thread. This is what eliminated the production wedge where sustained writes starved readers — see CONCURRENCY.md and docs/decoupled_write_path_rfc.md.

flowchart LR
    subgraph CLIENT["Caller"]
        C1["record / record_with_rid"]
        C2["recall / recall_with_seq"]
    end

    subgraph FG["Foreground — P1, brief locks only"]
        F1["assign_seq<br/>vec_seq.fetch_add<br/>(or fetch_max for cluster seq)"]
        F2["DeltaIndex.append<br/>brief RwLock&lt;Vec&gt; push"]
        F3["bump_visible_seq<br/>DashMap + AtomicU64<br/>(lock-free)"]
        F4["log_op → SQLite WAL"]
    end

    subgraph IDX["DeltaIndex (per engine)"]
        D1[("delta<br/>RwLock&lt;Vec&lt;DeltaEntry&gt;&gt;<br/>cap = delta_max (256)")]
        D2[("cold<br/>ArcSwap&lt;HnswIndex&gt;<br/>lock-free read")]
    end

    subgraph BG["Background — P3, dedicated threads"]
        B1["Compactor (1s tick)<br/>fires when delta past half-cap<br/>OR oldest entry > max_dirty_age"]
        B2["Materializer pool<br/>N = cores / 2<br/>drains pending oplog ops"]
    end

    subgraph STORE["SQLite (WAL mode, single file)"]
        S1["memories"]
        S2["oplog"]
        S3["entity_edges, sessions, ..."]
    end

    C1 --> F1
    F1 --> F2
    F2 --> D1
    F1 --> F3
    F1 --> F4
    F4 --> S2

    C2 -.->|"optional<br/>wait_for_visible_seq"| F3
    C2 --> D1
    C2 --> D2

    B1 -->|"seal + clone + ArcSwap.store"| D1
    B1 --> D2
    B2 --> S2
    B2 --> S1
    B2 --> S3

The structural invariant. Foreground (P1) and background (P3) do not share a lock primitive that holds for non-O(1) work. The cold tier is read lock-free via ArcSwap; the delta's RwLock is held for the O(1) push only. This is what makes "no single background task can wedge reads, writes, or recovery" enforceable — see CONCURRENCY.md Rules 2 and 3 for the names and failure modes if violated.

Cluster Mode (RFC 010 + Phase 6 RYW)

For multi-node deployments, yantrikdb-server wraps the engine with openraft for leader-elected replication. The four cluster-mutation primitives take the openraft commit-log index as their seq, so all nodes agree on a single global monotonic sequence — read-your-writes works across the cluster, not just within a node.

flowchart LR
    L["Leader<br/>HTTP request"]
    LR["Leader engine<br/>record_with_rid(seq=Some(log_idx))"]
    OR["openraft<br/>commit log"]
    F1["Follower 1 applier<br/>record_with_rid(seq=Some(log_idx))"]
    F2["Follower 2 applier<br/>record_with_rid(seq=Some(log_idx))"]
    R["Reader on any node<br/>recall_with_seq(min_seq=log_idx)"]

    L --> LR
    LR --> OR
    OR -->|replicate + apply| F1
    OR -->|replicate + apply| F2
    F1 -.->|"visible_seq[ns] reaches log_idx"| R
    F2 -.->|"visible_seq[ns] reaches log_idx"| R
    LR -.->|"visible_seq[ns] reaches log_idx"| R

Each record_with_rid / tombstone_with_rid / upsert_entity_edge_with_id / delete_entity_edge_with_id accepts an optional seq: Option<u64>. Single-node callers pass None and the engine allocates; cluster appliers pass Some(commit_log_index) and the engine ratchets vec_seq up to at least that value via fetch_max. After apply, visible_seq[namespace] reaches the log index, so any subsequent recall_with_seq(min_seq=N) blocks just long enough for the local node to have applied through index N — and no longer.

Memory Types (Tulving's Taxonomy)

Type What it stores Example
Semantic Facts, knowledge "User is a software engineer at Meta"
Episodic Events with context "Had a rough day at work on Feb 20"
Procedural Strategies, what worked "Deploy with blue-green, not rolling update"

All memories carry importance, valence (emotional tone), domain, source, certainty, and timestamps — used in a multi-signal scoring function that goes far beyond cosine similarity.

Key Capabilities

Relevance-Conditioned Scoring

Not just vector similarity. Every recall combines:

  • Semantic similarity (HNSW) — what's topically related
  • Temporal decay — recent memories score higher
  • Importance weighting — critical decisions beat trivia
  • Graph proximity — entity relationships boost connected memories
  • Retrieval feedback — learns from past recall quality

Weights are tuned automatically from usage patterns.

Conflict Detection & Resolution

When memories contradict, YantrikDB doesn't guess — it creates a conflict segment:

"works at Google" (recorded Jan 15) vs. "works at Meta" (recorded Mar 1)
→ Conflict: identity_fact, priority: high, strategy: ask_user

Resolution is conversational: the AI asks naturally, not programmatically.

Semantic Consolidation

After many conversations, memories pile up. think() runs:

  1. Consolidation — merge similar memories, extract patterns
  2. Conflict scan — find contradictions across the knowledge base
  3. Pattern mining — cross-domain discovery ("work stress correlates with health entries")
  4. Trigger evaluation — proactive insights worth surfacing

Proactive Triggers

The engine generates triggers when it detects something worth reaching out about:

  • Memory conflicts needing resolution
  • Approaching deadlines (temporal awareness)
  • Patterns detected across domains
  • High-importance memories about to decay
  • Goal tracking ("how's the marathon training?")

Every trigger is grounded in real memory data — not engagement farming.

Multi-Device Sync (CRDT)

Local-first with append-only replication log:

  • CRDT merging — graph edges, memories, and metadata merge without conflicts
  • Vector indexes rebuild locally — raw memories sync, each device rebuilds HNSW
  • Forget propagation — tombstones ensure forgotten memories stay forgotten
  • Conflict detection — contradictions across devices are flagged for resolution

Sessions & Temporal Awareness

sid = db.session_start("default", "claude-code")
db.record("decided to use PostgreSQL")  # auto-linked to session
db.record("Alice suggested Redis for caching")
db.session_end(sid)
# → computes: memory_count, avg_valence, topics, duration

db.stale(days=14)    # high-importance memories not accessed recently
db.upcoming(days=7)  # memories with approaching deadlines

Full API

Operation Methods
Core record, record_batch, recall, recall_with_response, recall_refine, forget, correct
Knowledge Graph relate, get_edges, search_entities, entity_profile, relationship_depth, link_memory_entity
Cognition think, get_patterns, scan_conflicts, resolve_conflict, derive_personality
Triggers get_pending_triggers, acknowledge_trigger, deliver_trigger, act_on_trigger, dismiss_trigger
Sessions session_start, session_end, session_history, active_session, session_abandon_stale
Temporal stale, upcoming
Procedural record_procedural, surface_procedural, reinforce_procedural
Lifecycle archive, hydrate, decay, evict, list_memories, stats
Sync extract_ops_since, apply_ops, get_peer_watermark, set_peer_watermark
Maintenance rebuild_vec_index, rebuild_graph_index, learned_weights

Technical Decisions

Decision Choice Rationale
Core language Rust Memory safety, no GC, ideal for embedded engines
Architecture Embedded (like SQLite) No server overhead, sub-ms reads, single-tenant
Bindings Python (PyO3), TypeScript Agent/AI layer integration
Storage Single file per user Portable, backupable, no infrastructure
Sync CRDTs + append-only log Conflict-free for most operations, deterministic
Thread safety Mutex/RwLock, Send+Sync Safe concurrent access from multiple threads
Query interface Cognitive operations API Not SQL — designed for how agents think

Ecosystem

Package What Install
yantrikdb Rust engine cargo add yantrikdb
yantrikdb Python bindings (PyO3) pip install yantrikdb
yantrikdb-mcp MCP server for AI agents pip install yantrikdb-mcp

Roadmap

  • V0 — Embedded engine, core memory model (record, recall, relate, consolidate, decay)
  • V1 — Replication log, CRDT-based sync between devices
  • V2 — Conflict resolution with human-in-the-loop
  • V3 — Proactive cognition loop, pattern detection, trigger system
  • V4 — Sessions, temporal awareness, cross-domain pattern mining, entity profiles
  • V5 — Multi-agent shared memory, federated learning across users

Worked example: Wirecard (RFC 008 substrate — with honest limits)

For nearly a decade, Wirecard's filings and EY's audit attested to €1.9B in Philippine escrow accounts. In June 2020 both banks and the central bank formally denied the accounts existed.

When the source_lineage fields are hand-populated — EY as [wirecard, ey] to capture audit dependence on Wirecard-provided documents, BSP as [bsp, bpi, bdo] to capture restatement of the commercial banks — RFC 008's discounts the dependent claims, and the contest operator's temporal split distinguishes present-tense contradictions from historical state changes. On this hand-populated data, the substrate produces useful annotations.

Honest limits (surfaced by Phase 2 empirical testing, Apr 2026):

  • On naturalistic evidence where a real agent populates the fields, the substrate's gates don't reliably fire. Cases B and C of the Phase 2 eval need an extractor/canonicalizer (not yet built) to work; Case A exposed that is mathematically incapable of flipping decisions at realistic N, regardless of coefficient tuning.
  • Current claim: structured schema for evidence provenance/temporal/conflict annotation, useful for audit and inspection. The dependence-discount operator works on curated inputs but needs replacement before it can drive decisions.
  • Not a current claim: "decision-improvement substrate for AGI-capable agents." That framing is withdrawn pending RFC 009.

See docs/showcase/wirecard.md for the full walkthrough including the Phase 2 negative result and the gold-state ablation that partitioned operator failure from extraction failure. Run the hand-populated demonstration directly:

cargo run --example showcase_wirecard

Research & Publications

Author

Pranab SarkarORCID · LinkedIn · developer@pranab.co.in

License

AGPL-3.0. See LICENSE for the full text.

The MCP server is MIT-licensed — using the engine via the MCP server does not trigger AGPL obligations on your code.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yantrikdb-0.7.8.tar.gz (8.2 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

yantrikdb-0.7.8-cp313-cp313-win_amd64.whl (12.3 MB view details)

Uploaded CPython 3.13Windows x86-64

yantrikdb-0.7.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

yantrikdb-0.7.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (13.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

yantrikdb-0.7.8-cp313-cp313-macosx_11_0_arm64.whl (12.7 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

yantrikdb-0.7.8-cp313-cp313-macosx_10_12_x86_64.whl (12.9 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

yantrikdb-0.7.8-cp312-cp312-win_amd64.whl (12.3 MB view details)

Uploaded CPython 3.12Windows x86-64

yantrikdb-0.7.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

yantrikdb-0.7.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (13.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

yantrikdb-0.7.8-cp312-cp312-macosx_11_0_arm64.whl (12.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

yantrikdb-0.7.8-cp312-cp312-macosx_10_12_x86_64.whl (12.9 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

yantrikdb-0.7.8-cp311-cp311-win_amd64.whl (12.3 MB view details)

Uploaded CPython 3.11Windows x86-64

yantrikdb-0.7.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

yantrikdb-0.7.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (13.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

yantrikdb-0.7.8-cp311-cp311-macosx_11_0_arm64.whl (12.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

yantrikdb-0.7.8-cp311-cp311-macosx_10_12_x86_64.whl (13.0 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

yantrikdb-0.7.8-cp310-cp310-win_amd64.whl (12.3 MB view details)

Uploaded CPython 3.10Windows x86-64

yantrikdb-0.7.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

yantrikdb-0.7.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (13.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

yantrikdb-0.7.8-cp310-cp310-macosx_11_0_arm64.whl (12.7 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

yantrikdb-0.7.8-cp310-cp310-macosx_10_12_x86_64.whl (13.0 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

Details for the file yantrikdb-0.7.8.tar.gz.

File metadata

  • Download URL: yantrikdb-0.7.8.tar.gz
  • Upload date:
  • Size: 8.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.13.1

File hashes

Hashes for yantrikdb-0.7.8.tar.gz
Algorithm Hash digest
SHA256 b957871428556c4f5e801ff6ead44efceb89f62cd75f3bf71715ef7e8f3c4907
MD5 36c1b64b9491eab1084bb1d61ea7cdd1
BLAKE2b-256 a4e4b6f07fa734e46806c6cbeffd9e1a91e4ae14c095ba221cf3f8a37e77506a

See more details on using hashes here.

File details

Details for the file yantrikdb-0.7.8-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for yantrikdb-0.7.8-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ffdaee8763d56c9b3788e888893e72683eb3e11bc4f7dd12e9c42a4b4a6d6fda
MD5 ce301631ae8f717532ef45d303abc02b
BLAKE2b-256 3fbe6978aedf65eab2bfce3f19f81c359c893ef402a0ce4cd001d0cb963d402a

See more details on using hashes here.

File details

Details for the file yantrikdb-0.7.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for yantrikdb-0.7.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d23f1483bce5cc84743a2de48055ee0589b82addd3faa8ec243b401083875683
MD5 49fcd3109a073b3aaf9d359fc055aec3
BLAKE2b-256 a19170ab27a920da6df4baffbac584706b572b4696b2685633c7fe5828466fc5

See more details on using hashes here.

File details

Details for the file yantrikdb-0.7.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for yantrikdb-0.7.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fdf95a59e492e027bde5ed15aa7cd3306ac6d3d7bca2babc606254e853191f4b
MD5 a5f197dc68c47fc8d5dc78c904333acd
BLAKE2b-256 aa6fb8dd4f2b21936b44ea61a70c89d4519e7edbfcbf7a41b9aed714a197826c

See more details on using hashes here.

File details

Details for the file yantrikdb-0.7.8-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for yantrikdb-0.7.8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5180ccaa224fe2a4589d7f3b789e248b8486e883b2605bd9337750533fd5d7e2
MD5 83efad212dac8ed359ab9466e7aaf491
BLAKE2b-256 586d8f6c08ec71b41221867e4f0c8efd18b9fc1828e6c973103f0c5a21481fff

See more details on using hashes here.

File details

Details for the file yantrikdb-0.7.8-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for yantrikdb-0.7.8-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d600664385fd2f443138cde3d247f14f51852280b6ac60df1d895a8739389210
MD5 b0341d4bf9a1db0628f57ec104ae495a
BLAKE2b-256 274370826d34fd3770f5ac6194ba2281d58aa540b6400b4566e87ffdce333eb3

See more details on using hashes here.

File details

Details for the file yantrikdb-0.7.8-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for yantrikdb-0.7.8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 12d93541b91788e2d12668d2e0fb17224777f336c155c931396862ab663d6728
MD5 a6bcb4cbe9a4f84c8620bcfde74546d4
BLAKE2b-256 6dcc187b1beaa7346cef834a6b72366796efa9665a40ade44f67b13575267588

See more details on using hashes here.

File details

Details for the file yantrikdb-0.7.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for yantrikdb-0.7.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5d9bb9c9a9412c843a8a506eb07e7da6065dbb6889f74ba20e998029c7fc8322
MD5 1bae8383774c32c4da2a1bf862229845
BLAKE2b-256 79e85b8d7e56993144cce293791ca38bbb9beeb7a705f52b01020cc8eab74660

See more details on using hashes here.

File details

Details for the file yantrikdb-0.7.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for yantrikdb-0.7.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5a6e61d2364d4d447ee7f9d9d241acf1c98adbf58e8457445e0b87abc79f0bb1
MD5 657eb827661736b3d429fe07943b6759
BLAKE2b-256 0b03f3fe2c205b5e141acc36da6b7252a259684c472a63715f01fe57e9964c3b

See more details on using hashes here.

File details

Details for the file yantrikdb-0.7.8-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for yantrikdb-0.7.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 87e785d397c4436f341dec862a08703821cd035cc1dfc90effb4ef7cbfdd9950
MD5 e3a74ec7f0685b65bf80b4f24ccfd97d
BLAKE2b-256 c023b8566c4da5ade81461ba73a903ead1594ae00b4ebe7c2520992a87a4c17f

See more details on using hashes here.

File details

Details for the file yantrikdb-0.7.8-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for yantrikdb-0.7.8-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f9794679b6059f4a22a2a2af3da9b4e4c194b91d5675d6d84d6d8aef0670fa2e
MD5 adb102044a68f455d78ec3a98e7fdd52
BLAKE2b-256 c29d34f4533c93dfe25133e774cb5a7a0fee6ed12c185947436512af77e8758b

See more details on using hashes here.

File details

Details for the file yantrikdb-0.7.8-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for yantrikdb-0.7.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6ae6e91fc7517f4a5d1a32b57e9d562c1a59340ee286ff2b901a00190c7f8190
MD5 428a0f39b272fe6e5add2c00ed44359a
BLAKE2b-256 5c3e7d395d2ebd401e16e34299fc7392f8afd18ea16e5b9dcc727016e0c284a8

See more details on using hashes here.

File details

Details for the file yantrikdb-0.7.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for yantrikdb-0.7.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2d3cefc686053f0fbb2f90e41fb7097a321d544c938eae9b51718e5f66dfd0a7
MD5 274915a2781a0b3cff832f31892b994c
BLAKE2b-256 ef1aece9bac1b26a7ebf1c6f4548bf7a7a906d7bac1d5e2b64ec295b7dc532f5

See more details on using hashes here.

File details

Details for the file yantrikdb-0.7.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for yantrikdb-0.7.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6b334946e78e38f9bfd470e15489cdfcd15a295af11d6b3036100c2d3fc164eb
MD5 bfb4237d776684e19798de9b17c50814
BLAKE2b-256 45ffadc3cfa726854117b7fb5cee01ba871e7e505f840ab651574619b5a87c25

See more details on using hashes here.

File details

Details for the file yantrikdb-0.7.8-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for yantrikdb-0.7.8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 928cc4dbd0e6f66ca7aac4b8ad7d54e0ff6a6788da40ea17b142110612b1c1d1
MD5 584ab079bd90b160359490e0672de0b1
BLAKE2b-256 78e8cdad5abe1b38b1b179512564b392657e00cbc8c0a84cb74a914879823d84

See more details on using hashes here.

File details

Details for the file yantrikdb-0.7.8-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for yantrikdb-0.7.8-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e4b208afb03d77426d19872d34981bfa8ed85cccd6846daf7262d47a7774f5b3
MD5 f5b87d7364a75efad00606ca016614d7
BLAKE2b-256 62db784a6e8e075330c450cb3b014557d56ce5767ebb5a828ac295d8b989315b

See more details on using hashes here.

File details

Details for the file yantrikdb-0.7.8-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for yantrikdb-0.7.8-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 9196877c75397e341253f2809aa3bd1ca316c0848918753e61109e51beff6721
MD5 9673986293986d97e12b9f6ac45867fe
BLAKE2b-256 d9ef1273ef4ea1f0ff764c397cbce26aa7c524ad5ab937fed2eef10c66799645

See more details on using hashes here.

File details

Details for the file yantrikdb-0.7.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for yantrikdb-0.7.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6092ec2da0812cfa20a4add16e813e90b2829028a403201ee03e6ccd5b88b0d1
MD5 cd74adb0a71027de0bf6764f9d0d33fd
BLAKE2b-256 faa4b2a3e957b15b9df57341e298fd8459684ed85a65c357406d86c36224b36d

See more details on using hashes here.

File details

Details for the file yantrikdb-0.7.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for yantrikdb-0.7.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8c97caae32411db23e1318867cf29d135fecd881c33c57efbb3a18ad886702a8
MD5 4ddace29d3e1be173a785f54aa5c9eec
BLAKE2b-256 f6369e04d46934d0e64ad31b049fbf512e808866bb98be1ce92bc643aafc236b

See more details on using hashes here.

File details

Details for the file yantrikdb-0.7.8-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for yantrikdb-0.7.8-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 77b695e5520a144331f58e5071f13e91ea7e4cdaa61aa7e119b1a51d98e1d203
MD5 26abd903bdb54dc4eadc7cd131075dfc
BLAKE2b-256 7af36cc654570ac25a9a5fa8484faa80f942af7cafdbaf020cdfc07316c9fbda

See more details on using hashes here.

File details

Details for the file yantrikdb-0.7.8-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for yantrikdb-0.7.8-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6e5d04e1ebc13243a5b8a23e4d681312b5a521bd0b8b9f0daff27e421c3eb92a
MD5 8f12f6f466f247677f21ce34c7c5016b
BLAKE2b-256 814c225ac9b64e77ba15b5d9e3e1cd12f8c7621177228a1090cdfca2bc4b6b47

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page