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.7.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.7-cp313-cp313-win_amd64.whl (12.3 MB view details)

Uploaded CPython 3.13Windows x86-64

yantrikdb-0.7.7-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.7-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.7-cp313-cp313-macosx_11_0_arm64.whl (12.7 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.12+ x86-64

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

Uploaded CPython 3.12Windows x86-64

yantrikdb-0.7.7-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.7-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.7-cp312-cp312-macosx_11_0_arm64.whl (12.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.12+ x86-64

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

Uploaded CPython 3.11Windows x86-64

yantrikdb-0.7.7-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.7-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.7-cp311-cp311-macosx_11_0_arm64.whl (12.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.12+ x86-64

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

Uploaded CPython 3.10Windows x86-64

yantrikdb-0.7.7-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.7-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.7-cp310-cp310-macosx_11_0_arm64.whl (12.7 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

yantrikdb-0.7.7-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.7.tar.gz.

File metadata

  • Download URL: yantrikdb-0.7.7.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.7.tar.gz
Algorithm Hash digest
SHA256 62608835b4c71d0fa069092f19cbb388782c10b1cd5f7bf192b672b0ee7cab58
MD5 91fe717de2c2978a4ba66ec1a3021d4e
BLAKE2b-256 72b8275e2dfe96221056ceed13333f20732f41328779d4a9b28c661aba270ae4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yantrikdb-0.7.7-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 55435a00a807e394772f65f69f56a68f7eebbd6aea6d5e6b579b801b9155b5d0
MD5 3a42ec16a094e174024d9dee96bf4c50
BLAKE2b-256 0a22f33a61825718af9385acd75aef247df478d38804f113d17e2cffbed43a1b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yantrikdb-0.7.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c54c633ab0c0667d8ed9d1e7847c8a3cb461051dffd02a6747188c9e464cd441
MD5 929b948640de50b30d6d94b8dc7dc291
BLAKE2b-256 b71f4c0912093df26f5083eb406406767c346989726fe47bb3d36a5232198eff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yantrikdb-0.7.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 132d8a2aced0faf076956dd84589c2984cdfb74c5e509bfc6148b3c6d35e377c
MD5 397b37e33bf09dc6ef8229cf9339448a
BLAKE2b-256 fa1a2ca70b2ea7379c4310d2ae1bcd2fbf758674d077d3f39549c1d4ab719ebe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yantrikdb-0.7.7-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e0f855562bdf197ec2d77983f5a5b8d173190c602de3d027e75fe8a448edeecd
MD5 b6be585676b164be198e687f319dc905
BLAKE2b-256 e2ca712370f02f68aca238b93b2b19468b93d4d694cec22fecbe7f88d69495cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yantrikdb-0.7.7-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 18eee61583b47fc8dfd3956e7333f0d5b7fb6126fed6c96c0751007013d7d3fb
MD5 0f7de67f6250c61aad9385329e0dc0d2
BLAKE2b-256 97bf45c9aacfb38d872bd6a6fa8065513e8ef5c5bfe4394684ef72e9afeab739

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yantrikdb-0.7.7-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b10fb38f7ada805cb2e9bd36cff300a5bda51581ff1fc12930797499307b041d
MD5 2c4e03713d7cb2f90c836ed4de0f60b5
BLAKE2b-256 5d61ae2a8b448b30786ea7df6215a2aa7197f3d8dbef9e5632fc5d8bb8dde133

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yantrikdb-0.7.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9c99db2267868c0a183cf18b1d14037358befdf78f7b32c24b64a63e26041642
MD5 97769b8025e0e032c83c8c41d148185b
BLAKE2b-256 de6438aa1679fad06477012fa65dfcf46a005a79c802bc94181e638223c368af

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yantrikdb-0.7.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 90518d8f8b1c7315324b1d8faa13d4a55f2cdb1b18dcb45f494dc7d02c11c1e1
MD5 4499167f0e4669deabe6e1b4ce1ba5b5
BLAKE2b-256 30354bde5b0639f8aa0e31c056c5b4adf5d7a4120ddd0c6ecac87b90a439a4f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yantrikdb-0.7.7-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e4593d9a5699528392f91d10a3333b5b35b2cba214e4e7ae5231dce380d8b151
MD5 b6ce35c80a5055240fbf1e7893db1e09
BLAKE2b-256 4df941cba87d9b58354996c2438e0d85a6e94575adf76ea6d56f7afe8510e597

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yantrikdb-0.7.7-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 34438f5bd1df54fb23ca75f6111007ee089e38f1beaaf178f6996eb97c5b243b
MD5 ddbabc92a0c28120d66364425bbafcf9
BLAKE2b-256 ddf6be67f66c2c51efe130d0c6954f5fc5ab293db9265291d97c25f0a1f5a830

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yantrikdb-0.7.7-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 dc9cab423dcd1f7fa2b8000e1071c6d597a712c3152d81c8993039177ec583ab
MD5 ea77498e0e4de31b5047743362c42147
BLAKE2b-256 75f523dbe85a37b687d82268879411803b4d526fd22df0b350a6eee0118ac6ec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yantrikdb-0.7.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 37a8c6f0fcb0792b38efd1e0338d3dc1500509c5f9fe30f6a47d830aaaa1d2ef
MD5 bd2dc9f34e9255a527f584981f98908f
BLAKE2b-256 c9dcf592e6c2e408ce5e49330770da6e6104addc424ccf6977a75f9b811d7dea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yantrikdb-0.7.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2500d83207cf41e225d02ee42949555c546c100a1c07b50c1931e1a8a25cfa48
MD5 583997ba28a5f251035beca010be9a6a
BLAKE2b-256 81552117f316d519c90bab933c1ffc3e9f7504924314d2628584fdd1482ab6ea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yantrikdb-0.7.7-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ae857ba754dbc6c0baa1b3c94600accc67db480ca40a1b682225fc4babbcbd89
MD5 afe700ca493b2b446ff4563229e380fb
BLAKE2b-256 122ce784d772ae3bccb4559d62394b7f9650dea95693c92ed79f34ab7379e9bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yantrikdb-0.7.7-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d010f3d566095b7ff84e5d0dd7f5906b39b8caa6410f085df5bdcd43bce40adb
MD5 7d418b1b9175bb3433d72c4e86f90aaa
BLAKE2b-256 af15ec398409d1f27e3e0d3e9e56f297dc9b621d8af40aedf6afa41c3136561d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yantrikdb-0.7.7-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 0db7c88b021211385fa032428abb57dde04c723c308d1b0a56a93d276698f798
MD5 f7f609e3a7f30dffb15718386f69f5e6
BLAKE2b-256 9cc77ec0023bb08da6683701dd9c8b420cf20a3fa97d10255a12f8c03e7e27ba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yantrikdb-0.7.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 127361f7869ab68905c266c76fd8548aaa6743d333f7d38f50d9ce827369c9f2
MD5 384fa2a57570472a99ec6781ee9a49f9
BLAKE2b-256 5c1323af6ed1fdd20cef0a25592da9a4c213a7436592463c7c080456e4bd13d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yantrikdb-0.7.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4cf25536b4e6e063a8f2145dbadeb2ec22af42143b9b5fb5b7a1e5c57da004ee
MD5 7326d013c359b982f5e35ef64841dfe2
BLAKE2b-256 c45bf5a6be09e55c74d0d43705d093e442d88028a3876ee97feafff304c952c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yantrikdb-0.7.7-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4907450d322ee66f761984ed2c80f3d4eb279c2e3eac43a0ab396694f8f4a3bc
MD5 fd0ef7bc3e55852c8a884e739f2ad550
BLAKE2b-256 542a7f01e5eeb7e388bcd2fa979c8c87ac641853c6f9d08dfb6f06c4607b6f23

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yantrikdb-0.7.7-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9aceaa559a543cea72efae04f4fd32c06efb04472df4822316532f6ebaea42c5
MD5 e75650e10b84c1b27f41455daac3daf1
BLAKE2b-256 ae97aa1e4d97605f8fdb78c83acb51658b184c102a86e338ccb130d4673288ce

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