The Problem

AI coding assistants like Claude Code and OpenCode start each session with no memory of who you are, what you've worked on, or how you prefer to work. Users repeat context, re-explain preferences, and lose insights from previous sessions. Scheduling recurring tasks or background reflection requires manual setup and external tooling.

What This Does

Macrodata gives Claude Code and OpenCode persistent, self-maintaining memory and autonomous scheduling. It runs entirely locally, storing state as markdown and JSON files you can read and edit. The plugin injects working memory into every session — identity, current projects, daily focus, and recent activity — so the agent starts with context.

The core logic lives in plugins/macrodata/src/ and plugins/macrodata/opencode/. Key modules include conversations.ts (indexes past sessions), embeddings.ts (semantic search), indexer.ts (builds searchable history), and config.ts (path and state management). A daemon (bin/macrodata-daemon.ts) is a cron runner that spawns Claude Code for scheduled tasks. Four skill definitions (skills/) handle onboarding, memory distillation, dream-time reflection, and memory maintenance.

How To Use It

Setup: Requires Bun and macOS/Linux (WSL untested). Install via the Claude Code plugin marketplace:

/plugin marketplace add ascorbic/macrodata /plugin install macrodata@macrodata

For OpenCode, add "plugin": ["@macrodata/opencode"] to ~/.config/opencode/opencode.json and launch the app to set up.

Configuration: No environment variables or external APIs. The plugin auto-creates state directories on first run. All configuration is in plugins/macrodata/src/config.ts.

Running it: The plugin activates on session start. The daemon (bin/macrodata-daemon.ts) runs as a background cron process for scheduled tasks. Memory state files (identity.md, human.md, today.md, workspace.md) are created and maintained automatically.

Real-World Use

A developer who works across multiple projects installs Macrodata. Each morning, the daemon runs "dream time" — it reviews the previous day's journal entries, identifies patterns in how the developer solved problems, updates topics/ with new knowledge, and writes a today.md with priorities. When the developer starts a session on a bug they hit three weeks ago, semantic search in conversations.ts retrieves the relevant past discussion and injects it into context. The agent picks up where the developer left off without re-explaining anything.

Code Health & Issues

Med - No LICENSE file - root. Usage and redistribution rights are unclear despite the repo being public. Med - Experimental warning - README explicitly states "experimental software. Use at your own risk." The daemon spawns Claude Code with existing permissions, but autonomous background execution carries inherent risk. Low - Platform limitations - macOS/Linux only; Windows support is explicitly untested. This limits adoption. Low - Test coverage - 7 test files exist covering config, daemon, hook, indexer, and reminders. Core conversation analysis and embedding logic lack direct tests. Low - Bun dependency - Requires Bun runtime, which is less ubiquitous than Node.js. The repo uses bun.lock and bun scripts, so this is a hard requirement.

The Bottom Line

Macrodata is a thoughtful implementation of persistent memory for AI coding assistants. The layered memory architecture and local-only design are well-conceived, and the skill-based approach to self-maintenance is practical. It's experimental and platform-limited, so it's best suited to developers who already use Bun and are comfortable with autonomous agent behavior. The missing license and limited test coverage are the main concerns for production use.