Durable Agent Runtime — append-only event log, replay-based recovery, cross-session task continuity, agent handoff. Local-first, zero cloud dependency.
Project description
Engram
Durable Agent Runtime — cross-session task continuity for MCP-aware coding agents
Engram lets agents recover task execution state and working context after interruptions, restarts, and session boundaries. Not another vector DB / long-term memory store — the primary axis is runtime durability + execution continuity. Positioned as the continuity layer for Claude Code / Cursor / OpenHands / Devin-class runtimes.
Two Laws
Rule 1. Event log is the only durability primitive. Rule 2. If it cannot be replayed, it is not critical state.
Any data that claims "must not be lost" must first be written to ~/.engram/events/*.jsonl (append-only, fsync).
DuckDB is merely its projection layer.
Tiered Architecture
Tier 1 — Runtime Continuity Layer (Source of Truth, must never be lost)
tasks · checkpoints · session lifecycle · handoff events
→ append-only event log (~/.engram/events/) + replay-recoverable
Tier 2 — Semantic Recall Layer (Degradable, readonly-recoverable)
memories.content · metadata · summaries · semantic graph
→ DuckDB projection from event log
Tier 3 — Derived Retrieval Cache (Disposable, rebuildable)
embeddings · FTS · vector index · rerank cache
→ never participates in recovery; rebuilt on demand
DB corruption will not silently reset: Engram enters readonly degraded mode, and you explicitly rebuild with engram-setup recover.
Why Memory + Continuity
Every AI agent session is an island:
- Switch agents? Start from scratch.
- Context window full? Drop history, keep guessing.
- Yesterday's lessons? Gone — repeat the same mistakes.
- Task spans three sessions? Nobody knows the overall progress.
Root cause: Agents lack two layers of infrastructure simultaneously —
| Layer | Problem Solved | Engram's Implementation |
|---|---|---|
| Memory | What to "know" across sessions | Hybrid retrieval + Ebbinghaus decay + dedup/contradiction resolution |
| Continuity | What to "continue" across interruptions | Task state + structured handoff + behavioral verification |
Engram is a locally-running MCP Server that delivers both layers to existing clients like Claude Code and Cursor.
It does not do:
- ❌ General agent runtime / workflow orchestration (that's LangGraph, Temporal)
- ❌ Custom agent loop / prompt orchestration (let MCP clients handle that)
- ❌ Guarantee identical LLM behavior after recovery (LLM non-determinism is a physical constraint — we do constrained continuation: structured state narrows the action space)
It specifically does:
- ✅ Make tasks recoverable after session interruption
- ✅ Make context handoff-able after agent switch
- ✅ Preserve engineering state across long tasks (failures, progress, constraints)
- ✅ Reverse-verify state correctness via subsequent behavior (Behavioral Handoff Verification)
Continuity Flow
The core experience of AI Agent Continuity: checkpoint recovery.
Agent A (Claude Code) Agent B (Cursor)
│ │
├─ Create task, start execution │
├─ Record progress + failure lessons │
├─ ━━━━━━━━━━━━━━━━━━━ │
│ ⚡ Session Interrupted │
│ ━━━━━━━━━━━━━━━━━━━ │
├─ session_handoff(handoff summary) │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ Engram │ │
│ │ Checkpoint │ │
│ │ ┌───────────┐ │ │
│ │ │ Task State │ │ │
│ │ │ Progress │ │ │
│ │ │ Failures │ │ │
│ │ │ Next Steps │ │ │
│ │ └───────────┘ │ │
│ └────────┬────────┘ │
│ │ │
│ ▼ │
│ Restore State ───────────────────▶ │
│ ├─ recall_memory(query)
│ │ └─ handoff auto-pinned
│ │ └─ historical failure context
│ │ └─ next_steps execution verify
│ ├─ Continue, not from zero
│ └─ session_handoff() ──────────▶ ...
No matter how many agents you switch or sessions you cross, task state persists.
15 MCP Tools
Engram provides 15 MCP tools covering the full Cognitive Continuity lifecycle:
Memory
| Tool | Purpose |
|---|---|
store_memory |
Store new memory (auto-dedup/merge/replace) |
recall_memory |
Semantic search (hybrid: BM25 + vector + graph boost) |
update_memory |
Update existing memory by ID |
consolidate_memory |
Merge similar memories, reduce bloat |
memory_stats |
Count, category distribution, avg strength, last maintenance |
Task
| Tool | Purpose |
|---|---|
create_task |
Create tracked task (first-class entity) |
get_task |
Get task + all associated memories + latest checkpoint |
update_task |
Update status / goal / metadata |
list_tasks |
List tasks, optionally filtered by status |
track_progress |
Record feature/task progress snapshot |
track_failure |
Record structured failure event (bug, test failure, etc.) |
Continuity
| Tool | Purpose |
|---|---|
session_handoff |
Record structured end-of-session state |
session_outcome |
Mark session success/failure (adjusts memory importance) |
restore_checkpoint |
Restore constrained continuation package from checkpoint |
list_checkpoints |
List checkpoint history (latest first) |
report_interruption |
Report imminent interruption reason for recovery routing |
evaluate_continuity |
Evaluate continuity quality between checkpoint versions |
Checkpoint v2 — Constrained Continuation
Elevates session_handoff to versioned cognitive checkpoints: instead of forcing the new agent to replay identical actions, it provides a set of constraints that narrow the action space.
Continuation Package Fields
| Field | Purpose |
|---|---|
goal / completed / in_progress / blocked / preferred_next |
Task state body |
must_not_redo |
Negative memory — actions already done or with side effects, must not redo |
must_preserve |
User-stated invariants (e.g. "don't touch the main branch") |
working_set |
Working set at interruption (files / tools / artifacts) |
continuation_confidence |
System self-assessed recovery reliability (0–1) |
Event-first Triggers (saved on cognitive events, not time periods; 60s debounce per reason)
| Reason | Trigger Condition |
|---|---|
MANUAL_HANDOFF |
session_handoff called |
FAILURE |
track_failure called (forced, bypasses debounce) |
PLAN_UPDATE |
in_progress Jaccard < 0.7 |
WORKING_SET_SHIFT |
Working set Jaccard < 0.5 |
AUTO_SAVE |
5 minutes with no checkpoint (fallback) |
Interface
# One-stop recovery (recommended): get_task includes latest_checkpoint
get_task(task_id=42)["latest_checkpoint"]["continuation"]
# Full recovery: with related memories + historical failure context
restore_checkpoint(task_id=42, memory_restore_mode="SELECTIVE")
# memory_restore_mode: FULL / SELECTIVE (default, importance≥0.5 or failure) / NONE
# Checkpoint history
list_checkpoints(task_id=42, limit=10)
Backward Compatible: Existing tool signatures unchanged; new fields appended. When old tasks have no checkpoint, restore_checkpoint falls back gracefully.
Installation
pip install mcp-engram
engram-setup # Download embedding model + initialize DuckDB
MCP client configuration (Claude Code / Cursor):
{
"mcpServers": {
"engram": {
"command": "engram",
"env": { "HF_ENDPOINT": "https://hf-mirror.com" }
}
}
}
Data directory ~/.engram/: memories.duckdb (single-file DB) + graph.json (semantic graph) + model_cache/ (model).
Recommended CLAUDE.md Agent Instructions
## Memory Rules
- Task start: create_task(name, goal)
- Session begin: recall_memory(query) — handoff auto-pinned + historical failures
- Task takeover: get_task(task_id) — includes latest_checkpoint
- Progress update: track_progress(feature, status, task_id=X)
- On error: track_failure(error, component, root_cause, task_id=X)
- Session end: session_handoff(summary, completed, in_progress, blocked,
next_steps, must_not_redo=[...], must_preserve=[...],
working_set={...}, task_id=X)
Supports macOS / Linux / WSL2, Python 3.11+, ~500MB model cache.
Benchmark
Evaluated on LoCoMo (Snap Research long-term conversation memory benchmark):
| System | Overall F1 | LLM | Deployment |
|---|---|---|---|
| MemMachine | 0.8487 | GPT-4o-mini | Cloud |
| Memobase | 0.7578 | GPT-4o-mini | Cloud |
| Zep | 0.7514 | GPT-4o-mini | Cloud |
| Mem0 | 0.6688 | GPT-4o-mini | Cloud |
| Engram | 0.4383 | DeepSeek-V3.2 | Local |
Zero cloud dependency, local deployment. Four optimization rounds yielded F1 +50.3%, Hit@5 +26.2pp.
Category scores + memory mechanism details
Category Scores
| Category | Count | F1 | Hit@5 |
|---|---|---|---|
| Single-Hop | 114 | 0.5121 | 76.3% |
| Temporal | 63 | 0.4501 | 95.2% |
| Multi-Hop | 43 | 0.3181 | 60.5% |
| Open-Domain | 13 | 0.1324 | 61.5% |
| Overall | 233 | 0.4383 | 77.7% |
Memory Mechanisms (Key Algorithm Summary)
- Ebbinghaus Decay:
strength = importance × e^(-λ × days) × (1 + recall_count × 0.2),failurehalf-life ~11 days,strategy~38 days - Deduplication: similarity ≥0.85 reinforces, 0.65–0.84 detects contradiction then merges/overwrites, <0.65 creates new
- Hybrid Retrieval:
0.3 × BM25 + 0.7 × (semantic similarity × decay strength) + graph boost, HNSW + DuckDB FTS - Recall Enhancement: handoff auto-pinned + associated failure context + dynamic
quality_score - Auto Maintenance: consolidate every 12h (≥0.70 cluster merge) + prune (strength<0.05) + FTS rebuild
Importance Reference
0.9–1.0 core identity / permanent facts · 0.7–0.8 architecture decisions / strong preferences · 0.5 regular facts · 0.2–0.3 transient context
Environment Variables (High-Frequency)
| Variable | Default | Description |
|---|---|---|
HF_ENDPOINT |
https://hf-mirror.com |
HuggingFace mirror |
ENGRAM_MODEL |
all-mpnet-base-v2 |
Embedding model |
ENGRAM_DEDUP_THRESHOLD |
0.65 |
Dedup similarity lower bound |
ENGRAM_REINFORCE_THRESHOLD |
0.85 |
Reinforce similarity threshold |
ENGRAM_W_BM25 / ENGRAM_W_VECTOR |
0.30 / 0.70 |
Retrieval weights |
ENGRAM_PRUNE_THRESHOLD |
0.05 |
Prune strength threshold |
ENGRAM_CONSOLIDATE_THRESHOLD |
0.70 |
Consolidate cluster threshold |
Full variable list in src/engram/config.py.
Roadmap
Focus principle: only build Memory + Continuity dual layers. Anything sliding toward "general agent runtime / workflow orchestration" is deferred to avoid overlap with LangGraph / Temporal.
Shipped
-
Error-aware Memory— attach historical failure context by component ✅ -
Handoff Validation— next_steps execution status detection ✅ -
Task Context— Task as first-class entity, cross-session task panorama ✅ -
Memory Quality Score— dynamic scoring based on importance + recall + outcome ✅ -
Session Lifecycle— auto heartbeat, interruption detection, atexit fallback ✅
Shipped (Cognitive Continuation Layer 1)
-
Checkpoint v2— versioned cognitive checkpoint, event-first trigger (6 reason types),restore_checkpoint/list_checkpointslive, supports constrained continuation (must_not_redo as negative memory / must_preserve / preferred_next / working_set / continuation_confidence) ✅
Shipped (Interruption Taxonomy)
-
Interruption Taxonomy— 6 interruption categories (overflow / user_away / tool_failure / crash / rate_limit / unknown), route recovery strategy by type. Newreport_interruptionMCP tool for LLM proactive reporting;cleanup_stale_sessionsauto heuristic classification; recallinterrupted_sessionshint provides targeted recovery advice by interruption type ✅
Shipped (Chaos Continuity Test + Continuity Metrics)
-
Continuity Metrics— 6-dimension metrics engine (continuity.py): Goal Retention / Action Consistency / Failure Recall / Working Set Stability / Replanning Rate / Redundant Exploration.restore_checkpointauto-attachescontinuity_score, newevaluate_continuityMCP tool for proactive assessment ✅ -
Chaos Continuity Test— 5 major interruption scenario automated tests: Normal Handoff (baseline) / SIGTERM / kill -9 crash / Failure Mid-Session / Working Set Drift, all passing with quantified recovery quality ✅
Shipped (P1-6 Event Log Gzip Rotate)
-
Event Log Gzip Rotate— non-todayevents-YYYYMMDD.jsonlauto-gzipped at boot to.jsonl.gz, saving disk space. recover / iter_events transparently read.gzfiles. Line count verified before compression, zero data loss ✅
In Progress (Cognitive Continuation Hardening)
- Behavioral Verification persistence —
handoff_verificationstable, as a differentiating capability
Deferred
-
Multi-Agent Coordination — multi-agent parallel task assignment & sync→ Deferred: falls under general orchestration, conflicts with project positioning; let upstream frameworks (LangGraph / AutoGen) handle it. -
Cross-model next_steps intermediate representation→ Deferred: mainstream MCP clients use same-tier models, natural language next_steps is sufficient; over-engineering yields low ROI. - Coding Agent deep integration — IDE-native Task panel (retained, depends on Checkpoint v2 completion)
Changelog
v0.13.1 — P1-6 Event Log Gzip Rotate
Theme: Keep event logs forever without blowing up disk.
New
- ✨ Event log gzip rotate (
event_log.py):rotate_old_files()compresses non-today.jsonlfiles to.jsonl.gz. Line count verified before and after compression — zero data loss. - ✨ Transparent
.jsonl.gzreading (event_log.py):_sorted_event_files()recognizes both.jsonland.jsonl.gz;_iter_file()auto-selectsopenorgzip.open. When both formats exist for the same date,.jsonltakes priority. - ✨ Boot auto-rotate (
maintenance.py):schedule_startup_maintenance()callsrotate_event_logs()in daemon thread, non-blocking. - ✨ Recover transparent compatibility:
recover()benefits viaiter_events()— no changes needed to read from.gzfiles.
Upgrade
pip install -U mcp-engram # install command unchanged
- Fully forward-compatible with v0.13.0: old
.jsonlfiles read normally; first boot auto-compresses historical files
Regression
- 456 tests passed (v0.13.0's 441 + 15 new:
test_event_log_rotate) - 0 lint errors
v0.13.0 — Chaos Continuity Test + Continuity Metrics
Theme: Quantify the cognitive quality of agent cross-interruption recovery — answer the core question "is checkpoint restore actually good enough?"
New
- ✨ 6-dimension Continuity Metrics engine (
continuity.py): auto-compute 6-dimension scores + weighted composite on every checkpoint restore. Dimensions: Goal Retention / Action Consistency / Failure Recall / Working Set Stability / Replanning Rate / Redundant Exploration. - ✨ MCP tool
evaluate_continuity(tools.py/handlers.py): LLM can proactively evaluate continuity score between any two checkpoint versions. Supportsactions_taken_after_restorefor redundant exploration measurement. - ✨
restore_checkpointauto-attachescontinuity_score(handlers.py): auto-compares against parent_version on restore, embeds 6-dimension scores in response. LLM can judge "is this recovery quality good enough, or do I need compensation?" - ✨ Chaos Continuity Test suite (
test_chaos_continuity.py): 5 major scenario automated verification — S1: Normal Handoff (baseline) / S2: SIGTERM (atexit fires) / S3: kill -9 Crash / S4: Failure Mid-Session / S5: Working Set Drift.
Upgrade
pip install -U mcp-engram # install command unchanged
- Fully forward-compatible with v0.12:
evaluate_continuityis a new tool, no impact on existing clients restore_checkpoint'scontinuity_scoreis optional output, old clients can ignore
Regression
- 441 tests passed (v0.12's 404 + 37 new:
test_continuity_metrics28 +test_chaos_continuity9) - 0 lint errors
v0.12.0 — Interruption Taxonomy
Theme: Let the next agent know how the previous agent was interrupted, and choose the optimal recovery strategy accordingly — instead of a generic "session ended unexpectedly".
New
- ✨ 6 interruption categories (
db.py):overflow/user_away/tool_failure/crash/rate_limit/unknown, each mapped to a recovery strategy (restore_checkpoint + memory_restore_mode + hint). - ✨ MCP tool
report_interruption(tools.py/handlers.py): LLM calls this when detecting imminent interruption (e.g. context window filling, API rate limiting), records interruption reason. The reason is written tosession_lifecycleon process exit, so the next agent receives targeted recovery advice. - ✨ Stale session auto-classification (
db.py):cleanup_stale_sessionsnow auto-classifies interruption reasons via heuristic rules: session < 2min →crash; ≥ 2 failure memories →tool_failure; otherwise →user_away. - ✨ Taxonomy-aware recall hints (
handlers.py):recall_memory'sinterrupted_sessionsno longer gives generic hints — it provides targeted recovery strategies by interruption type (recovery_strategy/memory_restore_mode/hint). - ✨ atexit interruption-aware (
shared.py):_on_exitnow checks if LLM pre-reported interruption viareport_interruption; if so, writes to session_lifecycle, otherwise marks as normalprocess_exit.
Schema Changes
session_lifecyclegainsinterruption_reason VARCHAR+interruption_context JSONcolumns- Fully forward-compatible: old data with
interruption_reason = NULLis treated asunknown; schema migration viaALTER TABLE ADD COLUMN IF NOT EXISTS
New Event Fields
session.endevent gains optional fields:interruption_reason/interruption_contextengram recover's_replay_session_endsupports replaying these fields
Upgrade
pip install -U mcp-engram # install command unchanged
engram-setup doctor # session_lifecycle table auto-adds columns
- Fully forward-compatible with v0.11: old sessions'
interruption_reasonis NULL, recall hint falls back tounknownstrategy - New
report_interruptiontool is optional; not calling it yields identical behavior to v0.11
Regression
- 404 tests passed (v0.11's 387 + 17 new:
test_interruption_taxonomy) - 0 lint errors
v0.11.0 — Operational Hardening
Theme: On top of v0.10's "Two Laws", fill in operational visibility and catastrophic growth prevention. Zero-config, enabled by default, fully forward-compatible with v0.10.
New
- ✨ Periodic Snapshot + Replay Acceleration (
snapshot.py): Async snapshot DuckDB file to~/.engram/snapshots/snapshot-seq{N}-{ts}.duckdbevery N events (default 1000) or H hours (default 1).engram-setup recoverloads from latest snapshot and only replaysseq > snapshot_seqevents — long-running engram no longer slows down recovery due to event accumulation. - ✨ Backup Auto-Archive Policy (
maintenance.py): When managed files in~/.engram/backups/(memories-pre-recover-*/memories-pre-duckdb-upgrade-*) exceedENGRAM_BACKUP_RETAIN(default 10), oldest are archived tobackups/archive/(move, not delete — recoverable). - ✨ DuckDB Version Upgrade Auto-Backup: Detects
duckdb_versionminor/major changes (e.g.1.5 → 1.6,0.9 → 0.10), copies current DB tobackups/memories-pre-duckdb-upgrade-<old>-to-<new>-<ts>.duckdbbefore startup, and writes aruntime.duckdb_upgradeevent to anchor the time. - ✨ MCP tool
get_runtime_health: LLM (Claude Code / Cursor) can proactively query engram health. Returnsadvicearray (readable suggestions) + fulldoctor()fields; in degraded mode, LLM can prompt user to runengram-setup recover. - ✨
engram-setup doctoroutput enhanced: Newbackups(live_count/retain/archive_count/live_recent) andsnapshots(count/latest_seq/latest_size_bytes) sections; prints archive hint when retention exceeded. - ✨ Recover report enhanced: New
snapshot_used/snapshot_seqfields — clearly see which snapshot this recovery started from.
New Event Kinds (not involved in Tier 1 replay, for ops audit only)
snapshot.create # {snapshot_path, seq, db_size_bytes}
runtime.duckdb_upgrade # {old_version, new_version, backup_path}
maintenance.backup_pruned # {archived: [...], kept, dir}
New Env Vars
| Variable | Default | Description |
|---|---|---|
ENGRAM_BACKUP_RETAIN |
10 | Number of backups to retain in backups/; excess archived to archive/ |
ENGRAM_SNAPSHOT_INTERVAL_EVENTS |
1000 | Trigger snapshot after this many events written |
ENGRAM_SNAPSHOT_INTERVAL_HOURS |
1.0 | Maximum hours between snapshots |
ENGRAM_SNAPSHOT_RETAIN |
5 | Number of snapshots to retain (oldest deleted) |
Upgrade
pip install -U mcp-engram # install command unchanged
engram-setup doctor # see backups + snapshots new sections = upgrade successful
- Fully forward-compatible with v0.10: if no snapshot exists, recover falls back to full replay
- No MCP client config changes needed;
get_runtime_healthis a new tool, old clients unaffected - Background maintenance thread only starts in the main runtime process (short-lived tool scripts like doctor / recover don't trigger it)
Regression
- 381 tests passed (v0.10's 348 + 33 new:
test_backup_pruner/test_duckdb_upgrade/test_runtime_health_tool/test_snapshot) - 0 lint errors
v0.10.0 — Durable Agent Runtime (Architecture Refactor)
Positioning upgrade: from AI Memory System to Durable Agent Runtime.
Primary axis: runtime durability + execution continuity; vector recall demoted to auxiliary.
Two Laws
Event log is the only durability primitive. If it cannot be replayed, it is not critical state.
New
- ✨ Append-only Event Log:
~/.engram/events/events-YYYYMMDD.jsonl, fsync writes, daily rotation; Tier 1 (task / checkpoint / session) write path fully goes through the log. - ✨ Replay-based Recovery: When DuckDB is missing/corrupted, Tier 1 can be fully rebuilt from event log.
- ✨ CLI:
engram-setup doctor(health check),engram-setup recover [--since YYYYMMDD] [--promote](dry-run rebuild). - ✨
engram_metatable: Exposesschema_version/engram_version/duckdb_version/embedding_model/embedding_dim/embedding_stale/last_boot_atfor MCP client version negotiation. - ✨ Readonly Degraded Mode: When DB is unwritable, enters read-only mode; write ops throw
DegradedModeError; HTTP returns 503 +recover_command, MCP returns{ok: false, code: "degraded_mode", recover_command: "engram recover"}. - ✨
taskstable pre-reservedparent_task_id/retry_of_task_idcolumns (not implemented yet, avoiding future breaking migrations). - ✨
/healthaddsdb_readonly/embedding_stale/residue_files/engram_metafields.
⚠️ Behavior Changes (Breaking-ish)
- DB corruption no longer silently rebuilds empty DB: The old
os.replace(db, db + ".corrupt")+ auto-create-empty logic is removed. On corruption, throwsDatabaseCorruptionError, original file isolated as<db>.corrupt.<timestamp>to~/.engram/backups/, user explicitly runsengram-setup recover.- To keep old behavior:
ENGRAM_ALLOW_RESET=1 engram-server run
- To keep old behavior:
- Embedding model/dimension changes no longer auto-ALTER columns: The old "clear all + ALTER COLUMN" is removed, replaced by marking
embedding_stale=true; vector search auto-falls back to BM25/FTS, write path unblocked. - WAL startup recovery path improved: First attempts
FORCE CHECKPOINTto salvage data; on failure, isolates WAL as<db>.wal-recovery.<timestamp>(with timestamp, never overwrites). - Shutdown auto-CHECKPOINT: HTTP server proactively flushes WAL on close, avoiding residual WAL on next startup.
Upgrade
pip install -U mcp-engram # install command unchanged
engram-setup doctor # recommended health check after upgrade
- Existing
~/.engram/memories.duckdbreused directly; schema auto-ALTER ... ADD COLUMN IF NOT EXISTS. - Event log starts accumulating from this point; pre-upgrade data still relies on the DB file itself (no event log to replay).
- MCP client config doesn't need changes.
Regression
- 348 tests passed (17 new:
test_event_log/test_recover/test_degraded_mode). - 0 lint errors.
v0.9.x (Historical)
- Checkpoint v2 — versioned cognitive checkpoint, event-first trigger (6 reason types),
restore_checkpoint/list_checkpointslive. - Task as first-class entity; Session Lifecycle; Handoff Validation; Memory Quality Score; Error-aware Memory.
Contributing
Contributions welcome:
- Issues — Report bugs or suggest features
- Pull Requests — Fork → new branch → submit PR
git clone https://github.com/hugfeature/engram.git
cd engram
pip install -e ".[dev]"
pytest tests/ -v # make sure tests pass
Maintainer
License
Cognitive Continuation Layer — we restore an agent's cognition, not a machine's execution.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcp_engram-0.13.2.tar.gz.
File metadata
- Download URL: mcp_engram-0.13.2.tar.gz
- Upload date:
- Size: 163.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
24e1e80da787303ceca534631950f7935b5f15fd3a36f3947913f7039bc88f6b
|
|
| MD5 |
1c94b48b4a3f97814718caaddff1f2d8
|
|
| BLAKE2b-256 |
5589a198c6aadb4fd4403f08f47259e3be41c706e23983b816160beefe88f502
|
File details
Details for the file mcp_engram-0.13.2-py3-none-any.whl.
File metadata
- Download URL: mcp_engram-0.13.2-py3-none-any.whl
- Upload date:
- Size: 105.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
83c472f96d1b1d6bafdcc693ef55dbb3533b9333220d6444e7e7511567e8ec38
|
|
| MD5 |
17571b25dc2f83f33841a75b22317717
|
|
| BLAKE2b-256 |
3dcfcd30533089cead74520930b64b8195518200c7d039b7fba505bec4cf4cd2
|