memcal
Memory + Calendar for AI agents
Most memory systems for agents like OpenClaw or Hermes (Mem0, Hindsight) are good at saving things like preferences and observations, but fail at personal assistant tasks, like remembering you have a dentist appointment next Friday. Memcal attempts to bridge this gap by enabling an agent to maintain its own internal calendar of your life. On top of that, a nightly fact-gathering stage will scan sources like iMessage, email, WhatsApp, iCal, and more to automatically update the agent calendar.
With Memcal, you can ask an agent, “What’s my weekend looking like?” and it will remember that your friend is free for dinner Saturday night, that the nonprofit you follow is having a member day, or even that your family is coming into town...
Instant answers: Memcal pre-renders a brief of your week into the prompt, so Hermes can answer without firing off a long, expensive lookup first.
Under the hood
- Write-time recency — updates move old values to history; read time isn’t a relevance fight (memcal vs retrieval)
- Pre-rendered brief — the week is already in the prompt, so weekend / “is that still on?” questions answer right away without a slow tool round-trip
- Typed stores — events, series, todos, questions, wiki
- Multi-stream join — Slack, Messages, email, calendar, and agent chat resolve to one underlying thing
- Nightly dream pass — observe → gate → propose → merge → brief
Install
Requires Python 3.11+, SQLite with FTS5, and one model backend (Codex by default; Claude Code, Antigravity, or OpenRouter also work).
Quick start
pip install memcal
memcal setup
memcal doctor
memcal brief
Memcal is built first for macOS — Messages, Calendar (EventKit), and launchd scheduling are the full product path. Connect those, then ask the agent what your week looks like.
Slack (pip install 'memcal[slack]') and MCP work on any machine if you want chat without the Apple sources.
From source (alternate):
git clone https://github.com/cuuush/memcal.git
cd memcal
./install.sh
Memcal reads sensitive personal data and sends selected source text to the model provider you configure — read the privacy notes before connecting real accounts.
MCP (any harness)
python3 -m memcal.mcp_server
Native plugins: Hermes · OpenClaw
Learn more
Full guides: https://cuuush.github.io/memcal/
- Quickstart — install, first ingest, nightly job
- Sources — Slack, Telegram, WhatsApp, iMessage, Signal, email, calendar, …
- CLI · MCP · Integrations
- Evaluation — how memory quality is measured
Contributing: CONTRIBUTING.md. Notable changes: CHANGELOG.md.
Metadata
Release files for memcal 0.8.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| memcal-0.8.1.tar.gz | 2.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| memcal-0.8.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.8 MB
Release files / memcal-0.8.1.tar.gz
| Download URL | memcal-0.8.1.tar.gz |
|---|---|
| Size | 2.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8be02c60e1ea0427433f756ea771cbbb54a64974f8becf4df1671b6e5fb93bc1
|
|
BLAKE2b-256 checksum How to use checksums |
9d8f22b8a4a8e80b59dd04e9abb9b66c3e998f281470aa2961c67a7f3b1c4dec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.
Transparency logRelease files / memcal-0.8.1-py3-none-any.whl
| Download URL | memcal-0.8.1-py3-none-any.whl |
|---|---|
| Size | 1.7 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3e04f52b03a0506f1619c3ce61ed55f7508f5211d9b7dcf14bcd2494d490f8a1
|
|
BLAKE2b-256 checksum How to use checksums |
fdb4eb41f5f9ccf56e405aef9ee7128a29d6e3cae806c11e0104f4ffe466fc42
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.
Transparency log