<!--
  Full-page Markdown export (rendered HTML → GFM).
  Source: https://neotoma.io/neotoma-with-claude-agent-sdk
  Generated: 2026-04-09T17:06:00.001Z
-->
# Your agents forget.Neotoma makes them remember.

Most memory tools help agents retrieve information. None of them can prove it hasn’t been silently corrupted.

Neotoma is git for what your agents know. Versioned, diffable, replayable state across Claude, Cursor, ChatGPT, and everything else. Stop being the human sync layer.

[Ask your agent to evaluate](/evaluate)[Install in 5 minutes](/install)

Built for developers running agents across sessions and tools

You tell OpenClaw

”I've issued Acme $3,200 invoice due Dec 15.”

Stored in invoices

entity\_type: invoice · amount: $3,200 · due\_date: 2026-12-15 · status: unpaid · REFERS\_TO company: Acme

You ask Claude later

“What's my total outstanding balance?”

$16,302 from 4 unpaid invoices, 2 past due

Retrieved from stored invoices and relationships

Facts are stored privately under your control. Any agent can retrieve exactly what it needs, with full versioning and provenance.

[](#proof)

How it’s used

Trustworthy state for AI agents·[11 on GitHub](https://github.com/markmhendrickson/neotoma)·14 releases shipped

> Running daily for 5+ months across Claude Code, Cursor, ChatGPT, and CLI. Every morning I ask my agents what I worked on yesterday, what’s due this week, and what I told a specific investor. Zero re-prompting for cross-session context. This isn’t a demo, it’s my actual operating system.
> 
> ![Mark Hendrickson](/assets/mark_hendrickson-Ch9qk0bs.jpg)
> 
> Mark Hendrickson·Neotoma creator·[Read the full post](https://markmhendrickson.com/posts/what-my-agentic-stack-actually-does/)

1,100+contacts

16,000+tasks

900+conversations

2,000+agent messages

380+entity types

“State integrity, not retrieval quality.”

Agentic app builder

“Very relevant problem, most people rolling their own.”

Laurie Voss, npm co-founder

“Genuinely useful for production agents, overkill for hobbyist chatbots.”

Production agent evaluator

“CI/CD for agent state.”

[Tycho Onnasch, co-founder, Zest Protocol](https://x.com/TychoOnnasch)

Works with[Claude](/neotoma-with-claude-agent-sdk/neotoma-with-claude)[ChatGPT](/neotoma-with-claude-agent-sdk/neotoma-with-chatgpt)[Cursor](/neotoma-with-claude-agent-sdk/neotoma-with-cursor)[OpenClaw](/neotoma-with-claude-agent-sdk/neotoma-with-openclaw)

[](/)[](#outcomes)

Before & after

## Same question, different outcome

Without a state layer, agents act on state they can’t verify. With Neotoma, every response reads from versioned, schema-bound state.

Contacts & people

### Silently overwritten, confidently wrong

You corrected a contact's email last week. A different agent session overwrote it with the old address. Your agent sends to the wrong person, and nobody notices until it's too late.

without Neotoma

agent session · without Neotoma

$|

1234

[](#proof)[](#demo)

Product demo

## Inspectable state you can version, diff, and replay

The same operations work from the CLI, the REST API, the Inspector app, or through any MCP-connected agent. Toggle between views to try each interface.

CLIAgent (MCP)APIInspector

Cross-tool syncReplay & debug

\# Store a contact from any agent session

$

[Install in 5 minutes](/install)

[](#outcomes)[](#who)

Who this is for

## You run AI agents seriously......and pay the tax for missing state

The re-prompting tax is annoying. The real risk is when your agent acts confidently on wrong state, and you don’t find out until the damage is done.

[

Cross-tool sync

![](/assets/who_icp_operating_square-BdmpQNg0.png)

You're the context janitor between tools

Every session starts from zero. You re-explain context, re-prompt corrections, re-establish what the agent already knew.

You stop acting as the human sync layer between tools and start operating with continuity, steering instead of re-explaining.

](/neotoma-with-claude-agent-sdk/operating)[

Pipeline state

![](/assets/who_icp_building_pipelines_square-C4oggNm6.png)

You're babysitting inference variance

Your agent guesses entities every run. Corrections don’t persist. Regressions ship because the architecture can’t prevent them.

You stop babysitting inference variance and start building on solid ground, with state that stays corrected from run to run.

](/neotoma-with-claude-agent-sdk/building-pipelines)[

Replay & debug

![](/assets/who_icp_debugging_infrastructure_square-ESMbcH6i.png)

You're the log archaeologist

Two runs. Same inputs. Different state. No replay, no diff, no explanation.

You stop reverse-engineering truth from logs and start debugging from replayable state you can inspect, diff, and trust.

](/neotoma-with-claude-agent-sdk/debugging-infrastructure)

If your AI is a thought partner you drive every turn, or you’re looking for a note-taking app, this isn’t built for you.

[](#demo)[](#memory-guarantees)

Guarantees

## Neotoma provides state integrity, not just storage

Chat memory, RAG retrieval, ad-hoc JSON, rolling your own DB: they optimize recall. None of them enforce versioning, provenance, or tamper detection.

[

![](/assets/guarantee_sym_deterministic_square-BDIDrnxZ.png)

Deterministic state

Same pipeline, different outputs — ordering bugs you can’t trace.

](/neotoma-with-claude-agent-sdk/memory-guarantees#deterministic-state-evolution)[

![](/assets/guarantee_sym_versioned_square-ClbSlW6R.png)

Versioned history

A retry silently overwrites a preference. The original is gone.

](/neotoma-with-claude-agent-sdk/memory-guarantees#versioned-history)[

![](/assets/guarantee_sym_audit_square-TbIMfg-Q.png)

Auditable change log

Your agent made a bad call. You can’t trace what it was working from.

](/neotoma-with-claude-agent-sdk/memory-guarantees#auditable-change-log)[

![](/assets/guarantee_sym_silent_square-ofWqPfo5.png)

Silent mutation prevention

Data changes without your knowledge. You discover it downstream.

](/neotoma-with-claude-agent-sdk/memory-guarantees#silent-mutation-risk)[

![](/assets/guarantee_sym_schema_square-BHrnYxuy.png)

Schema constraints

Agents write malformed data. Garbage in, garbage out — silently.

](/neotoma-with-claude-agent-sdk/memory-guarantees#schema-constraints)[

![](/assets/guarantee_sym_rebuild_square-DtAFJJ4V.png)

Reproducible reconstruction

Database corrupts. No way to rebuild state from source.

](/neotoma-with-claude-agent-sdk/memory-guarantees#reproducible-state-reconstruction)

[See all 12 guarantees compared](/neotoma-with-claude-agent-sdk/memory-guarantees)

[](#who)[](#record-types)

What to store

## Not sure where to start? Pick three.

Your contacts, tasks, and events disappear between sessions and tools. Store them once, versioned and queryable across every agent you run, and stop re-explaining your world.

[Start here

Contacts

People, companies, roles, and the relationships between them.

`contact``company``account`

](/neotoma-with-claude-agent-sdk/types/contacts)[Start here

Tasks

Obligations, deadlines, habits, and goals tracked across sessions.

`task``habit``goal`

](/neotoma-with-claude-agent-sdk/types/tasks)[Start here

Events

Meetings, milestones, and the outcomes attached to them.

`event``meeting``milestone`

](/neotoma-with-claude-agent-sdk/types/events)[

Transactions

Payments, receipts, invoices, and ledger entries versioned instead of overwritten.

`transaction``invoice``receipt`

](/neotoma-with-claude-agent-sdk/types/transactions)[

Contracts

Agreements, clauses, and amendments with the exact terms preserved over time.

`contract``clause``amendment`

](/neotoma-with-claude-agent-sdk/types/contracts)[

Decisions

Choices, rationale, and the audit trail that proves why an agent acted.

`decision``assessment``review`

](/neotoma-with-claude-agent-sdk/types/decisions)

[](#memory-guarantees)[](#evaluate)

![Neotoma evaluate page preview](/assets/hero_illus_evaluate_agent_page-B8tTomV1.png)

Evaluate it

## Let your agent decide if Neotoma fits

Your agent can read the docs, inspect the evaluation criteria, and tell you whether Neotoma fits your actual workflow before you install anything.

Copy this prompt into any AI agent to have it read the evaluation page, inspect your tool, workspace, and configuration context, then judge whether Neotoma fits your real workflow and what to persist first.

`Read https://neotoma.io/evaluate. Before you answer, inspect any broader tool, workspace, and configuration context you can access so you assess my real workflow rather than just this chat. Then assess whether Neotoma fits my workflow, what data would be highest value to persist first, and what I should do next.`Copy

[View evaluation page](/neotoma-with-claude-agent-sdk/evaluate)

Works with[Claude](/neotoma-with-claude-agent-sdk/neotoma-with-claude)[ChatGPT](/neotoma-with-claude-agent-sdk/neotoma-with-chatgpt)[Cursor](/neotoma-with-claude-agent-sdk/neotoma-with-cursor)[OpenClaw](/neotoma-with-claude-agent-sdk/neotoma-with-openclaw)

[](#record-types)

## Frequently asked questions

Platform memory (Claude, ChatGPT) is good enough - why add another tool?

Platform memory stores what one vendor decides to remember, in a format you can't inspect or export. It doesn't version, doesn't detect conflicts, and vanishes if you switch tools. Neotoma gives you structured, cross-tool state you control.

Can't I just build this with SQLite or a JSON file?

You can start there - many teams do. But you'll eventually need versioning, conflict detection, schema evolution, and cross-tool sync. That's months of infrastructure work. Neotoma ships those guarantees on day one.

Is this production-ready?

Neotoma is in developer preview - used daily by real agent workflows. The core guarantees (deterministic state, versioned history, append-only log) are stable. Install in 5 minutes and let your agent evaluate the fit.

Does Neotoma send my data to the cloud?

No. Neotoma runs locally by default. Your data stays on your machine in a local SQLite database. There is no cloud sync, no telemetry, and no training on your data unless you choose to expose the API (for example for remote MCP clients).

What's the difference between RAG memory and deterministic memory?

RAG stores text chunks and retrieves them by similarity for prompts. Neotoma stores structured observations and composes entity state with reducers; the same observations always yield the same snapshot. RAG optimizes relevance; deterministic memory optimizes integrity, versioning, and auditability.

[More questions? See the FAQ](/neotoma-with-claude-agent-sdk/faq)

![](/assets/hero_illus_packrat_holding_record-DOFA7a9W.png)

Neotoma

The state layer for AI agents. Open-source and local-first.

Product

[Install](/neotoma-with-claude-agent-sdk/install)[Architecture](/neotoma-with-claude-agent-sdk/architecture)[Memory guarantees](/neotoma-with-claude-agent-sdk/memory-guarantees)[FAQ](/neotoma-with-claude-agent-sdk/faq)

Documentation

[Docs](/neotoma-with-claude-agent-sdk/docs)[API](/neotoma-with-claude-agent-sdk/api)[MCP](/neotoma-with-claude-agent-sdk/mcp)[CLI](/neotoma-with-claude-agent-sdk/cli)

External

[GitHub](https://github.com/markmhendrickson/neotoma)[npm](https://www.npmjs.com/package/neotoma)[Blog](https://markmhendrickson.com/blog)

Re-prompting costs time. Wrong state costs trust. Find out if Neotoma fits before either compounds.

[Ask your agent to evaluate](/neotoma-with-claude-agent-sdk/evaluate)[Meet the creator](/neotoma-with-claude-agent-sdk/meet)

© 2026 Neotoma · v0.4.1 · 14 releases · MIT-licensed · Built by [Mark Hendrickson](https://markmhendrickson.com)

[Markdown](/neotoma-with-claude-agent-sdk/markdown "Markdown")