Changelog
All notable changes to OMEGA will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added
- Mode profiles for tool surface gating (Pro): registering 135 MCP tools
at handshake spent ~13K schema tokens before the first user message. The
new
OMEGA_MODEenvironment variable lets a deploy opt into a smaller surface that matches how it actually uses OMEGA.OMEGA_MODE=solo(the new default) loads core + dreaming + audit + typed — about 28 tools, ~4K tokens of schema. Right for single-agent coding sessions on Claude Code.OMEGA_MODE=teamadds coordination + federation — about 86 tools. Right for multi-agent and federated-peer setups.OMEGA_MODE=enterprise(aliasall) loads everything, matching the pre-mode behavior.- Additive syntax:
OMEGA_MODE=solo,federation,oraclepicks specific modules on top of a base profile. Per-tool overrides viaOMEGA_TOOLS_INCLUDE=tool_a,tool_bandOMEGA_TOOLS_EXCLUDE=tool_c. - New
omega_modetool (always loaded, including for free tier) reports the active profile, the loaded/skipped module breakdown, and the exact env-var incantation to expand. Surface bumps appear on theomega_welcomebanner so users see the active mode at session start. /healthHTTP endpoint grows amodesub-object with profile + loaded/skipped counts so the admin dashboard and external monitors can read it.- Mode is resolved once at server startup. Changing it requires a
restart — Claude Code does not honor MCP
tools/list_changed(anthropics/claude-code#13646), so runtime gating is not viable. - Lunar anti-pattern guard: a new test asserts no two tool schemas across modules share a name, so future module adds can't silently introduce the agent-misfire failure mode.
- 21 new tests in
tests/test_mode_profiles.py.
[1.5.4] - 2026-06-12
Added
- Context packets in Core:
context_packetbuilds compact, task-aware working context from retrieval seeds, graph chains, sensitivity filters, warning receipts, and a token budget. - Context packet eval tooling:
eval-context-packetmeasures packet recall,diagnose-context-packetexplains misses, andbackfill-context-packetpreviews candidate memory-chain repairs in dry-run mode. - Pro graph repair loop: licensed Pro unlocks
backfill-context-packet --applyandmaintain-context-packetso packet misses can become durable graph edges for future sessions.
Fixed
- Published the core package layout expected by Pro 1.5.4, including
omega.bridge._core,omega.bridge._ingest,omega.bridge._query, andomega.server.pid_registry, so scheduled dreaming and session coordination imports resolve against publicomega-memory==1.5.4. - Aligned public Core and private Pro release numbers at 1.5.4. Pro remains a private licensed wheel, not a public PyPI package.
[1.5.1] - 2026-05-25
Added
- P3.17 domain-typed memory schemas (Pro): closes the last P3 item
in the Sovereign Frontier Memory Stack plan. New
omega_platform.typedsubmodule ships four Pydantic models —CalibrationModel,ForecastModel,AnchorModel,OutcomeModel— that turn OMEGA's free-text memory store into a typed store for predictive workloads.- Each model extends
TypedMemoryBasewithConfigDict(extra="forbid", str_strip_whitespace=True, validate_default=True). A typo'd field fails at the store boundary, not at the consumer's regression model. store_typed(model, entity_id=?, extra_metadata=?)validates, serializes to JSON, and inserts viaSQLiteStore.storewithskip_inference=Trueso the embedding-similarity dedup doesn't collapse similar-shaped-but-different observations. Content-hash and canonical-hash dedup still fire (correct semantic for typed rows).query_typed(model_cls, entity_id=?, since=?, until=?, limit=?)uses SQLite'sjson_extracton thetyped_schemametadata discriminator (more reliable than LIKE substring matching) and revalidates each row through the Pydantic class. Rows that fail revalidation are silently skipped with a logged warning so a single corrupt row doesn't take down the query.- 3 new MCP tools:
omega_typed_store,omega_typed_query,omega_typed_schemas. The_schemastool returns the full JSON-schema for every registered typed model so callers can discover field constraints before storing. - First consumer: Meridian (P4.18–P4.20) — calibration rationale, anchor evolution, and forecast-vs-actual mining all ride on these primitives without each needing its own schema layer.
- 26 new tests in
tests/test_typed_p3_17.py(lint clean).
- Each model extends
Plan
- Sovereign Frontier Memory Stack: P3 8/8 closed. Only P4 (Meridian integration, paused for the partner agent) and marketing copy remain.
[1.5.0] - 2026-05-24
Changed
- Version bump to 1.5.0: marks the close of the Sovereign Frontier Memory Stack
P2 arc and the strategic pivot to Pro-as-paid-only going forward.
- Public/open-source core (
omega-memoryon PyPI) enters maintenance mode: bug fixes and merged community contributions only. No new feature work pushed to the public surface unless it ships behind the Pro license gate. - All P2.x / P3.x moat features (signed audit chain, federation, dreaming with LLM analyzers, local Ollama backend, parallel fan-out, scheduled autonomy, auto-apply) remain Pro-only and never sync to omega-public.
- Supersedes the Feb 2026 "community-first open-core" positioning. Rationale: moat features now stand on their own; further open-sourcing of Pro work would erode the paid surface without proportional community gain.
- Public/open-source core (
Added
-
P3.16b federation import + merge (Pro): closes the federation moat by shipping the receiving half of the protocol. Pairs with P3.16's export+verify so two OMEGA instances can exchange signed memory subsets end-to-end with cryptographic origin proof, trust gating, and lineage preservation. New module additions in
omega_platform.federation:import_federation_manifest(manifest, trust_mode=...)runs the 3-layer verifier, the trust-allowlist gate, then per-memory merge viaSQLiteStore.store(bypassing the bridge's auto-capture dedup so the peer's exact content + metadata are preserved). Idempotent: re-imports of the same manifest no-op via(content_hash, entity_id)matching, counted asalready_local.add_trusted_key(public_key_pem, label, added_by?),remove_trusted_key(fingerprint),list_trusted_keys(),is_trusted(public_key_pem): trusted-peer allowlist persisted at$OMEGA_HOME/federation/trusted_keys.json(atomic temp-file rename).key_fingerprint(public_key_pem): canonical SHA-256 hex of the raw 32-byte Ed25519 public key (stable across PEM encoding variants).- Trust modes:
trusted_keys_only(default; refuses unknown peers) andany_valid(accepts any cryptographically valid manifest; operator-verified out-of-band). - Lineage: every imported memory's metadata gains a
federation_originblock (manifest_id,source_label,peer_fingerprint,source_node_id,imported_at) so downstream queries can filter "memories from peer X" or trace a decision back to its source instance. - 4 new MCP tools:
omega_federation_trust_add,omega_federation_trust_list,omega_federation_trust_remove,omega_federation_import. Federation handler count: 2 to 6. - 22 new tests in
tests/test_federation_p3_16b.py(lint clean).
-
P2.8 parallel sub-agent fan-out for dream analyzers (Pro): closes the last literal P2 gap in the Sovereign Frontier Memory Stack plan. A single
omega_dreaminvocation can now partition its input across multiple in-flight LLM calls and aggregate the per-partition results, mirroring (in spirit) Anthropic's "Dreams runs AS A SESSION, parallel sub-agent fan-out" contract. Research-informed defaults fromqubytes.substack.comfan-out post-mortem and Anthropic prompt-cache docs — seedocs/plans/2026-05-24-p2-8-parallel-fanout-plan-v2.mdfor the source-cited design.OMEGA_DREAM_CONCURRENCY(default4, clamped 1..10): max in-flight LLM partitions per dream. Default is 4 rather than 6 because Anthropic's prompt cache only seeds on the first response; firing 6 simultaneous identical-prompt requests duplicates the system prompt 6× with zero cache hits.OMEGA_DREAM_PARTITION_TIMEOUT_S(default90, floor 5): per-partition LLM timeout viaasyncio.wait_for. A slow partition does NOT cancel its siblings — they finish, the slow one times out, the merger decides whether the partial set is usable.OMEGA_DREAM_MAX_INPUT_SESSIONS(default20, clamped 1..100): cap on input sessions a single dream aggregates over. Anthropic's hard cap is 100; we default lower per their "start small, scale up once curation quality verified" guidance.OMEGA_DREAM_CACHE_STAGGER(default1): when on, the first partition is awaited fully before partitions 2..N fire — partition 0 takes the cache miss, partitions 1..N take cache hits on the shared system prompt.OMEGA_DREAM_DEDUP_MIN_PER_CHUNK(default50): dedup's per-partition floor; sub-threshold runs fall back to the single-call SQL scan.- Every dream now mints a
dream_trace_id(dtr_<hex16>) atcreate_dreamtime and propagates it throughmetadata.dream_trace_id. Future LLM-call propagation will let post-mortems stitch a full pipeline trace from a single ID — Qubytes' six-hour fan-out incident root-caused to "nothing tied the run together with a shared identifier" is the cited reason for making this mandatory rather than opt-in. - Op aggregation uses hierarchical pair-merging (
tree_merge) rather than flatreduce(). Flat aggregation produced 12× orchestrator-context cost overrun in the Qubytes 7-partition incident; pair-merge keeps the per-merge context bounded. - Per-partition outcomes surface in
metadata.partition_results[]withcompletion_status: "full" | "partial" | "inferred",ops_count,error_reason, and per-partition token counts. The legacymetadata.backendblock (spec, provider, model, attempts, totals) stays compatible so admin/pro dream cards keep working without special-casing partitioned runs. - Failure semantic mirrors Anthropic Dreams: partial output is preserved on failure (no rollback). The dream only fully fails when ALL partitions fail.
- All four analyzers refactored:
llm_consolidate,memory_judge,skill_promotion(clusters are the natural partitions; serial cluster loop replaced with bounded gather) plusdedup(hash-prefix bucket partitioning across worker threads, since LLM-bound concurrency primitives don't help a pure-SQL scan). SQLiteStore.get_thread_local_read_conn()(P2.8.3): opt-in per-thread read connection so dedup's parallel SQL scan doesn't sharesqlite3.Connectionacross threads (unsafe even withcheck_same_thread=Falseperricardoanderegg.com/posts/python-sqlite-thread-safety). Existing single-connection read/write path is unchanged; the helper is additive. Unblocks the long-blocked P3.12b parallel fleet (mem-a97ef1ed2468) as a side benefit.
-
P2.12 dream-pipeline autonomy (Pro): two opt-in knobs that close the human-in-loop bottleneck for proposals carrying zero LLM judgment risk.
OMEGA_DREAM_AUTO_APPLY=safe(defaultoff): aftercreate_dreamproduces ops, auto-apply iff the analyzer wasdedup(pure content-hash equality, no LLM in the loop). All LLM-driven analyzers (llm_consolidate,memory_judge,skill_promotion) still require the manual gate. Unknown policy values fall back tooff— default-deny is the only acceptable failure mode for an auto-apply gate. Auto-apply writesauto_applied=True+auto_apply_policy+auto_apply_resultto dream metadata so the/admin/dreamsand/pro/dreamssurfaces can distinguish "Jason applied this" from "OMEGA auto-applied this".OMEGA_DREAM_EXPIRY_DAYS=30(default;0disables):expire_stale_dreams()flips pending dreams older than the threshold todiscarded. Applied/discarded jobs are immune. Discarded dreams keep theirproposed_opsso an expired-by-mistake dream is still inspectable.
-
Sovereign Frontier Memory Stack — dream pipeline (Pro): Anthropic-style proposed-mutation review for memory consolidation. The input store is never mutated until
omega_dream_applyis called;omega_dream_discardrejects a proposal cleanly. Four MCP tools (omega_dream,omega_dream_diff,omega_dream_apply,omega_dream_discard) plus four analyzers:dedup: content-hash duplicate detection, no LLMllm_consolidate: LLM proposesmerge_memories/mark_superseded/tag_contradictionops; honorsOMEGA_DREAM_CONSOLIDATE_MAX_JUDGE_SCOREpre-filter so high-quality memories are protected from consolidationmemory_judge: LLM scores each memory on relevance, specificity, freshness, and confidence plus a combinedquality_score; writes to metadata, non-destructiveskill_promotion: greedy cosine clustering on bge-small-en-v1.5 embeddings, LLM synthesizes each cluster as aSKILL.mdin~/.claude/skills-jit/for skill-search MCP discovery; source memories taggedpromoted_to_skillnon-destructively
-
LLMBackend Protocol + circuit-breaker router (Pro): Provider-agnostic dream-time LLM surface. Five backends ship: Anthropic (system-split kwarg), Groq (OpenAI-flat), xAI (via openai SDK at
api.x.ai/v1), Gemini (stdlib urllib,assistant→modelrename +systemInstructionlift), and Ollama (stdlib urllib, no auth,/api/chat). The router selects by storellm_backendfield (auto/cloud:<provider>/local:<provider>/ barelocal), falls through providers within a single generate cycle on transient failure, and circuit-breaks on repeated errors (OMEGA_DREAM_BREAKER_THRESHOLD,OMEGA_DREAM_BREAKER_COOLDOWN_S). -
P2.11 LOCAL-LLM backend — Ollama (Pro, THE MOAT): Dreaming runs air-gapped against a model on the user's machine. No API key (auth-by-locality), no data egress. Default
llama3.2athttp://127.0.0.1:11434, both overridable viaOMEGA_OLLAMA_MODEL/OMEGA_OLLAMA_BASE_URL. Stores opt in withllm_backend='local:ollama'; barelocalstill means "skip LLM" for backward compatibility. Connection-refused errors surfaceollama serveas the diagnostic. The strategic moat hosted-Memory competitors cannot match by construction. -
Fleet dreaming (Pro):
create_fleet_dream(analyzer, store_ids=None)fans an analyzer out across many stores in one call, returns aflt_<hex16>ID. Per-store failure isolation; fleet ID propagated into each child dream's metadata soget_fleet_dream/apply_fleet_dream/discard_fleet_dreamcan reassemble. Sequential only — parallel fan-out blocks on a per-thread SQLite connection refactor in the bridge layer. -
Marker-file scheduled dreaming (Pro):
OMEGA_DREAM_CADENCEon a store enables hourly background sweeps via the maintenance hook. ISO-8601 subset (PT*H/PT*M/PT*S/P*D/P*Wand bare seconds). Per-store markers prevent overlapping runs. -
Optional
[llm]extras group:pip install omega-platform[llm]declares the dream-backend SDKs (anthropic>=0.79.0,groq>=1.2.0,openai>=1.0.0; Gemini is stdlib). Included in[full]. -
Code review (
omega_review): Multi-agent specialist review panel with 5 agents (correctness, security, performance, consistency, blast radius). Hybrid static+LLM analysis: 12 deterministic pattern checks (zero false positives) plus LLM for novel issues. Memory-powered: uses OMEGA conventions, past incidents, and team preferences for context. Confidence gating with strict/normal/verbose modes. Fastsummarize_onlymode for risk assessment without LLM. Pre-commit hook athooks/pre_review.py. Standalone engine: singularityjason/revue.
[1.2.0] - 2026-03-04
Added
- Hooks in wheel: Claude Code hooks now ship inside the pip package;
omega hooks setupauto-configures~/.claude/settings.jsonwith correct paths - Multi-user auth: Google Sign-In, role-based access control, self-service onboarding wizard, per-user data scoping across all admin API routes
- Auth guards: 46 API routes hardened with session verification
- LLM provider abstraction: Unified
llm.py(Python) andlib/llm.ts(TypeScript) supporting Anthropic, OpenAI, and OpenAI-compatible providers viaOMEGA_LLM_PROVIDER - LLM usage tracking: Per-call cost tracking with session rollups and admin dashboard
- Multi-model consultation:
omega_consult_gptandomega_consult_claudetools for cross-model second opinions (replacesomega_lessons) - Growth engine: Thompson Sampling bandit for content optimization, attribution engine correlating X metrics with GitHub/PyPI, content genome pipeline
- Scheduled jobs infrastructure: State machine with retry logic, approval gates, audit trail, SLA escalation, heartbeat monitoring, Vercel cron migration
- Query expansion: LLM-based retrieval augmentation with strong-signal short-circuit and position-aware reranking (QMD-inspired)
- System insights: Permanent-TTL insight memories with protocol surfacing, file-triggered hooks, and admin graph visualization
- Trajectory distillation: Auto-extracts session summaries at session stop with quality gate
- Project registry: Unified canonical projects table with status tracking and auto-generation at session stop
- Schema v13: Unique index on forgetting_log to prevent duplicate entries
- Coordination upgrades: File claim gap closed with read tracking, peer-claimed commit blocking, auto-handoff on session stop, message priority
- Admin dashboard: Projects tab, LLM Usage tab, Entities tab, Conductor Console, Growth tab, Settings expansion (Profile, Agent, Memory, Projects, Integrations)
- Website: Next.js 16.1.6, homepage restructure, /pro page redesign, 6 new blog posts, HeroGraph visualization
- Automation: Target scanner, scan-and-reply cron, daily summary email, @omega_memory multi-account infrastructure
Changed
- sqlite_store.py split into mixin-based package (7 modules) for maintainability
- Oracle engine upgraded to thread-safe singleton
- Hook system abstracted for multi-client support (Claude Code, Cursor, Windsurf, Cline)
- Protocol adapted for multi-model providers with provider-specific notes
- Admin theme refined (violet accent, semantic signal colors)
Fixed
- ~176 bug fixes across security, admin, knowledge, bridge, entities, growth, LLM routing
- Multi-user data isolation across 29 API routes
- Thread-safety issues in oracle and embedding engines
- Knowledge base: SSRF prevention, entity filtering, race conditions
- Bridge: full memory ID returned from dedup/evolve/reconfirm paths
- Cloud sync hardening and expanded test coverage
Removed
- SayDo experimental module (archived)
omega_lessonstool (replaced byomega_consult_gpt/omega_consult_claude)
[1.1.0] - 2026-02-25
Added
- Automatic entity extraction from conversations (Phase 3) with async processing and throttle controls
- Bi-temporal data model with
valid_from/valid_untilfor point-in-time queries - Memory strength scoring with decay, deduplication, and
strength_minquery filter - Memory type classification — auto-classifies on store, filterable via
memory_typeparameter in omega_query - Contradiction detection surfaced in store output
- Intelligence cards — compact [OMEGA] cards for memory, decision, and learning events at NORMAL+ transparency
- Entity graph relationships wired into retrieval scoring
- Campaign Orchestrator v3.0 (Layers 1-3) with automation modules and proposal feed
- MCP server instructions for automatic memory usage by connected agents
- Session awareness and agent discipline protocol sections (v1.3.0)
- Admin dashboard: 3D Memory Graph visualization with bloom and clustering
- Admin dashboard: Interactive entity knowledge graph
- Admin dashboard: Skills Graph 3D visualization with manifest and API
- Admin dashboard: KnowledgeBase rewrite with folder tree, markdown preview, and breadcrumb navigation
- Admin dashboard: Orchestrator proposals feed, ambient awareness layer, historical coordination view
- Admin dashboard: Recharts-based Insights tab with memory sparklines and project charts
- Security hardening — shared validation module, coordinator handler hardening, write-tool rate limiting, CI dependency auditing, Dependabot
- Windows installer improvements and repair utility
- Website: downloads page, competitive positioning, OpenAI comparison blog post, dual-account tweet generation
Changed
- Extracted shared
mcp_response/mcp_errorhelpers to reduce duplication across server handlers - Generate button switched from SSE to job polling for reliability
- Tweet pipeline migrated to EST with slot optimization and reply queue
- Heavy cron jobs migrated from Vercel to GitHub Actions
Fixed
- SQLite lock contention reduced with
BEGIN IMMEDIATEtransactions and WAL checkpoint logic - Connection leak in
record_metriceliminated with hardened close/reconnect - Stale embedding backend state causing
tuple.encode()crash resolved - Hook resilience improved — retry on startup race, skip informational hooks in fallback mode
- JIT proxy: bypass MCP SDK 1.26
outputSchemavalidation errors - Router intent classifier no longer unconditionally overwrites session task
- Cloud sync: per-document error isolation with timeout config
- FTS5 query sanitization hardened against malformed input
1.0.0 - 2026-02-13
Added
- Open-core plugin architecture (OmegaPlugin base class, discover_plugins())
- Graceful degradation for all optional modules (coordination, router, entity, knowledge, profile, cloud)
- Apache-2.0 license
- GitHub Actions CI/CD (test matrix: Python 3.11, 3.12, 3.13)
- PyPI publish workflow with trusted publishers
- CONTRIBUTING.md, SECURITY.md, NOTICE
- Issue and PR templates
Changed
- License: MIT → Apache-2.0
- Author: → Kokyō Keishō Zaidan Stichting
- Hook server: conditional coordination handler registration
- CLI: graceful "requires omega-pro" messages for commercial modules
- MCP server: commercial tool schemas loaded only when modules available
- Version bump: 0.6.1 → 1.0.0
0.6.1 - 2026-02-11
Removed
- Phoenix module deleted — 1,531 lines source + 1,152 lines tests. Fully disconnected dead code: no hooks triggered it, no workflows called its 6 MCP tools, respawn requests wrote to JSON files nothing read. Session context handoff already handled by coordinator's snapshot/recover system.
- 6 MCP tools removed:
omega_phoenix_check,omega_phoenix_request,omega_phoenix_complete,omega_phoenix_requests,omega_phoenix_handoff,omega_phoenix_metrics [phoenix]optional dependency group from pyproject.toml
Changed
- MCP tool count: 60 (was 66)
- Test count: 1406 across 29 test files (was 1447 across 31)
- Renamed
_phoenix_recovery→_session_resumein hook_server.py (pure coordinator logic, no Phoenix dependency) [PHOENIX]label →[RESUME]in coord handler output
0.5.0 - 2026-02-10
Added
- Router auto-warmup on session start, auto-classify on every user prompt
- Router provider status surfaced in welcome briefing
- Groq re-added for simple_edit intent (speed mode)
- 1122+ tests across 28 test files, 0 lint errors
Changed
- Router classifier status checked on start, hot-reload on config change
0.4.3 - 2026-02-10
Changed
- Router rewired: xAI/Grok-4 as primary for exploration intent (research/AI trends), Google/Gemini as fallbacks, Groq re-added for simple_edit (speed mode)
- Router secrets: API keys loaded from
~/.omega/secrets.json— 5/5 providers active (Anthropic, OpenAI, Google, xAI, Groq) - CI matrix: dropped Python 3.10 (unsupported), added 3.13
- Removed phantom
litellmdependency from router extras (was never imported) - Fixed commitizen
changelog_start_revto existing tagv0.3.0
Fixed
- 105 ruff lint errors across src/ and tests/ (unused imports, f-strings without placeholders)
pre_push_guardtest subprocess import pathauto_claim_branchpath validation- Feedback score inflation: clamped to valid range
- Unbounded state growth in coordination audit log
- Stale Haiku model ID updated in router defaults
- Deprecated
datetime.utcnow()replaced with timezone-aware alternative - Missing thread lock in coordination cleanup path
Added
- 31 new tests: migration, reingest, reembed, lessons, classifier, concurrency coverage gaps
- Updated SCORECARD.md to v0.4.3 with post-cleanup metrics (242 memories, 4/5 providers)
- README rewrite for public audience: problem statement, 60-second quickstart, comparison table (vs Mem0/Zep/Copilot Memory), collapsible advanced details, contributing section, PyPI badge
- README: corrected test count (1074→1102), tool counts (22 memory + 25 coord), hooks (11)
- CONTRIBUTING.md: updated test count (1074→1102)
- SECURITY.md: added 0.3.x and 0.4.x to supported versions
Removed
- 162 stale Gnosis-era memory artifacts (506→242 memories)
- Dead code paths identified in diagnostic audit
0.4.2 - 2026-02-10
Added
- Unified hook system: all 11 hooks via
fast_hook.py→ daemon UDS dispatch pre_push_guardmigrated from standalone script to daemon handler (12 handlers total)_SLOW_HOOKSset with configurable timeout infast_hook.py- 37 new batch protocol tests (daemon batch, client batch, fallback short-circuit, log format)
- 4 UAT test suites: memory (10 scenarios), router (4), cross-module (4) — 2,153 lines
- 83 new tests in
test_cli.pyandtest_graphs_coverage.py
Fixed
- Thread lock added to
get_node()in sqlite_store.py (race condition on access_count) - Null-guard on access_count arithmetic in bridge.py dedup path
- 19 bare
except: passreplaced with specific exceptions + debug logging cleanup_old_requests()now usesmax_age_daysparameter (was ignored)- Merged 3 separate
store.query()calls into 1 inauto_capture()(saves 2 embedding generations)
Removed
- Dead
HAS_NUMPYvariable from graphs.py - Dead
get_model_history()stub from router/engine.py
0.4.1 - 2026-02-10
Fixed
omega doctornow loads sqlite-vec extension before checking vec index- Circuit breaker cooldown recovery: embeddings resume after transient failures
- Orphaned vec index entries cleaned up on startup
0.4.0 - 2026-02-10
Added
- Router module (10 MCP tools): multi-LLM intent classification and routing
- ONNX prototype classifier (<2ms, no ML deps beyond existing bge-small)
- 5 intents: coding, creative, logic, exploration, simple_edit
- 5 providers: Anthropic, OpenAI, Google, Groq, xAI
- 4 priority modes: cost, speed, quality, balanced
- Context affinity tracking with switch penalties
- Large context override (>100K tokens → Gemini)
omega_route_prompt,omega_classify_intent,omega_router_status,omega_set_priority_mode,omega_switch_model,omega_get_model_config,omega_get_current_model,omega_router_context,omega_warm_router,omega_router_benchmark
filter_tagsparameter foromega_querywith AND-logic hard filtering- CLI
compactandstatssubcommands scripts/migrate_magma.pyfor Gnosis MAGMA → OMEGA migration- README rewrite covering all tools, architecture diagram, install flow
Changed
- MCP tool count: 47 → 57 (+10)
- Optional module loading:
try/except ImportErrorin mcp_server.py pyproject.toml: router/full optional dependency groups- Total tests: 779
0.3.2 - 2026-02-10
Added
filter_tagsparameter onquery_structured(AND-logic, 3x over-fetch)- 4 utilization gaps closed: auto-tags on store, confidence thresholds, plan capture triggers
pre_push_guardenhancements: checkout target parsing, branch claim checks
Changed
- Hooks manifest aligned with active coordination hooks
- Utilization scorecard: grade improved from C+ to A- (gap 0.3)
0.3.1 - 2026-02-10
Added
- 24 coordination MCP tools re-enabled: sessions, file/branch claims, intents, tasks, messaging, audit
pre_task_guardhook: blocks edits when file's task is assigned to another agent- Utilization scorecard tracking (SCORECARD.md)
Changed
- Tool optimization: 44 → 22 MCP tools (23% → 91% utilization)
- Phase 1: Disconnected redundant coordination schemas (44 → 25)
- Phase 2: Merged
omega_statusintoomega_health,omega_export/omega_importintoomega_backup,omega_cross_project_lessonsintoomega_lessons(25 → 22) - Phase 3: Activated 8 dormant tools via hook wiring (session_start: type_stats, list_preferences, auto-backup; session_stop: session_stats, timeline; surface: traverse, phrase_search)
- MCP idle timeout: 600s → 3600s (1 hour)
0.3.0 - 2026-02-10
Added
- Real multi-agent file enforcement: PreToolUse
pre_file_guardhook blocks Edit/Write/NotebookEdit viasys.exit(2)when the target file is claimed by another agent session - Claim TTL auto-expiry:
CLAIM_TTL_SECONDS = 600— file claims expire after 10 minutes of inactivity, independently of the 30-minute stale session timeout - Force-claim override:
claim_file(force=True)lets agents explicitly steal claims when coordination breaks down, with full audit trail vialog_audit(tool_name="file_claim_force") forceboolean parameter added toomega_file_claimMCP tool schema_clean_expired_claims()method runs during periodic stale session cleanup- TTL-aware
check_file()auto-deletes expired claims on read - Daemon parity:
handle_pre_file_guardhandler inhook_server.pydispatch table pre_file_guardadded tofast_hook.pyfallback scripts table- 21 new tests in
test_pre_file_guard.pycovering blocking, self-claim, TTL expiry, force-claim, fail-open, notebook support - Atomic write for
profile.jsonvia tempfile +os.replaceto prevent corruption on crash
Fixed
- Deadlock in
claim_file:log_audit()was called insidewith self._lock:— sincethreading.Lockis non-reentrant, this caused silent hangs. Audit call moved outside the lock block
Design Decisions
- Fail-open: OMEGA unavailability never blocks edits — coordination is opt-in safety
- Standalone hook, not daemon-routed: PreToolUse is on the critical path; standalone is safer if daemon crashes
- No enforcement in single-agent mode: Empty
SESSION_IDskips all file guard checks
0.2.8 - 2026-02-10
Added
- SECURITY.md with vulnerability reporting policy
- CHANGELOG.md in Keep-A-Changelog format (backfilled v0.2.0–v0.2.7)
- CLI memory commands:
omega query,omega store,omega remember,omega timeline - LLM-agnostic setup:
omega setup --client claude-code(decoupled from Claude Code) omega_task_cancelMCP tool with handler and schema (was dead code — coordination method existed but had no MCP path)
Changed
- Removed 6 zero-utilization MCP tools (
deduplicate,extract_preferences,constraints,batch_store,reload,dedup_stats) - Removed 3 overhead hooks (
post_edit_test,pre_edit_surface,track_file_read), reducing per-edit Python processes from 5 to 3 - Export/import paths restricted to
~/.omega/(was entire home directory) - Error messages in MCP handlers no longer leak internal details
~/.omega/directory created with mode0o700(owner-only access)- Encryption key file created atomically with
O_EXCLto prevent TOCTOU race - Thread-safe SQLiteStore singleton via double-check locking
- Hardcoded
/opt/homebrew/bin/python3replaced with dynamic resolution in hooks - Silent vec-index delete failures now logged at DEBUG level
- Dedup regex compiled once at module level instead of per-query
- Hook log rotation at 5 MB cap to prevent disk fill
pre_push_guardnow blocks pushes on divergence viasys.exit(2)(was advisory-only)auto_claim_filenow surfaces[CONFLICT]warnings instead of silently swallowing claim conflicts- Hook timeouts increased:
coord_session_start3s → 10s,coord_session_stop3s → 8s - Git fetch subprocess timeout reduced from 15s to 5s to fit within hook timeouts
- Replaced deprecated
datetime.utcnow()withdatetime.now(timezone.utc)in hooks and coordination - Coordination tool count: 25 handlers (was 24)
Removed
- Dead
save()/load()compatibility stubs from SQLiteStore - Undefined
_LOAD_ATTEMPT_COUNTglobal from graphs.py
Fixed
- Numeric MCP handler parameters now clamped to safe bounds
.gitignorehardened with.env,*.db,*.log,*.key,hook.sock,.omega/cancel_tasknow enforces owner check — previously any session could cancel another's in-progress workclaim_file/claim_branchcatchsqlite3.IntegrityErrorfor cross-process race safetycheck_filereads now guarded by_lockfor consistency with write locking disciplinecheck_inboxread + mark-as-read unified under single lock to prevent concurrent read races_snapshot_sessionpreserves session capabilities in metadata for_auto_reregisterrecovery- Push event logging no longer truncates commit hashes (was
[:12], causing hash comparison mismatches)
0.2.7 - 2026-02-10
Added
- Memory visibility UX: capture confirmations, scored surfacing, health pulse, session activity summary
- Auto-feedback on surfaced memories at session stop
- Auto-compaction of lessons every 14 days at session start
- Cross-project lesson surfacing at session start
- File-extension-to-tag mapping for contextual re-ranking in edit surfacing
fast_hook.pystdin bridging for fallback hook scripts- Public SQLiteStore API:
edge_count(),get_last_capture_time(),get_session_event_counts() - 61 tests for hook UX output formatting
Changed
- Disabled CoreML provider to prevent native memory leak (~700KB/op); CPU-only ONNX used instead
- Session summaries TTL reduced from LONG_TERM (2 weeks) to SHORT_TERM (1 day)
- Hooks no longer access
SQLiteStore._conndirectly (use public API)
Fixed
- Daemon/standalone hook parity for scored surfacing, capture confirmations, and auto-feedback
- Stale surfacing file cleanup (both
.surfacedand.surfaced.jsonfiles older than 24h) - Idle watchdog task reference saved to prevent GC cancellation
- Resolved 23 test failures from broken hook imports
- Error dedup in hooks: cap at 5 errors/session, deduplicate by first-100-chars hash
0.2.4 - 2026-02-09
Added
- UDS hook server for fast hook dispatch (~5ms vs ~750ms cold start)
- Graph traversal (
omega_traverse) with BFS over edges table, max 5 hops - Memory compaction (
omega_compact) with Jaccard clustering and consolidated summaries - Contextual re-ranking with
context_fileandcontext_tagsboost - Auto-claim file hook for implicit coordination
- Orphan process cleanup and proactive stale session GC
- 24 tests for UDS hook server, idle watchdog, and stale cleanup debounce
- UAT suite for registration, coordination, and conflict avoidance
Fixed
- Coordination lifecycle, edge creation, and TTL gaps
- Batch embedding falls back to single-item ONNX before hash
0.2.3 - 2026-02-09
Added
- bge-small-en-v1.5 as primary embedding model (384-dim, better quality than all-MiniLM-L6-v2)
- Periodic TTL garbage collection (at most once per hour via
time.monotonic()) - Git-aware coordination: detect uncoordinated agents via git state
- Observability:
omega doctor, FTS5 repair, backup, timing, plan capture
Changed
- Python minimum version raised to 3.11+ (3.10 EOL)
- Test isolation improvements for safety
Fixed
- bge-small-en-v1.5 HuggingFace download URLs corrected
0.2.2 - 2026-02-09
Added
- Intelligence layer: constraints, cross-project lessons, smart surfacing
- Task management with deadlock detection and audit log
- Defensive hooks: read tracking and read-before-write warning
- Session recovery: snapshot/recover crashed sessions
Fixed
- Flaky tests caused by embedding circuit-breaker leak
- Naive/aware datetime comparison bug in
query() - 4 documented feature gaps closed
0.2.1 - 2026-02-09
Added
omega_similar: find memories similar to a given oneomega_timeline: show memories grouped by dayomega_consolidate: memory hygiene at scale (dedup, prune, optimize)- Auto-tags: extract languages, tools, file paths, project names at store time
- Auto-relate: create
relatededges on store (similarity >= 0.45)
Fixed
- 3 critical bugs found during UAT testing
0.2.0 - 2026-02-09
Added
- SQLite + sqlite-vec backend replacing in-memory graphs + JSONL sidecar
- FTS5 full-text search for phrase queries
- Multi-agent coordination system (12 tools, 38 tests)
- Encryption at rest with
cryptographylibrary omega_remember,omega_store,omega_query,omega_welcome,omega_profile- Export/import for backup and restore
- Batch store for multiple memories in one call
- 37 handler tests covering all 21 handlers
Changed
- Complete storage rewrite from JSONL to SQLite
- Parameterized SQL throughout (no string interpolation)