Skip to main content

memcal

Memory + Calendar for AI agents

PyPI Python 3.11+ License: MIT Docs

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...

Vague “Maya thing” → confirmed plan + who’s in

Instant answers: Memcal pre-renders a brief of your next 30 days into the prompt, so Hermes can answer without firing off a long, expensive lookup first. For a full calendar month, use memcal_list_month(month="2026-10"); for a year, use memcal_list_days(when="2026-01-01", days=365) (366 for a leap year). The brief reports when its token budget leaves events out.

The default backend is Codex with gpt-6-luna; OpenRouter uses openai/gpt-6-luna. Explicitly saved model choices still apply. See Configuration for the other backends and stage-model settings.

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 next 30 days are 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, Grok, OpenRouter, or an OpenAI-compatible API also work).

Quick start

pip install memcal
memcal setup
memcal doctor
memcal brief

Run memcal update to pull the latest code from GitHub. A checkout fast-forwards its Git upstream; a pip installation installs from the GitHub repository. Both upgrade dependencies, migrate the existing store, refresh its saved brief, and rebuild an installed scheduler and app wrapper. Checkout updates also repair the launcher. Local edits or unpublished commits stop the update so you can resolve them first. Restart running UI and agent sessions afterward.

Run memcal setup to choose your model provider, iMessage transport and BlueBubbles connection, and disabled sources. Other source credentials are optional. Use memcal setup --advanced for model tuning, brief, dream, and publishing settings. Enter keeps saved values; ? explains a setting and - resets it. The wizard shows a change summary before saving. Use memcal setup --section imessage (or provider, brief, collect, dream, merge, publish, credentials) to jump to one section. On macOS, iMessage reads the local Messages database by default and needs Full Disk Access for the process running Memcal. See iMessage setup to use BlueBubbles.

Dream diagnostics persist for CLI, web, and scheduled runs. Open a run in the web UI and expand Saved dream log for stage progress and crash tracebacks; model calls retain their prompts and replies. memcal trace <run> also prints saved errors. Logs live under ~/.memcal/calls/run-XXXX/dream.jsonl; a failure before the run opens is saved under calls/live/ and prints its path.

For a service with an OpenAI-compatible chat-completions endpoint, configure its base URL, model ID, and API key explicitly:

memcal setup --provider openai-compatible --model YOUR_MODEL \
  --base-url https://YOUR_HOST/v1 --api-key YOUR_KEY

MEMCAL_PROPOSE_OUTPUT_FLOOR can reserve more output tokens for models whose reasoning consumes the completion allowance. The default, 0, uses Memcal's calculated ceiling.

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/

Contributing: CONTRIBUTING.md. Notable changes: CHANGELOG.md.

Metadata

Release files for memcal 0.8.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for memcal 0.8.2
File Size Uploaded
memcal-0.8.2.tar.gz 2.2 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for memcal 0.8.2
File Interpreter ABI Platform
memcal-0.8.2-py3-none-any.whl Python 3 none any Details

Total release size: 4.0 MB

Release files / memcal-0.8.2.tar.gz

Download URL memcal-0.8.2.tar.gz
Size 2.2 MB
Tags Source
SHA-256 checksum
How to use checksums
31c357b5a889edb886562ad42ceb2bfbd9d0de34a7d278164c1b8d69a2ec9027
BLAKE2b-256 checksum
How to use checksums
07fec9684c609d595bcccb3e061a44b5ffd208fed5c5a4a54fe37da5949013cc
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 Oct 8, 2026.

Transparency log

Release files / memcal-0.8.2-py3-none-any.whl

Download URL memcal-0.8.2-py3-none-any.whl
Size 1.8 MB
Tags Python 3
SHA-256 checksum
How to use checksums
064fdfe95e41f3dad997ece93da991add107ab5b3d85c9a02af22b97b1818c13
BLAKE2b-256 checksum
How to use checksums
c4aa03bd3e2d719651b902c00427c9d7024878199f0a4f528968cd99f8cea0e0
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 Oct 8, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.8.2 This release

2 release files

0.8.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page