Skip to content

Repository files navigation

Memoket × KITE: the memory inside Memoket

Follow the thread, not the nearest match.

KITE by Memoket turns conversations into structured, source-backed facts, then answers questions with the exact moment they came from attached.

Memoket website Join Memoket on Discord Follow Memoket on X Follow Memoket on Instagram Follow Memoket on Facebook


KITE at a glance: conversations become source-linked memory facts, memory settles under a governed topic map, a question compiles to an inspectable plan, and the answer arrives with receipts.

💡 Why KITE by Memoket

Most AI memory turns every sentence into a cloud of numbers and hands back whatever lands closest to your question. It always returns something, even when the answer was never there, and it cannot show you why.

KITE by Memoket reads what a question means, not how it sounds.

"Who's the decision-maker on the Henderson account now?"

Nothing in memory says decision-maker:

  • March. Marcus: "I'll sign off on Henderson."
  • June. The new VP of Ops: "Dana owns Henderson from here."

Both were filed under the same topic when they were written. Then now sorts them by date. Similarity has no notion of now: nearest-match memory rates March just as relevant and answers "Marcus", with nothing to tell you it is wrong. KITE answers "Dana", with the June line attached.

Nearest-match memory 🪁 KITE by Memoket
Finds whatever sounds like the question the facts that answer it
When it was never said returns something anyway comes back empty, and says so
Why this answer? a similarity score a readable plan, with who said it and when
Runtime stack embeddings · vector DB · rerankers one portable, topic-indexed file
Ask again tomorrow depends on the index that day the same plan walks the same steps

⚙️ How It Works

The whole idea in one line: conversations settle into facts under topics, and a question finds its topic and pulls that topic's memories, receipts included.

1 · Message → Fact

A user says, "I moved to Tokyo on July 26." KITE by Memoket extracts what happened and files it under its topics, keeping the original message as evidence:

<fact t="2026-07-26" kind="event" who="user"
      place="tokyo" event="move" src="chat1L1">
  The user moved to Tokyo on 26 July 2026.
</fact>
<line id="chat1L1" who="user">I moved to Tokyo on July 26.</line>

2 · Question → Plan

When the agent asks "Where does the user live now?", KITE by Memoket compiles the question into a plan you can read, validate, and cache:

{
  "select": "facts",
  "where": {"who": ["user"], "event": ["move"]},
  "pipe": [
    {"op": "sort", "key": "t", "desc": true},
    {"op": "head", "n": 1}
  ]
}

3 · Plan → Execution

The executor runs the plan over the topic index. Keywords and associations come first, then conditions filter down to the one moment that answers the question:

SEARCH facts
FILTER who = "user" AND event = "move"
SORT BY event_time DESC
TAKE 1

The same validated plan always follows the same steps over the same memory, with no embeddings and no vector database anywhere.

4 · Evidence → Answer

Answer: Tokyo
Source: chat1L1, "I moved to Tokyo on July 26."

Key Features

🚫 No vector stack

No embeddings, no vector database, no layers to embed, sort, and re-rank every result.

🗂️ Structured facts

Conversations crystallize into typed, dated, topic-indexed memory you can open and read.

🔍 Inspectable queries

Every question becomes a symbolic plan, revealing exactly how each answer was matched.

🕐 Time-aware retrieval

People, events, dates, and updates handled directly, so "now" means now.

🧾 Shows its work

Evidence links straight back to the moment it came from: who said it, when, and the actual words.

🤷 Knows what it doesn't know

When something was never said, the search comes back genuinely empty, and KITE says so.

🚀 Quick Start

1. Install and configure

python -m pip install memoket-kite
export OPENAI_API_KEY="sk-..."
mkdir -p artifacts
curl -fsSL \
  https://raw.githubusercontent.com/memoket/memoket-kite/main/examples/data/demo_codebook.xml \
  -o artifacts/quickstart.xml

Using another OpenAI-compatible provider? Set OPENAI_BASE_URL as well.

2. Remember

Turn a conversation into structured, source-backed facts:

from memoket_kite import Memory

memory = Memory.load("artifacts/quickstart.xml")
memory.remember(
    [{"role": "user", "content": "I moved to Tokyo."}],
    session_id="session_1",
)

3. Recall

Compile a question into a plan and retrieve matching facts, each carrying its sources:

from memoket_kite import Memory

memory = Memory.load("artifacts/quickstart.xml")

for fact in memory.recall("Where did the user move?"):
    print(fact.content)
    print(fact.sources)

4. Answer

Generate an answer from the retrieved evidence and keep the receipts:

from memoket_kite import Memory

memory = Memory.load("artifacts/quickstart.xml")

result = memory.answer_with_evidence("Where did the user move?")
print(result.text)  # "The user moved to Tokyo."
for fact in result.evidence:
    print(fact.content, fact.sources)  # the moments the answer stands on

print(memory.answer("Where did the user move?"))  # just the text

Full reference in docs/api.md; more runnable examples in examples/.

📊 Benchmark Results

KITE by Memoket posts the top overall score on both public long-conversation memory benchmarks. It is the only system up there that uses no vectors, and it reads less context than any capable rival.

Benchmark Overall Accuracy Avg. Reader Context
LoCoMo 🥇 93.51% 1.51k tokens
LongMemEval-S 🥇 85.60% 1.65k tokens

All systems are evaluated under one shared protocol, with gpt-4.1-mini as the common reader and judge; the exact rubrics are in the LoCoMo protocol and LongMemEval protocol. Reader context is the mean per-question evidence budget: what the reader actually gets to see, measured by the same ledger on every question.

Each figure comes from a reference run under the default configuration, with gpt-4.1-mini reading and judging and no ablation flags set. The reproduction contract pins the dataset revisions, protocols, model IDs, expected row counts, and reported scores. The provided scripts rebuild the evaluation locally from the official datasets with a configured compatible LLM endpoint.

How a local run is recorded

Every rebuilt run writes a local manifest naming the exact commit, corpus digest, tokenizer, and plan-cache digest it used. Judging records the answers, verdicts, and score in a second manifest keyed to the first. A completed run can validate that seal and recompute its metrics offline; the reference verifier also checks the manifest-declared paths, counts, and reported aggregate. Details are in the benchmark guide and reproducibility notes; the benchmark corpora keep their own licences, spelled out in LICENSE-DATA.md.

🔗 Integrations

KITE by Memoket is a plain Python library: three calls take you from a raw conversation to a cited answer. Integrations across the agent ecosystem (Claude Code, Codex, Cursor, OpenCode, and more) are next on the roadmap.

Want yours first? Tell us on Discord.

the string ties into Memoket

Download on the App Store    Get it on Google Play

✨ Experience KITE with Memoket

The memory you just read about ships today. KITE is the algorithm inside every Memoket: the same topic-filed facts, the same line back to the source, running on your own device. Ask it "didn't this client say their fiscal year ends in March?" months later, and it surfaces the exact moment: who said it, when, and in their words.

Memoket captures memories; KITE is the memory itself.

KITE-inside-MemoChat.mp4

See more of Memoket in action →

🤝 Community

📖 Citation

A technical report is in preparation; BibTeX will land here with the arXiv release. Until then, please cite this repository.

📄 License

KITE by Memoket is released under the Apache License 2.0.


Like its name, KITE by Memoket stays light enough to fly, always on a line back to the truth. 🪁

About

Memory engine for AI agents with token-efficient, explainable retrieval beyond vector similarity.

Topics

Resources

Contributing

Security policy

Stars

58 stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages