This release adds 2 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
+11 more
ReleasePort's take
Light signalv0.9.4 introduces pluggable persistence protocols (SecretStore, StateStore, KnowledgeStore, ThrottleStore) with a new `mureo learn add` CLI command. Default file-backed implementations available via mureo.core.
Why it matters: Custom storage backend implementations now possible via pluggable Protocols; default file-backed implementations stable. Evaluate custom backends for your infrastructure; test in dev if implementing.
Summary
AI summaryAdded extensible core protocols (SecretStore, StateStore, etc.) with a new mureo learn add CLI command.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Medium |
Introduces pluggable persistence protocols under `mureo.core` for SecretStore, StateStore, KnowledgeStore, and ThrottleStore. Introduces pluggable persistence protocols under `mureo.core` for SecretStore, StateStore, KnowledgeStore, and ThrottleStore. Source: granite4.1:8b-q6_K@2026-05-21 Confidence: high |
— |
| Feature | Medium |
Adds `mureo learn add <text> [--scope {operator,workspace}]` CLI to persist /learn insights via RuntimeContext.knowledge_store. Adds `mureo learn add <text> [--scope {operator,workspace}]` CLI to persist /learn insights via RuntimeContext.knowledge_store. Source: granite4.1:8b-q6_K@2026-05-21 Confidence: low |
— |
| Feature | Medium |
Provides `mureo.core.default_runtime_context()` factory wiring default file-backed implementations. Provides `mureo.core.default_runtime_context()` factory wiring default file-backed implementations. Source: granite4.1:8b-q6_K@2026-05-21 Confidence: low |
— |
| Feature | Medium |
Introduces `mureo.core.get_runtime_context()` resolver for zero-arg entry-point `mureo.runtime_context_factory`. Introduces `mureo.core.get_runtime_context()` resolver for zero-arg entry-point `mureo.runtime_context_factory`. Source: granite4.1:8b-q6_K@2026-05-21 Confidence: low |
— |
| Dependency | Medium |
`mureo.core.RuntimeContext` aggregates the four stores and a workspace_id as a frozen dataclass. `mureo.core.RuntimeContext` aggregates the four stores and a workspace_id as a frozen dataclass. Source: granite4.1:8b-q6_K@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Routes consumers through new Protocols: auth credential loading, MCP handlers, rollback command, BYOD data directory resolution. Routes consumers through new Protocols: auth credential loading, MCP handlers, rollback command, BYOD data directory resolution. Source: granite4.1:8b-q6_K@2026-05-21 Confidence: high |
— |
Full changelog
Added — Extension Protocols and mureo learn CLI (#125)
A new public surface under mureo.core lets alternate backends and tests inject pluggable persistence without forking call sites. The shape mirrors the existing mureo.core.providers and mureo.core.skills extension patterns. Every default reproduces today's file-backed behaviour, so existing users see no change.
mureo.core.SecretStore—Protocolfor credential round-trip (load / save / delete). DefaultFilesystemSecretStorereads and writes~/.mureo/credentials.jsonbyte-for-byte equivalent to the previous flow (atomic write,0o600viamureo.fsutil.secure_fchmod,ensure_ascii=False).mureo.core.StateStore—ProtocolforSTATE.json/STRATEGY.md/ action_log persistence. DefaultFilesystemStateStorecomposes the existing helpers inmureo.context.state/mureo.context.strategy.mureo.core.KnowledgeStore— two-tierProtocolfor/learninsights (operator + workspace). DefaultFilesystemKnowledgeStorewrites to today's~/.claude/skills/_mureo-pro-diagnosis/SKILL.mdlocation with the same frontmatter scaffold.mureo.core.ThrottleStore—Protocolfor per-key API rate limiting. DefaultProcessLocalThrottleStorewrapsmureo.throttle.Throttler;register(key, config)pre-installs custom buckets matching the MCP server's_PLUGIN_TOOL_THROTTLERSpattern.mureo.core.RuntimeContext— frozen dataclass aggregating the four stores plus aworkspace_id.DEFAULT_WORKSPACE_ID = "default"is the canonical single-workspace sentinel.mureo.core.default_runtime_context()— factory wiring the four file-backed defaults.mureo.core.get_runtime_context()— process-cached resolver that discovers a single zero-arg factory under themureo.runtime_context_factoryentry-point group; raisesRuntimeContextFactoryErroron multiple registrations or a returning-non-RuntimeContextfactory.
Added — mureo learn add CLI
mureo learn add <text> [--scope {operator,workspace}] persists /learn insights through RuntimeContext.knowledge_store rather than writing files directly. Default scope operator writes the cross-workspace tier (today's pro-diagnosis location); --scope workspace writes a workspace-scoped tier if one is configured. The /learn skill (skills/learn/SKILL.md) now invokes the CLI instead of carrying its own copy of the file scaffold.
Changed — Consumers routed through the new Protocols
These refactors are call-site changes only; all on-disk artefacts and CLI behaviour are byte-equivalent in the default file-backed runtime.
mureo.auth.load_google_ads_credentials/load_meta_ads_credentialsread throughSecretStore(get_runtime_context().secret_storewhenpathis not passed; one-shotFilesystemSecretStore(path=…)when it is).- MCP handlers
mureo_strategy_*,mureo_state_*,rollback_*,analysis_anomalies_checkresolve theirpath/state_fileargument againststate_store.workspacerather than raw CWD. Error messages and traversal-refusal semantics are preserved; symlink refusal in the analysis handler is unchanged. - MCP plugin dispatch acquires its throttle slot via
RuntimeContext.throttle_store. The defaultProcessLocalThrottleStoreis seeded with the existing per-toolThrottlerinstances (_PLUGIN_TOOL_THROTTLERS) on first call; alternate backends receiveacquire(name)and own per-key fallback semantics. mureo.cli.rollback_cmd--state-filedefault is now resolved throughRuntimeContext(rather than the literalPath("STATE.json")).mureo.byod.runtime.byod_data_dir()adds a middle-priority resolution path: when a non-defaultRuntimeContextexposes a filesystemworkspace, BYOD data lives at<workspace>/byod/.MUREO_BYOD_DIRenv var and the legacy~/.mureo/byod/fallback are unchanged.
Install
pip install --upgrade mureo
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About logly/mureo
Framework for AI agents (Claude Code, Cursor, Codex, Gemini) to operate Google Ads, Meta Ads, and Search Console. Grounded in a local STRATEGY.md — not metric-chasing. Defense-in-depth security, local-first. Apache 2.0.
Related context
Related tools
Beta — feedback welcome: [email protected]