Repository navigation
Releases
Contextify v0.8.0
Contextify v0.8.0
All-in-one Docker image — everything included, zero setup.
Quick Start (CLI)
curl -fsSL https://raw.githubusercontent.com/atakanatali/contextify/main/scripts/install-cli.sh | sh
contextify installQuick Start (Docker)
docker run -d --name contextify -p 8420:8420 \
-v contextify-data:/var/lib/postgresql/data \
ghcr.io/atakanatali/contextify:0.8.0What's Changed
Added
- Claude Desktop / Cowork MCP support via
npx mcp-remotestdio bridge (claude_desktop_config.json) - Claude Chat (claude.ai) remote MCP setup guidance with manual connector instructions
- Codex MCP support via
codex mcp add/get/remove - Codex installer instructions file (
~/.contextify/codex-instructions.md) - New tool options in install wizard:
claude-desktopandclaude-chat(interactive menu items 2 and 3) - Go toolconfig:
internal/toolconfig/desktop.goandinternal/toolconfig/chat.go - Cross-platform Claude Desktop config path detection (macOS, Windows, Linux)
- Auto-restart Claude Desktop after configuration
- Steward rollout and operations documentation set:
- reliability hardening, log security, verification matrix, rollout/SLO/runbook docs under
docs/steward/
- reliability hardening, log security, verification matrix, rollout/SLO/runbook docs under
- Steward verification matrix artifact generation (
make verify-steward) and Backend CI artifact upload - Steward observability e2e smoke test (
tests/e2e/steward_observability_test.go)
Changed
- Install wizard expanded from 4 to 7 tool options
--toolsflag now acceptsclaude-desktop,claude-chat, andcodex--allflag includes all 7 tools- Install/update/uninstall/status flows now include Codex alongside Claude/Cursor/Windsurf/Gemini
- Documented repository merge policy in
CLAUDE.md: use normal merge commits for PRs (no squash), then delete remote feature branches after merge.
Commits
Features
- feat(steward): add log redaction retention and admin guards (#84) (
526776e) - feat(steward): add runtime reliability guardrails (#83) (
395d539) - feat(steward): add safe self-learn policy tuner (#82) (
03b06b1) - feat(steward-ui): add steward operational controls (#81) (
c8b1ba2) - feat(steward-ui): add steward observability console (#80) (
6039df0) - feat(api): add steward status logs metrics and control endpoints (
7c62dcc) - feat(steward): add telemetry contract and metrics queries (
b1a14ba) - feat(steward): add derivation executor and lineage records (
13ed59c) - feat(steward): add ollama merge conflict guard and schema validation (
9704c20) - feat(steward): auto-merge high-confidence suggestions (
0df75db) - feat(steward): add runtime worker loop and queue processing (
66045a7) - feat(steward): add config validation and bootstrap wiring (
a847b40) - feat(steward): add schema migrations for jobs runs and events (
95b0acd)
Fixes
- fix(ci): make ollama model pull best-effort in health check (
b831473) - fix(stats): fail fast on scan and aggregate query errors (
02757eb) - fix(memory): preserve title when re-embedding content updates (
9123268) - fix(api): return 404 for missing memory mutations (
69bdee3)
Other
- docs(steward): add rollout plan slos and runbook (#86) (
5b1190b) - test(steward): add verification matrix artifacts and coverage (#85) (
b740a5d) - docs(steward): add ADR and architecture spec for STW01 (
1a0f8e1)
Full changelog: v0.7.1...v0.8.0
Contextify v0.7.1
Contextify v0.7.1
All-in-one Docker image — everything included, zero setup.
Quick Start (CLI)
curl -fsSL https://raw.githubusercontent.com/atakanatali/contextify/main/scripts/install-cli.sh | sh
contextify installQuick Start (Docker)
docker run -d --name contextify -p 8420:8420 \
-v contextify-data:/var/lib/postgresql/data \
ghcr.io/atakanatali/contextify:0.7.1What's Changed
Added
- Claude Desktop / Cowork MCP support via
npx mcp-remotestdio bridge (claude_desktop_config.json) - Claude Chat (claude.ai) remote MCP setup guidance with manual connector instructions
- Codex MCP support via
codex mcp add/get/remove - Codex installer instructions file (
~/.contextify/codex-instructions.md) - New tool options in install wizard:
claude-desktopandclaude-chat(interactive menu items 2 and 3) - Go toolconfig:
internal/toolconfig/desktop.goandinternal/toolconfig/chat.go - Cross-platform Claude Desktop config path detection (macOS, Windows, Linux)
- Auto-restart Claude Desktop after configuration
Changed
- Install wizard expanded from 4 to 7 tool options
--toolsflag now acceptsclaude-desktop,claude-chat, andcodex--allflag includes all 7 tools- Install/update/uninstall/status flows now include Codex alongside Claude/Cursor/Windsurf/Gemini
- Documented repository merge policy in
CLAUDE.md: use normal merge commits for PRs (no squash), then delete remote feature branches after merge.
Commits
Features
- feat: add Codex integration across installer and CLI (
970d4d5) - feat: add Claude Desktop/Cowork and Claude Chat MCP support (
64eae87)
Documentation
- docs: fix CHANGELOG version links for v0.7.0 (
188ed89) - docs: enforce merge-commit policy (no squash) (
b88516a)
Other
- Update CHANGELOG for version 0.7.0 release (
2bec2f2)
Full changelog: v0.7.0...v0.7.1
Contextify v0.7.0
Contextify v0.7.0
All-in-one Docker image — everything included, zero setup.
Quick Start (CLI)
curl -fsSL https://raw.githubusercontent.com/atakanatali/contextify/main/scripts/install-cli.sh | sh
contextify installQuick Start (Docker)
docker run -d --name contextify -p 8420:8420 \
-v contextify-data:/var/lib/postgresql/data \
ghcr.io/atakanatali/contextify:0.7.0What's Changed
Added
- Telemetry foundation for recall/store funnel tracking:
- Migration
004_telemetry.sqlwithmemory_telemetry_eventstable - Indexes for
event_type + created_at,created_at,project_id,agent_source, andsession_id - Event types:
recall_attempt,recall_hit,store_opportunity,store_action
- Migration
- Non-blocking telemetry write path in memory service:
- Asynchronous event emission with timeout-based background writes
- Telemetry failures are logged and do not break API/MCP request flow
- Request/session attribution in both API and MCP paths:
request_idand optionalsession_idpropagation via middleware/handlers- Telemetry enrichment with
agent_sourceandproject_idwhen present
- Funnel analytics backend and dashboard:
- New endpoint
GET /api/v1/analytics/funnel - Supports day-window or explicit
from/todate range withagent_sourceandproject_idfilters - Returns totals, timeline, and by-agent/by-project breakdowns
- Analytics page now includes recall/store funnel cards, trend chart, and breakdown lists
- New endpoint
- Session readiness enforcement across Claude/Cursor/Windsurf integrations:
- SessionStart + PostToolUse hooks enforce successful
get_contextbefore normal flow - Updated tool prompts/rules to require recall-first and context-first behavior
- SessionStart + PostToolUse hooks enforce successful
- High-confidence auto-store orchestration in PostToolUse hook:
- Auto-store on high-confidence commit/fix signals
- Falls back to pending/manual store flow when auto-store fails or confidence is low
- Search v2 retrieval pipeline:
- Two-stage recall with lexical/vector-aware candidate prefilter
- Vector rerank with keyword weighting and lightweight relevance boosts
- Broad-query handling for empty/
*queries to avoid pointless tsquery scoring
- Bounded in-memory search cache:
- TTL-based cached recall results with configurable max entries
- Cache invalidation on memory mutations to prevent stale results
- New config keys:
search.cache_enabled,search.cache_ttl,search.cache_max_entries
- Recall benchmark & SLO reporting:
- New
tests/e2e/recall_benchmark_test.go(e2ebuild tag) - JSON benchmark report output via
RECALL_BENCH_REPORT_PATH make bench-recalltarget- Backend CI now runs recall benchmark and uploads
recall-benchmark-reportartifact
- New
- Local tooling ignore patterns:
.gocache/.claude/worktrees/
Changed
- Backend CI health-check workflow now ensures the embedding model is available before running the recall benchmark.
- README expanded with benchmark/SLO execution and threshold/report environment variable guidance.
Fixed
- Client/CLI API contract alignment:
storeclient now parsesStoreResultresponse shapepromoteclient now parses status response payload- CLI
promotehandles missing memory title fallback gracefully
- Smart-store auto-merge now correctly updates
merged_fromlineage. - Consolidation E2E tests are now isolated behind the
e2ebuild tag so defaultgo test ./...runs remain stable.
Commits
Documentation
- docs: update unreleased changelog entries (#37) (
4beb04d)
Other
- CFY-108: add recall benchmark reporting and CI artifact (#36) (
f0b4d5e) - Add bounded search cache with TTL and mutation invalidation (#35) (
80cd7c0) - Implement two-stage search with lexical prefilter and vector rerank (#34) (
07f5414) - Add high-confidence auto-store orchestration in post-tool-use hook (#33) (
2171a64) - Enforce session-start context readiness across tool integrations (#32) (
5537f7c) - Add funnel analytics endpoint and dashboard integration (#31) (
bccbbef) - Add telemetry event pipeline and request/session attribution (#30) (
5cc1273) - Fix API client contracts and isolate e2e tests (
cbe2238) - Update CHANGELOG for version 0.6.1 release (
acddec0)
Full changelog: v0.6.1...v0.7.0
Contextify v0.6.1
Contextify v0.6.1
All-in-one Docker image — everything included, zero setup.
Quick Start (CLI)
curl -fsSL https://raw.githubusercontent.com/atakanatali/contextify/main/scripts/install-cli.sh | sh
contextify installQuick Start (Docker)
docker run -d --name contextify -p 8420:8420 \
-v contextify-data:/var/lib/postgresql/data \
ghcr.io/atakanatali/contextify:0.6.1What's Changed
Added
Memory Consolidation & Deduplication
- Smart Store —
store_memorynow auto-detects duplicates on write- Similarity >= 0.92: automatic merge (configurable)
- Similarity 0.75-0.92: creates a pending suggestion for review
Store()returnsStoreResultwithaction(stored/merged) andsuggestionsfields
- Merge strategies:
latest_wins,append,smart_merge(default) - Background dedup scanner — periodic scan of all memories for duplicates
- Consolidation suggestions — pending merge suggestions reviewable via Web UI or API
- Consolidation audit log — every merge operation is recorded with before/after content
- SUPERSEDES relationship — surviving memory links to absorbed memory
- 3 new MCP tools:
consolidate_memories,find_similar,suggest_consolidations - 7 new REST endpoints: merge, duplicates, batch consolidate, suggestions CRUD, consolidation log
- Database migration
002_consolidation.sql:consolidation_logtable,consolidation_suggestionstable,version/merged_from/replaced_bycolumns on memories - Web UI Consolidation page for reviewing and acting on suggestions
Project ID Normalization
- VCS-agnostic canonical project names — worktrees, different machines, renames all resolve to the same identity
- File-based VCS detection —
.git/configand.hg/hgrcparsed directly (no git/hg binary needed, works in Docker sandbox) - Normalization priority:
.contextify.ymlname > VCS remote URL > worktree suffix strip > raw path - Hybrid architecture: client-side hook + server-side safety net + background worker
- Server normalizes
project_idon both reads and writes for consistency - Background
ProjectNormalizerJob(hourly) re-normalizes legacy project_ids - Admin endpoint
POST /admin/normalize-projectsfor manual trigger - Database migration
003_normalize_project_ids.sql: strips worktree suffixes from existing data NormalizeProjectIDconfig toggle (default: true, env:NORMALIZE_PROJECT_ID)- Session-start hook rewritten with full VCS-agnostic normalization in bash
ProjectNormalizerwithsync.Mapcache for zero-cost repeated lookups- Post-tool-use hook state machine — enforces
store_memoryafter everygit commitwith violation nagging contextify updateandinstall.sh --updatenow force-overwrite tool configs (hooks, prompts, rules) with latest versionsUpdateConfiguredTools()function for centralized tool config updates- CLI self-update —
contextify updatenow updates both the Docker server and the CLI binary from GitHub Releases- Downloads platform-specific binary (darwin/linux, amd64/arm64), verifies it, and replaces the current binary
- Falls back to
sudoif direct replacement fails (e.g.,/usr/local/bin) --skip-cliflag to update server only
- Update confirmation prompt —
contextify updatewarns that active MCP sessions will disconnect and asks for confirmation (y/N)-y/--yesflag to skip the prompt (for scripts/CI)
Changed
- Post-tool-use hook output upgraded from soft reminder to aggressive required/violation messages
Commits
Features
- feat: CLI self-update and MCP session warning in contextify update (
15efcf9)
Full changelog: v0.6.0...v0.6.1
Contextify v0.6.0
Contextify v0.6.0
All-in-one Docker image — everything included, zero setup.
Quick Start (CLI)
curl -fsSL https://raw.githubusercontent.com/atakanatali/contextify/main/scripts/install-cli.sh | sh
contextify installQuick Start (Docker)
docker run -d --name contextify -p 8420:8420 \
-v contextify-data:/var/lib/postgresql/data \
ghcr.io/atakanatali/contextify:0.6.0What's Changed
Added
Memory Consolidation & Deduplication
- Smart Store —
store_memorynow auto-detects duplicates on write- Similarity >= 0.92: automatic merge (configurable)
- Similarity 0.75-0.92: creates a pending suggestion for review
Store()returnsStoreResultwithaction(stored/merged) andsuggestionsfields
- Merge strategies:
latest_wins,append,smart_merge(default) - Background dedup scanner — periodic scan of all memories for duplicates
- Consolidation suggestions — pending merge suggestions reviewable via Web UI or API
- Consolidation audit log — every merge operation is recorded with before/after content
- SUPERSEDES relationship — surviving memory links to absorbed memory
- 3 new MCP tools:
consolidate_memories,find_similar,suggest_consolidations - 7 new REST endpoints: merge, duplicates, batch consolidate, suggestions CRUD, consolidation log
- Database migration
002_consolidation.sql:consolidation_logtable,consolidation_suggestionstable,version/merged_from/replaced_bycolumns on memories - Web UI Consolidation page for reviewing and acting on suggestions
Project ID Normalization
- VCS-agnostic canonical project names — worktrees, different machines, renames all resolve to the same identity
- File-based VCS detection —
.git/configand.hg/hgrcparsed directly (no git/hg binary needed, works in Docker sandbox) - Normalization priority:
.contextify.ymlname > VCS remote URL > worktree suffix strip > raw path - Hybrid architecture: client-side hook + server-side safety net + background worker
- Server normalizes
project_idon both reads and writes for consistency - Background
ProjectNormalizerJob(hourly) re-normalizes legacy project_ids - Admin endpoint
POST /admin/normalize-projectsfor manual trigger - Database migration
003_normalize_project_ids.sql: strips worktree suffixes from existing data NormalizeProjectIDconfig toggle (default: true, env:NORMALIZE_PROJECT_ID)- Session-start hook rewritten with full VCS-agnostic normalization in bash
ProjectNormalizerwithsync.Mapcache for zero-cost repeated lookups- Post-tool-use hook state machine — enforces
store_memoryafter everygit commitwith violation nagging contextify updateandinstall.sh --updatenow force-overwrite tool configs (hooks, prompts, rules) with latest versionsUpdateConfiguredTools()function for centralized tool config updates
Changed
- Post-tool-use hook output upgraded from soft reminder to aggressive required/violation messages
Commits
Features
- feat: memory consolidation, smart store dedup, and VCS-agnostic project ID normalization (
eb46016) - feat: enforce store_memory after git commits + update tool configs on upgrade (
a051804)
Documentation
- docs: update CHANGELOG with store_memory enforcement and update configs (
10c5a14)
Other
- chore: prepare CHANGELOG for v0.5.3 release (
21d82d9)
Full changelog: v0.5.3...v0.6.0
Contextify v0.5.3
Contextify v0.5.3
All-in-one Docker image — everything included, zero setup.
Quick Start (CLI)
curl -fsSL https://raw.githubusercontent.com/atakanatali/contextify/main/scripts/install-cli.sh | sh
contextify installQuick Start (Docker)
docker run -d --name contextify -p 8420:8420 \
-v contextify-data:/var/lib/postgresql/data \
ghcr.io/atakanatali/contextify:0.5.3What's Changed
Added
- Interactive setup wizard —
install.shnow asks which AI tools to configure - Windsurf support (MCP via
~/.codeium/windsurf/mcp_config.json) --tools,--all,--status,--helpflags for non-interactive usage- Re-runnability — wizard skips already-completed steps on subsequent runs
- Per-tool status indicators (
✓ configured,◐ partial,○ not configured) - Auto-restart for Cursor and Windsurf after configuration to load MCP servers
prompts/windsurf.mdtemplate- Go CLI tool (
contextify) with Cobra framework for managing Contextify from the terminal - CLI management commands:
install,uninstall,start,stop,restart,update,status,logs,version - CLI memory commands:
store,recall,search,get,delete,promote,stats,context - HTTP client for REST API (
internal/client/) — standalone, no server-side dependencies - Docker container manager (
internal/docker/) viaos/execshell-out - AI tool configuration in pure Go (
internal/toolconfig/) — replaces jq/python3 dependency Makefilewithbuild-cli,build-server,build-all,release-clitargetsscripts/install-cli.sh— one-line CLI installer viacurl | sh- CLI binary cross-compilation in release workflow (darwin/linux, amd64/arm64)
- Automatic CHANGELOG.md updates on release (
scripts/update-changelog.sh) - Auto-generated release notes from CHANGELOG + git log (
scripts/release-notes.sh) - CLI build verification step in backend CI
- Expanded PostToolUse hooks: recall triggers on Grep, Glob, WebSearch, WebFetch, Task, Read; store triggers on git commit, push, PR, errors
- Aggressive mandatory protocol prompts for Cursor, Windsurf, and Gemini rules files
- Claude Code CLAUDE.md prompt block upgraded to mandatory protocol (matching hook enforcement level)
Changed
install.shno longer auto-detects and silently configures all tools- Gemini configuration is now an explicit selection (not always copied)
- Release workflow generates notes from CHANGELOG.md instead of hardcoded body
- CHANGELOG.md updates are now developer-driven (via CLAUDE.md rule) instead of automated in CI
Removed
- Auto-detect behavior (
detect_tools()) replaced by interactive selection
Commits
Features
- feat: upgrade Claude Code CLAUDE.md prompt to mandatory protocol (
863d74a) - feat: enforce memory protocol in Cursor, Windsurf, and Gemini prompts (
ba5dc64) - feat: expand hook triggers — recall on search/web, store on git/errors (
50fddbe) - feat: enforce memory protocol via aggressive hook messaging (
92406d4) - feat: enforce memory protocol via aggressive hook messaging (
abcd742) - feat: Go CLI tool replacing install.sh with full management and memory commands (
b77c741)
Fixes
- fix: restore recall triggers lost during conflict resolution (
a6d6c44) - fix: add git config for tag creation in release workflow (
c8728e8) - fix: add git config for tag creation in release workflow (
4dc693c) - fix: remove CHANGELOG PR step from release workflow (
90d4742) - fix: remove CHANGELOG PR step from release workflow (
3c773e5) - fix: decouple CHANGELOG PR from release flow to avoid blocking on checks (
667526a) - fix: use PR-based CHANGELOG commit to respect branch protection (
3549459) - fix: write MCP config to ~/.claude.json with correct transport type (
3cd6f71)
CI/CD
- ci: open CHANGELOG PR for manual merge after release (
1702a8b)
Other
- Enhance README with image and core architecture section (
ed95a3e)
Full changelog: v0.3.0...v0.5.3
Contextify v0.5.0
Contextify v0.5.0
All-in-one Docker image — everything included, zero setup.
Quick Start (CLI)
curl -fsSL https://raw.githubusercontent.com/atakanatali/contextify/main/scripts/install-cli.sh | sh
contextify installQuick Start (Docker)
docker run -d --name contextify -p 8420:8420 \
-v contextify-data:/var/lib/postgresql/data \
ghcr.io/atakanatali/contextify:0.5.0Commits
Features
- feat: Go CLI tool replacing install.sh with full management and memory commands (
b77c741)
Fixes
- fix: remove CHANGELOG PR step from release workflow (
3c773e5) - fix: decouple CHANGELOG PR from release flow to avoid blocking on checks (
667526a) - fix: use PR-based CHANGELOG commit to respect branch protection (
3549459) - fix: write MCP config to ~/.claude.json with correct transport type (
3cd6f71)
CI/CD
- ci: open CHANGELOG PR for manual merge after release (
1702a8b)
Other
- Enhance README with image and core architecture section (
ed95a3e)
Full changelog: v0.3.0...v0.5.0
Contextify v0.3.0
Contextify v0.3.0
All-in-one Docker image — everything included, zero setup.
Quick Start
docker run -d --name contextify -p 8420:8420 \
-v contextify-data:/var/lib/postgresql/data \
ghcr.io/atakanatali/contextify:0.3.0Or with Docker Compose:
curl -fsSL https://github.com/atakanatali/contextify/releases/latest/download/docker-compose.prod.yml -o docker-compose.yml
docker compose upWhat's Inside
- PostgreSQL 16 + pgvector — HNSW index, 768d embeddings
- Ollama + nomic-embed-text — pre-pulled, zero first-run downloads
- Contextify Server — MCP + REST API + Web UI
- Hybrid search — 0.7 vector + 0.3 keyword scoring
- TTL lifecycle — auto-promotion, access-based extension
See ARCHITECTURE.md for technical details.
Contextify v0.2.0
Contextify v0.2.0
All-in-one Docker image — everything included, zero setup.
Quick Start
docker run -d --name contextify -p 8420:8420 \
-v contextify-data:/var/lib/postgresql/data \
ghcr.io/atakanatali/contextify:0.2.0Or with Docker Compose:
curl -fsSL https://github.com/atakanatali/contextify/releases/latest/download/docker-compose.prod.yml -o docker-compose.yml
docker compose upWhat's Inside
- PostgreSQL 16 + pgvector — HNSW index, 768d embeddings
- Ollama + nomic-embed-text — pre-pulled, zero first-run downloads
- Contextify Server — MCP + REST API + Web UI
- Hybrid search — 0.7 vector + 0.3 keyword scoring
- TTL lifecycle — auto-promotion, access-based extension
See ARCHITECTURE.md for technical details.
Contextify v0.1.0
Contextify v0.1.0
Docker Image
docker pull ghcr.io/atakanatali/contextify:0.1.0Quick Start
curl -fsSL https://github.com/atakanatali/contextify/releases/latest/download/docker-compose.prod.yml -o docker-compose.yml
docker compose upWhat's Included
- Contextify Server (Go) — MCP + REST API + Web UI
- PostgreSQL 16 + pgvector (HNSW index, 768d embeddings)
- Ollama + nomic-embed-text (local embeddings)
- Hybrid search (0.7 vector + 0.3 keyword)
- TTL-based memory lifecycle with auto-promotion
See ARCHITECTURE.md for technical details.