SkillAgentSearch skills...

mora

Experimental local-first memory CLI for MCP agents: read-only Gmail, calendars, iMessage, and files → cited local context

Install / Use

claude mcp add pyranthus-hq -- npx -y github:pyranthus-hq/mora

If the server publishes to npm under a different name, use that package instead — check the repo README.

About this skill
🔌

MCP Server

Model Context Protocol server

Quality Score

84/100

Supported Platforms

Claude Code
Claude Desktop

Our assessment of mora

mora scores 84/100 on our quality scale, 463rd of 598 Data & Analytics skills we index.

Its MCP Server is 18 KB long, well organised into 21 sections with 21 code examples: a thorough specification that gives an agent plenty to work with.

It has 10 GitHub stars, so there is little community track record yet; judge it on its content.

Substance
30/30
Structure
20/20
Description
15/15
Adoption
4/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated 2 days ago, so mora is actively maintained.
  • Our last check on 2026-09-14 found the source still online.
  • It is released under the Apache-2.0 license, a permissive license that allows use, modification and commercial use with attribution.
  • Its trust signals score 97/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

mora compared with similar skills

All 4 of these similar skills score higher than mora; compare them before choosing.

SkillScoreStarsUpdatedFormat
mora (this skill)by pyranthus-hq84102d agoMCP Server
claude-memby thedotmack100103.1ktodayCLAUDE.md
Agent-Reachby Panniantong100102.4ktodayCLAUDE.md
headroomby headroomlabs-ai10077.8k1d agoCLAUDE.md
CowAgentby zhayujie10047.6ktodayCLAUDE.md

Frequently asked questions

How do I install mora?
Run claude mcp add pyranthus-hq -- npx -y github:pyranthus-hq/mora. The install tabs above show the steps for each supported agent.
Which AI agents does mora 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 mora safe to use?
It is Apache-2.0-licensed and scores 97/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 mora still maintained?
The repository was last updated 2 days ago, so mora is actively maintained.
<div align="center"> <img src="docs/assets/mora-eye.svg" width="190" alt="Mora, the all-remembering eye"/>

Mora

Search your mail, messages, calendars, files, and GitHub issues from one place on your computer.

CI Release License Go Corpus

</div>

[!WARNING] Mora is alpha software. We use it every day, and its main paths have tests. It has not been tested on many other people's real data. Read the cited source before you act on a result. A failed or old sync can make the local copy stale.

Mora reads the sources you choose and saves copies as Markdown files on your computer. You can search them yourself or let an AI agent search them through MCP (a way for an agent to call local tools). Mora supports:

  • Gmail
  • Google Calendar
  • iMessage on macOS
  • WhatsApp Desktop on macOS
  • Apple Calendar on macOS
  • folders and files that you choose
  • GitHub Issues from repositories that you choose

The source connectors do not change the original mail, messages, events, or issues. Mora builds a SQLite index on your computer so searches are fast. Claude Code, Codex, and other MCP clients can use the same saved data.

Mora does not call an AI model by default. It finds source records and builds briefs that link back to them. Your agent can then write an answer from that evidence. If you want, a local Ollama model can improve search.

Jump to: Install · Add a source · Connect an agent · Update · Privacy

<p align="center"> <img src="docs/assets/architecture.svg" width="760" alt="Read-only sources flow into a local Markdown vault and SQLite index, then into any MCP client. Backup and sharing are optional network paths."/> </p>

Start on macOS

You need macOS and Homebrew for this route. The Cask installs the signed Mora.app and adds the mora command:

brew tap pyranthus-hq/tap
brew install --cask pyranthus-hq/tap/mora
mora version

This app contains the memory CLI. It does not include the separate desktop companion. If Mora is already installed, read the migration steps before using Brew.

If you do not use Homebrew, install the same signed app directly in ~/Applications/Mora.app:

(
  set -e
  mora_installer="$(mktemp -t mora-install)"
  trap '/bin/rm -f "$mora_installer"' EXIT
  curl -fsSLo "$mora_installer" https://raw.githubusercontent.com/pyranthus-hq/mora/main/install-app.sh
  sh "$mora_installer"
)

The direct installer checks the release and links mora to the app. Neither install method sets up connectors or a daily update job. See Keep Mora up to date when you are ready.

Other systems

Linux and older standalone installs can use:

curl -fsSL https://raw.githubusercontent.com/pyranthus-hq/mora/main/install.sh | sh

Windows users should see the Windows guide. To build from source with Go 1.25 or later:

go install github.com/pyranthus-hq/mora/cmd/mora@latest

Source builds report version dev. They do not update themselves. Google also needs your own OAuth client when you build from source.

Add your first source

A folder is the quickest way to check that Mora works. It needs no account login. Replace ~/Documents/notes with a folder you choose:

mora init
mora connect filesystem ~/Documents/notes
mora search "a project or person"

After you connect a source, try searching for a decision or asking your agent “What is on my calendar next week?” Search reads saved data. Writing a new memory is a separate action controlled by your MCP write policy.

Then add only the sources you want:

mora connect google                         # Gmail and Google Calendar
mora connect github --repo owner/repository # GitHub Issues
mora connect imessage                       # macOS; needs Full Disk Access
mora connectors enable whatsapp             # macOS; local read-only store
mora ingest run --source whatsapp

For Apple Calendar:

mora connectors enable applecalendar
mora ingest run --source applecalendar

Setup commands do different jobs:

| Command | What it does | | --- | --- | | connect | Sets up a source, enables it, and gets its first data. | | connectors enable | Gives Mora permission to use a connector. It does not promise a data pull. | | ingest run | Reads enabled sources and writes their current data into the vault. Use it for a first load or a backfill. | | sync | Refreshes a source that is already set up. |

Connect an AI agent

claude mcp add mora -s user -- mora mcp serve
codex mcp add mora -- mora mcp serve

Other MCP clients can start the same command:

{
  "mcpServers": {
    "mora": { "command": "mora", "args": ["mcp", "serve"] }
  }
}

MCP tools cover search, reading, writing, briefs, meetings, and people. The command line also handles setup and maintenance.

Mora also publishes an experimental Agent Plugins 1.0 package that bundles the stdio MCP declaration with portable Agent Skills. It does not install Mora, grant source permissions, or sandbox the client. Enabling it may auto-start the local MCP server, so review the client's data policy before first use. Unless you set a policy, Mora runs in propose, so agent writes wait for your approval. That holds however the server starts, including a client that auto-starts mora mcp serve before you ever run mora init.

Check health and add a schedule

mora doctor
mora schedule install ingest-hourly
mora schedule install pulse-daily
mora schedule list

On macOS, jobs from a signed app launch through Mora.app. This lets macOS use the app's Full Disk Access identity. Mora records its own sync result because the macOS app launcher does not return the inner command's exit code.

Full Disk Access on macOS

iMessage, WhatsApp, and Apple Calendar are local, but macOS still protects their files. Mora cannot grant this permission for you.

  1. Install the signed Mora.app first.
  2. Open System Settings.
  3. Open Privacy & Security, then Full Disk Access.
  4. Press + and choose /Applications/Mora.app for a Homebrew install, or ~/Applications/Mora.app for a direct install. Press Command-Shift-G to enter the path if needed.
  5. Turn Mora on. If macOS asks, quit and reopen the app or terminal.
  6. Run mora doctor.
  7. Run mora sync imessage, mora sync whatsapp, or mora sync applecalendar.

If an old Mora entry is present, keep it until the new app passes mora doctor and a protected sync. Then remove the old entry yourself. After an update, repeat those checks and grant access again if macOS asks. Never replace only the executable inside Mora.app; that breaks its signature. The guide covers older installations.

Ask an agent to set it up

Copy this prompt into an agent that can run local shell commands:

Install Mora from the official pyranthus-hq/mora repository and set up a small,
safe first run. On macOS, use the signed Mora.app Homebrew Cask, or the direct
signed-app installer if I do not use Homebrew. Verify `mora version` and run
`mora doctor`. Ask me before any Google
OAuth approval, GitHub token use, Full Disk Access change, backup, sharing, or
schedule install. Do not say you clicked or approved a system screen. I will do
those steps myself. Start with one folder that I choose, connect it, run a test
search, then offer to wire `mora mcp serve` into my agent. Report every command,
what it changed, and any check that did not pass.

Use Mora every day

mora brief                                      # what changed and what matters
mora search "What is open with Sam?"           # direct recall
mora think "What did we decide about pricing?" # evidence plus gaps for an agent
mora write --scope project:acme --type decision \
  --title "OAuth" --text "Use PKCE."            # save a decision
mora brief --event-id calendar_event/abc        # cited meeting prep
mora tasks list                                 # open local tasks
mora doctor                                     # source and index health

Useful flows:

  • Start a work session with mora brief.
  • Search for a person, project, issue, or decision with mora search.
  • Use mora think when the answer needs several pieces of evidence.
  • Save a note, fact, decision, or insight that you want agents to remember with mora write.
  • Use mora brief --event-id <id> before a meeting.
  • Capture and close small local tasks with mora tasks add, list, and done.
  • Run mora doctor when results look old or incomplete.

Mora can install Claude Code hooks too:

mora hook install
mora hook status

The SessionStart hook adds the brief. The UserPromptSubmit hook adds a small set of related memories for each prompt. Mora keeps existing valid Claude hooks. It refuses to rewrite a settings file that it cannot parse.

Correct or remove memory

Mora can propose that two addresses belong to the same person. It never accepts the match on its own.

mora teach identity list
mora teach identity confirm --handle <phone> --email <address> --yes
mora teach identity reject --handle <phone> --email <address>

You can correct a cited commitment or a note that you wrote:

mora teach commitment wrong-direction --memory-id <id> --direction owed_by_self --yes
mora teach commitment already-closed --memory-id <id> --yes
mora teach memory correct --id <id> --title "Correct title" --text "Correct text" --yes
mora teach history --memory-id <id>
mora teach undo <ledger-id>

mora delete removes one memory now. A later source sync can restore connector data. Use mora forget when the removal must remain after sync:

mora forget --chat <stable-id> --dry-run
mora forget --chat <stable-id> --yes
mora forget list
mora unforget <entry-id> --yes

Forget changes only Mora's local copy. It never deletes the source message, event, or issue.

Backup and sharing are separate choices

Mora offers three different paths:

| Path | Leaves this computer? | Encryption added by Mora? | Use | | --- | --- | --- | --- | | mora backup | No | No | Make a local .tar.gz copy in Mora's state directory. | | mora sync git | Yes, if the remote is off-device | No | Push the plaintext vault to a private git remote you control. | | mora share | Yes | Yes, with age | Send only authored memories from one scope through private git or your S3/R2 bucket. |

The vault contains plaintext. A private git remote is private by access rules, not by Mora encryption. mora share encrypts before upload, but the remote can still reveal file sizes and update timing. A person who already downloaded a share keeps that copy.

See the guide before you enable a network path.

Browser access on this computer

An agent that cannot start a local process can use Mora's loopback HTTP server:

mora serve http
# or keep it running as a user service
mora serve http install
mora serve http status

It binds only to 127.0.0.1, uses a bearer token, and does not enable CORS. Loopback means this computer only. It is still a local security boundary: any process that gets the token can call the allowed routes. The generic HT

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars10
CategoryData
Updated2d ago
Forks0

Languages

Go

Trust signals

97/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

1 info