Agent skill

Memori MCP Memory Usage

by MemoriLabs in MemoriLabs/Memori

Teaches an MCP-connected agent when and how to call Memori's recall, summary, compaction, augmentation, feedback and quota tools to keep context across sessions.

MITAuto-check passedAgent Workflows

Install Memori MCP Memory Usage

skills CLI
$ npx skills add MemoriLabs/Memori --skill memori-mcp-usage -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install MemoriLabs/Memori memori-mcp-usage --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/MemoriLabs/Memori.git skills-src && mkdir -p .claude/skills && cp -r skills-src/docs/memori-cloud/mcp/skills/memori-mcp .claude/skills/memori-mcp-usage && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
memori-mcp-usage
GitHub stars
17k
Token cost
~3.8k tokens
SKILL.md length
2,044 words
Files
1
Skills in repo
3
Repo updated
First seen
Licence
MIT

At a glance

Teaches an MCP-connected agent when and how to call Memori's recall, summary, compaction, augmentation, feedback and quota tools to keep context across sessions.

  • Works in 8 steps: If the message is trivial or the user… → After context compaction: retrieve… → Start of a meaningful session: retrieve… → …
  • Starting a session that depends on earlier decisions or preferences
  • SKILL.md covers Overview, Core Instruction, Quick Reference and When to Use Memori, plus 14 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Memori is a memory layer that records conversations and agent execution as structured memory. This skill is the usage guide for its MCP tools. It says recall is worth doing when a task depends on earlier sessions, decisions, preferences or constraints, or when a meaningful session is starting, and that it should be skipped for self-contained requests and for trivial messages such as a thank-you.

The tools covered are memori_recall for precise lookups, memori_recall_summary for session starts and status checks, memori_compaction for a brief after context compaction, and memori_advanced_augmentation for storing durable memory from a finished turn, plus memori_feedback, memori_signup and memori_quota. The agent must not invent entity, process, project or session identifiers, since the MCP server configuration supplies them, and it should rank current user instructions and verified local context above anything recalled.

When your agent uses it

  • Starting a session that depends on earlier decisions or preferences
  • Resuming work after the agent's context was compacted
  • Saving a finished exchange as durable memory
  • Checking Memori usage, quota or storage limits

Example prompts

  • “Pull up what we decided about the billing service last week before we continue.”
  • “Give me a short brief of where this project stands, using Memori.”
  • “Check how much of my Memori quota is left.”
  • “Tell Memori that the preference it just recalled is out of date.”

Requirements

  • A Memori MCP server configured with authenticated headers
  • A Memori account or API key

Workflow steps

8 steps, taken from the first numbered list in SKILL.md.

  1. If the message is trivial or the user opts out of storage, skip augmentation (and usually recall).
  2. After context compaction: retrieve resume state with memori_compaction.
  3. Start of a meaningful session: retrieve a summary with memori_recall_summary.
  4. During the task: use targeted memori_recall when prior context would materially improve the answer.
  5. Answer using useful recalled context, but verify anything stale, surprising, or high stakes.
  6. After drafting the final response: call memori_advanced_augmentation only for durable facts, preferences, or project context.
  7. When memory is missing or incorrect: send memori_feedback.
  8. When limits are reached: check memori_quota if needed and degrade gracefully.

What it can do on your machine

Read from SKILL.md and the folder at commit 574b1ea. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Memori MCP Memory Usage loads about 3.8k tokens when it runs. Until then it costs about 62 tokens; SKILL.md has 2,044 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~62
When it runs · the whole SKILL.md, loaded when a task matches
~3.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from MemoriLabs/Memori at commit 574b1ea, republished under its MIT licence (© MemoriLabs). 2,044 words, ~3,846 tokens.

Download SKILL.mdSave it as .claude/skills/memori-mcp-usage/SKILL.md (or your agent's skills folder).
name
memori-mcp-usage
description
Use when an MCP-connected agent should use Memori tools for targeted recall, summaries, post-compaction briefs, durable memory augmentation, quota checks, signup, feedback, preferences, prior context, or cross-session continuity.
version
0.5.0
author
Memori Labs
license
MIT
metadata.tags
Memori, MCP, Memory, Recall, Summary, Compaction, Advanced Augmentation
metadata.homepage
https://memorilabs.ai/

Memori skills file

Overview

Memori is agent-native memory infrastructure: an LLM-agnostic layer that structures memory from natural language and from agent execution trace.

Memori automatically captures and structures memory from conversation and execution trace, including the agent's actions, tool results, decisions, and outcomes. Use it to maintain continuity across sessions, preserve decisions and constraints, and help the agent understand what it actually did so future work is more accurate and efficient.

Core Instruction

When Memori MCP tools are available, treat this skill as the source of truth for how to use Memori through MCP.

Use it to understand:

  • Available Memori capabilities
  • Tooling and integrations
  • Expected behavior and constraints
  • Safety and privacy implications

MCP server configuration supplies authenticated user or tenant context through request headers. Do not invent entity, process, project, or session identifiers.

Current user instructions, verified local context, and tool results outrank recalled memory.

Quick Reference

  • memori_recall: retrieve precise memories by query, project, session, time range, or an allowed source/signal pair.
  • memori_recall_summary: retrieve a state summary for session starts, daily briefs, or broad status checks.
  • memori_compaction: retrieve a structured post-compaction brief to continue work after context compaction.
  • memori_advanced_augmentation: store durable memory from a completed user/assistant turn.
  • memori_feedback: report irrelevant, missing, stale, or especially useful memory behavior.
  • memori_signup: create a Memori account or request an API key when the user explicitly asks.
  • memori_quota: check usage, quota, storage, or memory capacity when the user asks or limits appear to be reached.

When to Use Memori

Use Memori when:

  • The task depends on prior context
  • The user refers to previous sessions or decisions
  • You need known constraints, preferences, or patterns
  • You are starting a meaningful session and need current state
  • You want to understand what has already been done

When Not to Use Memori

Do not use Memori when:

  • The task is fully self-contained
  • The answer depends only on the current prompt
  • No historical context is required
  • The query is simple or one-off
  • The message is trivial, administrative, or closing (for example "thanks", "ok", "goodbye")

Avoid unnecessary recall.

Recall Behavior

Recall is agent-controlled and intentional. Prefer targeted recall over broad queries.

Use:

  • memori_recall

Supported parameters:

  • query: natural language search query
  • projectId: project or workspace context, when the tool schema exposes it
  • sessionId: specific session, only with projectId
  • dateStart / dateEnd: UTC time-bounded recall
  • source: type of memory (must be paired with signal from the allowed combinations below)
  • signal: how the memory was derived (must be paired with source from the allowed combinations below)

If a sessionId is provided, a projectId must also be provided. All timestamps are stored in UTC.

Pass optional scope fields only when the tool schema exposes them and the active client or workspace provides reliable values.

Allowed source + signal combinations:

source and signal are not independent. They must be set together (or both omitted). Only the following (source, signal) pairs are valid:

  • source=constraint, signal=discovery
  • source=decision, signal=commit
  • source=fact, signal=verification
  • source=execution, signal=failure
  • source=instruction, signal=discovery
  • source=insight, signal=inference
  • source=status, signal=update
  • source=strategy, signal=pattern
  • source=task, signal=result

Any combination of source and signal not in this list is invalid and must not be sent to memori_recall.

Use one of the allowed (source, signal) pairs to prioritize high-signal memory when possible; never set source or signal independently.

Default behavior:

  • No date range means all-time memory.

Best practices:

  • Best query: use the latest user message verbatim.
  • Good query: use a short rephrased intent when the message is long or noisy.
  • Avoid generic queries like "preferences", "memory", or "context".
  • Start narrow with project or workspace scope, then expand only if needed.
  • Prefer one recall call per turn.
  • Do not recall on every turn.

Summary Behavior

Summaries are used for state awareness, not precise retrieval.

Use:

  • memori_recall_summary

Supported parameters:

  • projectId
  • sessionId
  • dateStart
  • dateEnd

Summaries do not support source or signal.

Default behavior:

  • No date range means Memori's summary default, currently the recent working window.

Daily Brief Behavior

At the start of a meaningful session, retrieve a structured summary.

Use the daily brief to understand:

  • Current state
  • Prior decisions
  • Constraints
  • Open work

Useful daily brief shape:

  • Today at a glance
  • Top next actions
  • Top risks
  • Verify before acting
  • Recent decisions
  • Mission stack
  • Hard constraints
  • Current status
  • Open loops
  • Known failures and anti-patterns
  • Staleness warnings

Treat summaries as working state, not unquestionable truth. If the answer depends on one specific decision, preference, or prior outcome, use memori_recall or verify against current sources.

Post-Compaction Brief Behavior

Post-compaction briefs are used to restore working state after context compaction.

Use them when:

  • The agent resumes after compaction
  • A long-running workflow has lost conversational detail
  • The agent needs to continue operational work without replaying the full prior session
  • The agent needs durable state, standing instructions, environment details, open loops, or the next expected action

Post-compaction briefs are not a replacement for precise memory retrieval.

Use:

  • memori_compaction

Supported parameters:

  • projectId: project or workspace context; required when the tool schema requires it
  • sessionId: specific session, only with projectId
  • numMessages: number of recent conversation messages to include

Post-compaction briefs do not support source or signal.

Default behavior:

  • Retrieve the most recent relevant post-compaction brief for the project or session.
  • Include a small tail of recent conversation messages unless more context is explicitly needed.

Expected post-compaction brief structure:

  • Meta
  • Environment
  • Standing orders
  • State
  • Active tasks
  • Open loops
  • Pending results
  • Timeline
  • Workspace changes
  • Continuation
  • Last action
  • Next expected action
  • Messages

Treat the post-compaction brief as the agent's resume state. Use it to understand:

  • What environment the agent was operating in
  • Which standing orders must continue to be followed
  • Which tasks are active
  • Which issues remain unresolved
  • What happened across the prior session window
  • What files, workspace state, or external systems may have changed
  • What the agent did last
  • What the agent should do next

The post-compaction brief should guide continuation, not override explicit user instructions. Before acting on operational details, verify any state that may have changed since compaction.

Pay special attention to:

  • Standing orders
  • Hard constraints
  • Alerting rules
  • Expected response formats
  • Open loops
  • Staleness warnings
  • Next expected action

If the post-compaction brief contains a required output format, follow it exactly unless the user gives a newer instruction.

Advanced Augmentation

Through MCP, durable memory is stored explicitly with memori_advanced_augmentation after you draft a response.

Use memori_advanced_augmentation only when the turn reveals durable information that would still be useful weeks from now in another conversation.

Supported parameters:

  • user_message: the user's message for this turn
  • assistant_response: the final assistant response for this turn
  • projectId: project or workspace scope, when available
  • sessionId: session scope, when available
  • summary: concise durable summary, when the tool schema supports it
  • trace: relevant execution trace, when the tool schema supports it and it is safe to store

Good candidates:

  • Explicit preferences: "always", "from now on", "default to", "I prefer"
  • Stable profile facts the user wants remembered: role, timezone, location, usual environment, accessibility needs
  • Long-lived project context: tooling, architecture decisions, naming conventions, ownership, deployment constraints
  • Durable workflow norms: review standards, release process, test strategy, formatting conventions
Do Not Augment

Never store:

  • Secrets, API keys, tokens, passwords, credentials, or sensitive personal data
  • Large logs, stack traces, raw tool output, or one-time error dumps
  • Temporary values, codes, links, live prices, schedules, or expiring facts
  • Role-play, hypotheticals, fictional statements, or examples
  • Routine session progress such as tests passed, commands run, files edited, or commit messages
  • Routine task activity such as refactors, imports, renames, or formatting
  • Conversation-scoped choices that are not lasting preferences

If the user says not to remember, store, save, log, or keep this turn, respect that. You may still recall if needed, but do not augment.

Rule of thumb: if the information describes what happened in this session rather than a fact or preference that should shape future sessions, do not augment.

Show full SKILL.md (773 more words)Show less

Procedure

  1. If the message is trivial or the user opts out of storage, skip augmentation (and usually recall).
  2. After context compaction: retrieve resume state with memori_compaction.
  3. Start of a meaningful session: retrieve a summary with memori_recall_summary.
  4. During the task: use targeted memori_recall when prior context would materially improve the answer.
  5. Answer using useful recalled context, but verify anything stale, surprising, or high stakes.
  6. After drafting the final response: call memori_advanced_augmentation only for durable facts, preferences, or project context.
  7. When memory is missing or incorrect: send memori_feedback.
  8. When limits are reached: check memori_quota if needed and degrade gracefully.

Common Pitfalls

  • Do not use broad recall when the user needs one specific fact, decision, or prior outcome.
  • Do not treat summaries as authoritative when exact details matter; use targeted recall or verify against current sources.
  • Do not use compaction for targeted memory search or routine turns.
  • Do not call signup, quota, or feedback tools unless the user's request or a Memori error makes them relevant.
  • Do not provide a sessionId without also providing a projectId.
  • Do not invent entity, process, project, or session identifiers; MCP headers supply attribution context.
  • Do not hide privacy tradeoffs: augmentation may store completed-turn context and safe trace fields when the client provides them.
  • Do not let memory override current user instructions, repository rules, or verified facts from the active workspace.

Safety and Correctness

  • Do not invent memory.
  • Do not assume memory is correct if it conflicts with the user.
  • Verify before acting when needed.
  • Treat current user instructions as higher priority than recalled memory.
  • If a signup, quota, or memory tool fails because the MCP server is unavailable, misconfigured, unauthorized, or missing credentials, explain the setup gap plainly and do not invent memory results.

Feedback

Use:

  • memori_feedback

Send feedback when:

  • Recall results are irrelevant or missing key context.
  • Important decisions or constraints were not captured.
  • A summary omits important current state.
  • Memory quality degrades across sessions.
  • Something works particularly well and should be reinforced.

Keep feedback concise and specific. Do not send feedback for ordinary task completion.

Feedback improves memory extraction quality, recall relevance, and summary accuracy.

Account Creation and Onboarding

Use:

  • memori_signup

Use this tool when:

  • The user explicitly asks to sign up, create an account, or get an API key for Memori.
  • You encounter an error indicating a missing Memori API key and the user provides their email address.

Behavior:

  • If the user asks to sign up but does not provide an email address, ask for their email first.
  • Once they provide an email, run memori_signup with that email.
  • Relay the tool result, remind them to check their inbox for the API key, and tell them to configure the Memori MCP server with X-Memori-API-Key and X-Memori-Entity-Id in their client MCP config.
  • Do not guess or hallucinate an email address.

Quota Awareness and Upgrades

Use:

  • memori_quota

Use this tool when:

  • The user explicitly asks about their quota, usage, storage, or remaining memory capacity.
  • Errors suggest memory limits have been reached and you want to confirm before degrading behavior.

Behavior:

  • Invoke memori_quota with no arguments when the tool schema allows it.
  • Relay the result clearly.
  • If limits are near or reached, explain the impact and suggest an upgrade only when performance is affected.

When limits are reached or near:

  • Reduce recall scope.
  • Prioritize high-signal memory, especially decisions, constraints, key facts, and execution results.
  • Avoid unnecessary or repeated recall calls.
  • Tell the user when limits affect memory behavior.

Example:

Memory limits have been reached. I can continue with limited recall, or you can upgrade to restore full functionality.

Updates

Memori may expose improved recall patterns, summaries, classification, or tool behavior over time.

When an update is exposed through the system, tool metadata, or user-provided docs:

  • Prefer the newer recall or summary behavior when available.
  • Keep this skill's safety, privacy, and intentional-use rules in force.
  • Continue normally if no behavior change is required.

Verification

Confirm the skill is working in a fresh MCP client session:

  1. Verify the Memori MCP server is connected and lists memori_recall, memori_recall_summary, memori_compaction, and memori_advanced_augmentation.
  2. Tell the agent a durable preference such as "I always use tabs over spaces."
  3. After augmentation completes, start a later session and ask it to write code.

Expected behavior:

  • The agent should use Memori MCP tools rather than answer from generic memory knowledge.
  • The answer should distinguish precise recall from broad state summaries.
  • The answer should mention targeted use, avoiding unnecessary recall, and treating current user instructions as higher priority than memory.
  • If Memori credentials or the MCP server are unavailable, the agent should explain the setup gap without inventing recall results.

© MemoriLabs, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in docs/memori-cloud/mcp/skills/memori-mcp of MemoriLabs/Memori.

Open the folder on GitHubat commit 574b1ea

Compare with similar skills

Memori MCP Memory Usage next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Memori MCP Memory Usage compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Memori MCP Memory Usage this skillMemoriLabs/Memori17k—~3.8kAutomated safety check: PassMIT
Engram MemoryPatdolitse/piia-engram163—~1.3kAutomated safety check: PassAGPL-3.0-or-later
Prism Startup Contextdcostenco/prism-coder158—~1.4kAutomated safety check: PassApache-2.0
Mnemosjeremylongshore/tons-of-skills-marketplace2.8k—~3.1kAutomated safety check: PassMIT
MemPalace Setup and OperationMemPalace/mempalace60k—~2.2kAutomated safety check: PassMIT
agentmemory Setup and Diagnosticsrohitg00/agentmemory29k—~1kAutomated safety check: NotesApache-2.0

Similar skills

  • Engram Memory

    Patdolitse/piia-engram

    Routes continuity and recall requests to Engram, a local-first MCP memory and identity layer that saves user-approved lessons, decisions and playbooks.

    163 GitHub stars~1.3k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Prism Startup Context

    dcostenco/prism-coder

    Loads Prism session memory on the first user turn, greets the developer by their configured name and shows recent-session context at the configured depth.

    158 GitHub stars~1.4k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Mnemos

    jeremylongshore/tons-of-skills-marketplace

    Persistent memory and learning-loop skills for AI coding agents using mnemos MCP tools.

    2.8k GitHub stars~3.1k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • Installs and configures MemPalace as a private local palace, a shared-brain hub or a client of an existing hub, including MCP registration and version-correct initialization.

    60k GitHub stars~2.2k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Sets up and troubleshoots a local agentmemory install, covering the MCP connection, environment variables, ports, authentication and optional feature flags.

    29k GitHub stars~1k tokensUpdated yesterday
    Agent WorkflowsAuto-check: notes
  • Qmd

    breferrari/obsidian-mind

    Search the vault using QMD semantic search. An agent skill from breferrari/obsidian-mind.

    5k GitHub stars~1.7k tokensUpdated 5 days ago
    Agent WorkflowsAuto-check passed

More from MemoriLabs/Memori

  • Memori Long-Term Memory

    MemoriLabs/Memori

    Connects Claude Code to Memori Cloud for long-term memory, recalling stored context before substantive replies and saving new context afterward.

    17k GitHub stars~2k tokensUpdated 8 days ago
    Auto-check: notes
  • Memori Long-Term Memory

    MemoriLabs/Memori

    Adds structured long-term memory to OpenClaw agents, built automatically from sessions, with tools the agent calls to recall facts, summaries and decisions.

    17k GitHub stars~2k tokensUpdated 8 days ago
    Auto-check passed

Categories

Questions about Memori MCP Memory Usage

What does Memori MCP Memory Usage do?

Teaches an MCP-connected agent when and how to call Memori's recall, summary, compaction, augmentation, feedback and quota tools to keep context across sessions. Memori is a memory layer that records conversations and agent execution as structured memory. This skill is the usage guide for its MCP tools.

When should I use Memori MCP Memory Usage?

Memori MCP Memory Usage fits situations like: starting a session that depends on earlier decisions or preferences; resuming work after the agent's context was compacted; saving a finished exchange as durable memory; checking Memori usage, quota or storage limits.

How do I install Memori MCP Memory Usage in Claude Code?

Run `npx skills add MemoriLabs/Memori --skill memori-mcp-usage -a claude-code`. Or copy the skill folder (docs/memori-cloud/mcp/skills/memori-mcp in MemoriLabs/Memori) into .claude/skills/memori-mcp-usage in your project. Claude Code loads it when a task matches its description.

How do I install Memori MCP Memory Usage in Codex?

Run `npx skills add MemoriLabs/Memori --skill memori-mcp-usage -a codex`. Or copy the skill folder (docs/memori-cloud/mcp/skills/memori-mcp in MemoriLabs/Memori) into .agents/skills/memori-mcp-usage in your project. Codex loads it when a task matches its description.

Can I use Memori MCP Memory Usage in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add MemoriLabs/Memori --skill memori-mcp-usage -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/memori-mcp-usage, .gemini/skills/memori-mcp-usage, .github/skills/memori-mcp-usage and .opencode/skills/memori-mcp-usage in your project.

What does Memori MCP Memory Usage need to run?

SKILL.md names no scripts, command-line tools or credentials: Memori MCP Memory Usage is instructions for the agent only. Our summary lists: A Memori MCP server configured with authenticated headers; A Memori account or API key.

Does Memori MCP Memory Usage access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Memori MCP Memory Usage safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Memori MCP Memory Usage use?

Memori MCP Memory Usage is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Memori MCP Memory Usage use?

About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Memori MCP Memory Usage?

Skills that share tags, products or a category with Memori MCP Memory Usage: Engram Memory (Patdolitse/piia-engram, 163 stars), Prism Startup Context (dcostenco/prism-coder, 158 stars), Mnemos (jeremylongshore/tons-of-skills-marketplace, 2.8k stars) and MemPalace Setup and Operation (MemPalace/mempalace, 60k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Memori MCP Memory Usage?

MemoriLabs (a GitHub organization) maintains it in MemoriLabs/Memori, which has 17,149 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 3, 2026.

Source: MemoriLabs/Memori on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.