nahuali
Trust-aware memory for AI agents: evidence-backed recall, deterministic verdicts, self-inspection, and a tamper-evident local ledger.
Install / Use
claude mcp add Arakiss -- npx -y github:Arakiss/nahualiIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
Development & EngineeringSupported Platforms
Our assessment of nahuali
nahuali scores 83/100 on our quality scale, 3028th of 4,662 Development & Engineering skills we index.
Its MCP Server is 16 KB long, well organised into 17 sections with 8 code examples: a thorough specification that gives an agent plenty to work with.
It has 3 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated 14 days ago, so nahuali is actively maintained.
- No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
- Its trust signals score 80/100, with 2 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.
AI review by kimi-k2.7-code on 2026-11-01. Automated pattern scan on 2026-11-01. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.
nahuali compared with similar skills
All 4 of these similar skills score higher than nahuali; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| nahuali (this skill)by Arakiss | 83 | 3 | 14d ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 107.3k | 7d ago | CLAUDE.md |
| taste-skillby Leonxlnx | 100 | 107.1k | 1d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 78.5k | 1d ago | CLAUDE.md |
| ai-job-searchby ai-job-search-dev | 100 | 68.5k | today | CLAUDE.md |
Frequently asked questions
- How do I install nahuali?
- Run
claude mcp add Arakiss -- npx -y github:Arakiss/nahuali. The install tabs above show the steps for each supported agent. - Which AI agents does nahuali work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is nahuali safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It declares no license and scores 80/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is nahuali still maintained?
- The repository was last updated 14 days ago, so nahuali is actively maintained.
Skill content
View source on GitHubNahuali
Memory an agent can inspect before it trusts.
<p align="center"> <img src="assets/nahuali-tui.gif" alt="Nahuali exploring an evidence-backed decision and holding an unsupported update for review" width="100%"> </p> <p align="center"><sub>From an empty memory to evidence-backed recall: Nahuali shows what is ready to use and pauses what still needs review.</sub></p> <p align="center"> <a href="https://github.com/Arakiss/nahuali/actions/workflows/ci.yml"><img src="https://github.com/Arakiss/nahuali/actions/workflows/ci.yml/badge.svg?branch=main&event=push" alt="Tests"></a> <a href="https://github.com/Arakiss/nahuali/releases"><img src="https://img.shields.io/badge/release-0.8_beta-blue.svg" alt="Latest release train: 0.8 beta"></a> <a href="RELEASE_VERIFICATION.md"><img src="https://img.shields.io/badge/releases-Sigstore_signed-2f6f4e.svg" alt="Sigstore-signed release artifacts"></a> <a href="LICENSE"><img src="https://img.shields.io/badge/license-FSL--1.1--MIT-yellow.svg" alt="FSL-1.1-MIT license"></a> </p>Memory retrieval usually begins with what context looks relevant? Nahuali also exposes four separate questions:
- What observation supports this memory?
- What conflicts with it or makes it stale?
- Do the current recorded-history checks pass?
- Do the available evidence and health checks support using this result?
The result is a local-first memory engine with deterministic trust verdicts, tamper-evident recorded history, and portable evidence. Its core does not need a model, account, API key, hosted service, or Docker.
A 60-second tour
Install the macOS or Linux binary. The installer requires the matching SHA-256 asset; the pinned path below can additionally require its Sigstore bundle.
curl -fsSLo /tmp/nahuali-install.sh \
https://raw.githubusercontent.com/Arakiss/nahuali/main/scripts/install.sh
sh /tmp/nahuali-install.sh
export PATH="$HOME/.nahuali/bin:$PATH"
Run nahuali --version in a terminal to see the real axolotl spritesheet come
alive beside the build identity. When the command is captured or redirected, it
emits the stable nahuali <semver> line expected by agents, install checks, and
benchmark tooling.
Record an observation, derive a claim from it (--source-last cites the episode
just recorded), and require evidence at recall:
nahuali remember "Lena owns the release notes" --mention Lena --tag product
nahuali claim Lena owns "release notes" --source-last --confidence 0.92
nahuali recall "Who owns the release notes?" --authority --require-evidence
nahuali explore
nahuali explore is not just a record browser. It keeps three independent
questions visible:
| Axis | What it answers |
|---|---|
| MEMORY | Is this memory supported enough to use? |
| HISTORY | Do this store's recorded-history checks pass? |
| EXTERNAL | Was this state compared with an authorized reference kept outside this store? |
Press / to search every displayed memory-item field, Tab to filter by memory kind, and
j/k to inspect the evidence behind a result. The axolotl watches over the
memory and changes with its status. Rebuild the GIF above from real Ghostty
windows on macOS with scripts/render-readme-tui-gif.sh; the canonical README
asset is never replaced by the lower-fidelity text fallback.
Run nahuali demo for a narrated, non-mutating explanation of how Nahuali
detects a specific in-place record change and keeps unsupported memory from
driving action. The demo states which changes require an externally retained
reference rather than relying on the live store alone.
Where Nahuali fits
Choose Nahuali when an agent needs local or operator-controlled memory and the decision to use a result must carry evidence, health signals, and explicit integrity limits. It is especially useful as a reliability layer around consequential memory rather than as a replacement for every retrieval system.
Choose an established recall-first or managed memory platform when the main requirement is hosted operation, a broad framework ecosystem, or publicly disclosed LoCoMo/LongMemEval answer-quality results. Nahuali does not claim leadership on those axes today. An application can also pair another retrieval system with Nahuali's evidence and governance checks.
What Nahuali checks
Evidence is part of memory
Observations are first-class episodes. Claims, relationships, procedures, and intentions can point back to the episode that supports them. Recall can refuse results without that path instead of filling the gap with confidence language.
Verdicts stay separate from relevance
Authority-aware recall carries one of four deterministic verdicts:
| Verdict | Meaning |
|---|---|
| certify | Available checks support use with the attached evidence. |
| advisory | Useful as a lead, but not ready to repeat as fact without qualification. |
| warn | Evidence, freshness, or store-health problems require verification. |
| block | The memory must not drive action until the conflict is resolved. |
A certify verdict proves neither truth nor authorship. It means the available
evidence and content-health checks passed; inspect HISTORY and EXTERNAL
separately for internal history checks and an optional external comparison.
Nahuali keeps those limits machine-readable instead of hiding them in
documentation.
History is inspectable
The authoritative ledger is append-only and hash chained. Merkle inclusion and consistency proofs make verification compact; Ed25519 checkpoints bind a tree size, root, chain tip, origin, and ledger lineage to an external operator policy.
Nahuali is not a blockchain. It applies the transparency-log primitives standardized in RFC 9162 without publishing private memory to a public network or requiring consensus. Independent witness co-signing is a future step, not a capability claimed today.
One claim can travel with a receipt
Portable claim receipts contain only the selected claim, its evidence episode, an optional source envelope, their Merkle inclusion paths, and one signed checkpoint. Verification is offline and requires a policy held separately from the receipt:
CLAIM_ID="$(nahuali data --json | jq -r '.claims[-1].id')"
nahuali receipt-export \
--claim-id "$CLAIM_ID" \
--checkpoint checkpoint.json \
--policy policy.json \
--output claim-receipt.json
nahuali receipt-verify claim-receipt.json --policy policy.json
The verifier reports receipt_integrity separately from content_authority.
Ledger commitment never becomes a claim that the remembered statement is true,
that its author is authentic, or that an external source still contains the
same bytes.
Offline receipt verification checks only the selected envelopes, their Merkle
paths, provenance links, and checkpoint authorization. It trusts the authorized
signers' commitment to that root; it does not replay or validate the complete
ledger prefix. Use checkpoint-verify with the ledger for that stronger check.
Receipts contain the selected memory verbatim and should be handled as sensitive
data, not published by default.
Built for agents, operable by humans
The CLI is canonical. The TUI, stdio MCP server, local HTTP API, and Rust crate all use the same deterministic engine:
| Interface | Use it for | Reference |
|---|---|---|
| nahuali | Shell-capable agents, scripts, sustained ingestion, inspection, recovery, receipts, and the TUI | CLI |
| nahuali-mcp | Hosts that expose MCP tools but cannot run local commands directly | MCP |
| nahuali-api | Local HTTP integrations with an OpenAPI contract | HTTP API |
| nahuali-core | Embedding the engine in Rust | Core |
Prefer the CLI for terminal-based agent workloads. It is the direct, scriptable
interface, supports batch commands without an MCP tool-call round trip, and
makes the exact database and JSON contract explicit in every invocation. MCP is
an adapter for clients whose integration boundary is a tool protocol. Both
interfaces have the same trust semantics; choosing the CLI does not bypass
validation. An embedded store has one process owner at a time: short CLI
commands queue for it (bounded by NAHUALI_STORE_LOCK_TIMEOUT_MS, default 30
seconds), but a running MCP server, HTTP API, or TUI holds it for its whole
lifetime. Use remote SurrealDB (--store ws://…) when independent long-lived
processes need shared access.
Run nahuali init to install the bundled agent skill where supported and print
a native MCP configuration. Nahuali is also published as
io.github.Arakiss/nahuali in the official MCP Registry. See
MCP onboarding for native and container
configurations.
The HTTP API is unauthenticated by design and must not be exposed to an untrusted network.
Storage and recovery
memory_record in SurrealDB is the source of truth. The current-memory view,
graph tables, snapshots, and semantic vectors are derived and rebuildable.
- A normal write appends one ledger event, updates the in-memory view, compares the desired graph with the last verified graph projection, and writes only rows that are new or changed. Rows no longer present are removed.
- If the stored projection checkpoint, schema version, error state, or content manifest cannot be trusted, Nahuali clears the derived graph and rebuilds it from the ledger. Recovery never rewrites authoritative history.
- Embedded SurrealKV is the zero-service default.
- Remote SurrealDB supports deliberately shared deployments.
- Lexical recall works without Qdrant or an embedding model.
- Qdrant and local embeddings are optional semantic tiers.
- Graph projection v2 fences concurrent rebuilds and validates a canonical content manifest for every ledger-derived projected table, not only row counts. SurrealDB projection-backed entity, timeline, pending-work, and health reads fail closed while a rebuild is active or when the manifest, schema version, or ledger tip drifts.
- Semantic validators detect vector-index drift before that derived tier is trusted.
- Backup restore replays the ledger and rebuilds derived state.
The embedded store has one process owner. A second process waits for the lock
with bounded backoff, so parallel short commands queue instead of failing, and
fails clearly after NAHUALI_STORE_LOCK_TIMEOUT_MS rather than waiting
indefinitely or risking concurrent writes. --store <PATH|URL> chooses where
the store lives; --database <NAME> chooses a database inside it.
nahuali forget <id> --reason ... erases memory by id with an auditable trace:
the ledger records holding it (and memory derived from it) become redacted
stubs that keep the hash chain verifiable, and a memory_forgotten record
states who asked, when, and why. It does not reach backups, exports, receipts,
or an unrebuilt semantic index. See the
GDPR position for the exact limits.
Evidence and evaluation limits
The adapter-based Agent Memory Trust Benchmark is designed for cross-product evaluation of provenance, abstention, contradiction, staleness, non-mutating inspection, and tamper detection as separate cases. The checked-in result is first-party Nahuali evidence, not an independent comparison. The retrieval benchmark publishes every ranked item and latency sample for a versioned 24-memory, 12-query corpus.
The checked-in 0.8.0-beta.9 results are first-party, version-matched source builds. They are bound to a binary SHA-256 and source revision, but they are not claimed to be the published release archives. New published-release results must additionally match the release tag, target, archive name, archive digest, and exact binary through `sc
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
107.3kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
taste-skill
107.1kAgent skills that give coding agents taste: art direction, reference images and a browser check instead of generic AI pages
headroom
78.5kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
ai-job-search
68.5kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
