JSON-Rohbericht maschinenlesbar
{
"data": {
"repo": {
"topics": [
"ai-agents",
"claude-code",
"coding-agents",
"llm",
"mcp",
"memory",
"opencode",
"persistent-memory",
"sqlite"
],
"is_fork": false,
"size_kb": 19134,
"has_wiki": true,
"homepage": null,
"languages": {
"Go": 1652864,
"HTML": 65837,
"Shell": 9529,
"Python": 44441,
"JavaScript": 105212,
"PowerShell": 3747
},
"pushed_at": "2026-07-31T08:24:06Z",
"created_at": "2026-03-19T14:21:24Z",
"owner_type": "User",
"updated_at": "2026-07-31T08:26:34Z",
"description": "Persistent memory for AI coding agents — your agent stops forgetting between sessions. One Go binary, one SQLite file.",
"is_archived": false,
"is_disabled": false,
"license_spdx": null,
"default_branch": "main",
"license_spdx_raw": "NOASSERTION",
"primary_language": "Go",
"significant_languages": [
"Go"
]
},
"owner": {
"blog": "joeldev.es",
"name": "Christopher Joel Zambrano Marcillo",
"type": "User",
"login": "joeldevz",
"company": "@Clasing",
"location": null,
"followers": 3,
"avatar_url": "https://avatars.githubusercontent.com/u/36200065?v=4",
"created_at": "2018-02-06T15:30:34Z",
"is_verified": null,
"public_repos": 6,
"account_age_days": 3096
},
"license": {
"state": "custom",
"spdx_id": null,
"raw_spdx": "NOASSERTION",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.5.6",
"kind": "patch",
"published_at": "2026-06-19T15:07:37Z"
},
{
"tag": "v0.5.5",
"kind": "patch",
"published_at": "2026-06-09T14:27:55Z"
},
{
"tag": "v0.5.4",
"kind": "patch",
"published_at": "2026-03-30T16:37:23Z"
},
{
"tag": "v0.5.3",
"kind": "patch",
"published_at": "2026-03-30T09:03:26Z"
},
{
"tag": "v0.5.2",
"kind": "patch",
"published_at": "2026-03-29T16:15:53Z"
},
{
"tag": "v0.5.1",
"kind": "patch",
"published_at": "2026-03-29T11:35:46Z"
},
{
"tag": "v0.5.0",
"kind": "minor",
"published_at": "2026-03-29T11:32:31Z"
},
{
"tag": "v0.2.0",
"kind": "minor",
"published_at": "2026-03-28T23:27:38Z"
},
{
"tag": "v0.1.19",
"kind": "patch",
"published_at": "2026-03-28T22:41:02Z"
},
{
"tag": "v0.1.18",
"kind": "patch",
"published_at": "2026-03-28T21:37:15Z"
},
{
"tag": "v0.1.16",
"kind": "patch",
"published_at": "2026-03-28T12:38:29Z"
},
{
"tag": "v0.1.15",
"kind": "patch",
"published_at": "2026-03-28T10:54:16Z"
},
{
"tag": "v0.1.14",
"kind": "patch",
"published_at": "2026-03-28T10:36:35Z"
},
{
"tag": "v0.1.13",
"kind": "patch",
"published_at": "2026-03-27T14:38:49Z"
},
{
"tag": "v0.1.12",
"kind": "patch",
"published_at": "2026-03-26T09:08:57Z"
},
{
"tag": "v0.1.11",
"kind": "patch",
"published_at": "2026-03-26T08:37:46Z"
},
{
"tag": "v0.1.10",
"kind": "patch",
"published_at": "2026-03-25T13:02:04Z"
},
{
"tag": "v0.1.9",
"kind": "patch",
"published_at": "2026-03-25T11:47:37Z"
},
{
"tag": "v0.1.8",
"kind": "patch",
"published_at": "2026-03-25T11:44:34Z"
},
{
"tag": "v0.1.7",
"kind": "patch",
"published_at": "2026-03-25T10:50:09Z"
},
{
"tag": "v0.1.6",
"kind": "patch",
"published_at": "2026-03-25T10:44:16Z"
},
{
"tag": "v0.1.5",
"kind": "patch",
"published_at": "2026-03-24T22:11:25Z"
}
],
"recent_commits": [
{
"oid": "5251dead3bb3e8235161237682e03e5f64d31583",
"body": null,
"is_bot": false,
"headline": "docs(plan): add entities feature spec (issue #10)",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-07-31T08:24:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4406f3d852a15e586f6615aca622460c38cf6861",
"body": null,
"is_bot": false,
"headline": "chore(plan): record recall fixes plan and archive portfolio plan",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-07-31T08:22:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6cf091391ba93963888ddb2bf6157e7335063c86",
"body": "Nine code-verified fixes to the recall engine:\n- fix BM25 weights shifted by UNINDEXED id column (title>content>tags)\n- fix expired/cross-namespace leak in semantic and fact candidate paths\n- decouple access bumps from Search via async coalesced queue\n- remove last_accessed from recency scoring (fee\n[…]\n> 0.2)\n- cross-signal boost by rank membership instead of normalized score\n- standardize fts5 build tag across CI, release and docs\n\nIncludes 17 new tests and CLI engine close-out for access flushing.",
"is_bot": false,
"headline": "feat(recall): fix search correctness and ranking (tier 0+1)",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-07-31T08:22:11Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "04d61551a0bf538eb254e436e5e711854bbec3c7",
"body": "chore: remove unused code, dead files, and ~750MB of disk artifacts",
"is_bot": false,
"headline": "Merge pull request #8 from joeldevz/chore/cleanup-unused",
"author_name": "Christopher Joel Zambrano Marcillo",
"author_login": "joeldevz",
"committed_at": "2026-06-19T15:54:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "96039f38305bf70b494e28974651858effa4b817",
"body": null,
"is_bot": false,
"headline": "chore: add skynex project config for agent sessions",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-06-19T15:46:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "91d396456ee81825994568291d430dc2cbb64f56",
"body": "… config",
"is_bot": false,
"headline": "docs: sync CHANGELOG to v0.5.6 and use portable neurox path in gemini…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-06-19T15:44:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "77ac7649c979fab4297bd8f1d4db73b532247769",
"body": null,
"is_bot": false,
"headline": "refactor: remove unused retry helpers and post-save hook builder",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-06-19T15:44:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "68c9c7772dea7a06168aff1fcdf716e92d0b2304",
"body": "…used helpers)",
"is_bot": false,
"headline": "refactor: remove dead code (async write gate, benchmark generator, un…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-06-19T15:33:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c7dd761b17eafb37441f43fd4e1f02be89216f7b",
"body": null,
"is_bot": false,
"headline": "chore: ignore binaries, node_modules, benchmark data and caches",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-06-19T15:29:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fbc09970c7968b00cf026de390dd2d5b7b32bfea",
"body": null,
"is_bot": false,
"headline": "chore: bump version to v0.5.6",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-06-19T15:07:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e85a11fc6f38db28d9240e427c234b13b4630213",
"body": "…eated_at in recall API\n\n- Temporal reasoning: 0/13 → 9-10/13 (69-77%), overall 60% → 64-70%\n- Durable ingest gate, embedding wait, per-question error isolation\n- opencode CLI provider for judge (calibrated 98% vs API judge)\n- detectTemporalIntent v2, date regex fix, formatter date priority\n- expose created_at in search API + MCP response (additive)\n- calibrate-judge.js harness, bench-raw agent, --answer-provider flag",
"is_bot": false,
"headline": "merge(bench/longmemeval-hardening): memorybench hardening + expose cr…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-06-19T15:05:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "918860b1c7a425da04ba0944f3446cc2b9fa543d",
"body": "…al fixes\n\n- llm-opencode.js: opencode CLI provider for judge and answer-gen\n- .opencode/agent/bench-raw.md: raw agent (empty body, temp 0, tools denied)\n- scripts/calibrate-judge.js: judge calibration harness (opencode vs API, 98% agreement)\n- runner.js: durable ingest gate (polls status.total), wa\n[…]\necall, 7.1% false-fire on full 500q)\n- index.js: --answer-provider flag, --judge-provider opencode, fail-fast API key\n- opencode.json: local config to suppress global instruction loading (bench scope)",
"is_bot": false,
"headline": "feat(memorybench): add opencode provider, durable ingest gate, tempor…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-06-12T17:27:32Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e7da4b4492099374daaade659875bff54e7125a5",
"body": "- Add getStatus() to provider (GET /api/v1/status, null on error, never throws)\n- Rewrite waitForEmbeddings with 3-tier strategy:\n - Primary: poll embeddings_pending count to 0 (monotonic, reliable)\n - Stall detection: if pending stalls 30s -> legacy fallback\n - Scaled timeout: max(timeout, numOb\n[…]\n& pending=0 (semantic disabled) -> warn + continue\n- Legacy semantic_score fallback preserved when status endpoint unavailable\n\nFixes full-run timeouts caused by 60s detection window after bulk ingest",
"is_bot": false,
"headline": "fix(memorybench): poll embeddings_pending for reliable embedding wait",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-06-11T05:20:28Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3d6ae3b8b6108420346582d4122f73366135071a",
"body": "- Root cause analysis: real session dates never reached the model\n- 6 implemented changes (2 bugfixes + 4 temporal features)\n- Validation evidence: PASS (real 2022/2023 dates reach LLM context)\n- Remaining blocker: waitForEmbeddings reliability\n- Competitive math: beat Zep needs +2 temporal, near Supermemory needs ~11/13\n- Execution roadmap + retrieval-miss vs reasoning-miss analysis",
"is_bot": false,
"headline": "docs(memorybench): add consolidated temporal solution document",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-06-11T04:57:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "543c3c6ace8b91202de330a5a3ccb20ebf036de8",
"body": "Root cause fixed: real session dates (2023) never reached the model.\n- BUGFIX: date tag regex now accepts slash format (2023/05/20) not just hyphen\n- BUGFIX: LLM formatter prefers real session date tag over created_at (ingest date)\n- Thread question_date into answer prompt as reference 'now'\n- Add d\n[…]\nd timeline, compute durations, cite dates\n- All behind --no-temporal-branch flag (bugfixes always on, features toggleable)\n\nPlan: benchmarks/memorybench/TEMPORAL_REASONING_PLAN.md (v2, evidence-based)",
"is_bot": false,
"headline": "feat(memorybench): temporal reasoning v2 - real session dates",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-06-10T14:58:10Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "da5bafc2361b209245935cb19b5b7f006198ac5e",
"body": "- Add --ingest-delay-ms <ms> flag (default 50ms) to throttle ingest POSTs\n and prevent server save queue saturation at scale\n- Pass q.haystack_dates from runner to provider.ingest()\n- Tag each ingested session with date-YYYY-MM-DD when date available\n- LLM context formatter reads created_at field +\n[…]\ntag fallback\n- Shows Date field in llm format output for recency reasoning\n\nResult: clean ingestion of 2386 obs, all 50 embeddings detected,\n multi-session improved 8/13->9/13 with date context",
"is_bot": false,
"headline": "feat(memorybench): add ingest throttling + haystack dates",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-06-10T14:24:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2974fa911110fe7a397b1922b6d0658eee92e1ef",
"body": "- Add CreatedAt string (RFC3339) to recall.Result struct\n- Wire created_at through API HTTP response (omitempty)\n- Wire created_at through MCP recall response item\n- No schema change required; field already in candidate struct\n\nfeat(memorybench): pass haystack_dates at ingest + show date in llm cont\n[…]\nLM context formatter reads created_at field, falls back to date tag\n- Shows Date field in llm format output for knowledge-update recency reasoning\n- raw format unchanged, graceful when dates undefined",
"is_bot": false,
"headline": "feat(recall): expose created_at in search API + MCP response",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-06-10T12:32:20Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c855b55a2603b5d50b6676f7e791c4801bcb020c",
"body": "- Add --context-format raw|llm flag (default: raw, backward compat)\n- LLM format provides rank/title/kind/observation_type/confidence/tags/staleness\n- No raw score or layer exposed; uses only real API response fields\n- Set answer generation temperature to 0 for deterministic comparison\n- Record cont\n[…]\ns\n\nResult: non-temporal target categories improved 67.7% -> 77.4%\n overall 56% -> 60% vs RAW baseline (claude-strat50)\n knowledge-update 62.5% -> 87.5%, single-session-pref 66.7% -> 100%",
"is_bot": false,
"headline": "feat(memorybench): add --context-format llm/raw experiment",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-06-10T12:24:51Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "75694ae5c21186c732d2fea6cafbea8a777de503",
"body": null,
"is_bot": false,
"headline": "feat(benchmarks): add memory benchmark portfolio",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-06-10T09:18:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f361c6129de34ab89a955f0a89a2cece545b4870",
"body": "Covers the improvements landed since v0.5.4:\n- feat(recall): union merge + RRF scoring (PR #6)\n- fix(recall): normalize RRF to [0,1], cap semantic-only, min sim 0.4\n- fix(recall): stopword FTS filtering — stop common words polluting dual-channel tier (PR #7)\n- fix(cli): correct recall flag parsing — flags now work before and after the query",
"is_bot": false,
"headline": "chore: bump version to v0.5.5",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-06-09T14:27:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "898ea643c1ead4a611b071cafef4b735631cc708",
"body": "…r query\n\nPR #7's interspersed-flag change scanned for the first non-dash arg as the\nquery, but a flag's value (the \"3\" in --limit 3) is also non-dash, so:\n recall --limit 3 \"Docker\" → query=\"3\", --limit got \"Docker\" → parse error\n recall --ns X --limit 3 \"q\" → query=\"X\", namespace=\"--limit\" → 0 \n[…]\n consumed by --limit\nand never mistaken for the query.\n\n6 table tests in main_test.go cover valued flags before/after the positional,\nbool flags, multi-word queries, and empty input. Full suite green.",
"is_bot": false,
"headline": "fix(cli): correct recall flag parsing — stop mistaking flag values fo…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-06-09T14:17:07Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d62177d2170c32fe72b18f47c2d7c9eb9d6a91ad",
"body": "fix(recall): stopword FTS filtering + CLI flag parsing",
"is_bot": false,
"headline": "Merge PR #7: stopword FTS filtering + CLI flag parsing",
"author_name": "Christopher Joel Zambrano Marcillo",
"author_login": "joeldevz",
"committed_at": "2026-06-09T13:59:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3be250f81fbbe3b63151d34280cffc828a6fad8f",
"body": "Two ranking bugs surfaced during live testing:\n\n1. FTS stopword pollution: buildFTSMatchQuery kept short tokens as exact\n matches, so a stopword like \"de\" (es) or \"the\" (en) matched irrelevant\n docs and promoted them into the dual-channel tier (FTS+semantic), where\n the 2x RRF + 1.2x cross-sig\n[…]\nved, knowledge-update\n regression stays fixed (recall_all@10 ~1.0).\n- Live recall: queries with a lexical hint now rank the correct doc #1; the\n stopword no longer manufactures spurious FTS matches.",
"is_bot": false,
"headline": "fix(recall): stopword filtering in FTS + CLI interspersed flag parsing",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-06-09T13:39:09Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1a4a0b26f38d1a7c63dc0cbdf99c6bd8856a3a09",
"body": "feat(recall): union merge + RRF scoring replacing max() intersection",
"is_bot": false,
"headline": "Merge PR #6: recall union merge + RRF normalized scoring",
"author_name": "Christopher Joel Zambrano Marcillo",
"author_login": "joeldevz",
"committed_at": "2026-06-09T12:12:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ea2a64980f215a0efa2c04299f9f4406f961a37e",
"body": "The initial RRF change shipped a scaling bug: rrfScore returned raw values\n(~0.016) while recency/importance are [0,1]-scaled, so the relevance term\nwas ~100x too small and recency silently dominated ranking. This both\nneutralized the hybrid fusion and caused a recall_all regression on\nknowledge-upd\n[…]\n NDCG +53%\n- avg NDCG@10 +45% over FTS-only; recall@10 stable\nThe semantic signal's value is in ranking quality (NDCG), not binary recall@10.\n\n48 recall tests pass, full suite green, zero regressions.",
"is_bot": false,
"headline": "fix(recall): normalize RRF to [0,1], cap semantic-only, raise sim floor",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-06-09T08:29:58Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d73acab063665933e07b6a3c2e8fbc6f9828c9e5",
"body": "Fix limit-saturation bug in the hybrid recall merge and replace the\nmax(fts, semantic) relevance fusion with Reciprocal Rank Fusion (RRF).\n\nRoot cause: the merge was FTS-anchored with conditional semantic-only\nfill — when FTS filled the limit, strong semantic-only matches were\nsilently dropped (the \n[…]\n)\n- plan/recall-merge-fix: DDD spec-driven plan (9 docs)\n\nTests: 72 recall+config tests pass, zero regressions. New tests cover\nunion limit-saturation, RRF scoring, rank derivation, config validation.",
"is_bot": false,
"headline": "feat(recall): union merge + RRF scoring replacing max() intersection",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-06-04T05:55:52Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "22e314db337487031e77451e9673496529d73c8d",
"body": "…face contracts",
"is_bot": false,
"headline": "docs: add plan/ with product vision, technical architecture and inter…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-04-03T12:48:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e7733c1d59f923423b0006f77890964714118b8e",
"body": "session_end was calling Ollama synchronously to extract observations from\nthe session summary, blocking the MCP response for 30-120s and causing\nclient timeouts (error -32001). Move extraction to a background goroutine\nso the caller gets an immediate response. Add sync.WaitGroup for\ndeterministic test assertions.",
"is_bot": false,
"headline": "fix(session): run LLM extraction in background to prevent MCP timeout",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-30T16:36:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "67d1150676f725185419bf84b33e3d77acb1ae09",
"body": null,
"is_bot": false,
"headline": "chore(release): bump version to v0.5.3",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-30T09:02:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "388870c23fb1ef8e62508ce875fc5f38adfdb797",
"body": "The archive contained neurox_windows_amd64.exe but install.ps1\nexpected neurox.exe, causing the installer to fail with 'neurox.exe\nnot found in archive'.\n\n- Build outputs dist/neurox.exe directly (OS/arch is already in the zip name)\n- install.ps1 gets a .exe glob fallback for resilience against future drift",
"is_bot": false,
"headline": "fix(installer): use neurox.exe as binary name inside windows zip",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-30T09:02:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "05375dec9bd19dc6e664c7df62e5377b45c5af53",
"body": "Add a 'provider' string parameter to embed.AutoDetect and llm.AutoDetect.\nWhen set to 'none'/'disabled', skips connection attempts immediately.\nWhen set to 'ollama' or 'remote', uses only that backend without fallback.\nDefault empty string preserves existing auto-detect behavior.\n\nAlso guard llm.IsAvailable against nil providers and log a warning in\nthe contradiction detector when LLM is unavailable.",
"is_bot": false,
"headline": "feat(embed,llm): add explicit provider selection to AutoDetect",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-29T16:14:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ad67dedc7c26c663e2b3cdc072c45bf34ccddeef",
"body": null,
"is_bot": false,
"headline": "chore(release): bump version to v0.5.2",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-29T16:09:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3d447c0967278c0418bb0683d4e01711f2b69c43",
"body": "Expand the behavioral protocol injected into CLAUDE.md, AGENTS.md, and\nGEMINI.md from 44 to 160 lines. The new version is structured around\n7 behavior-first sections: mindset quote, mandatory session loop, three\nreflexes (preference/decision/bugfix+pattern), when to search memory,\ndeep retrieval ste\n[…]\n\nadd update_available field guidance to status and health_check entries.\n\nA single protocol.md now drives proactive memory behavior across\nClaude Code, OpenCode, and Gemini/Antigravity simultaneously.",
"is_bot": false,
"headline": "docs(installer): enrich protocol and skill for all agent systems",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-29T15:42:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "43d43b781335cbe5682b9428b59704001bfcc94a",
"body": "…available\n\nAdd a 24h-cached update check that surfaces upgrade notices on two surfaces:\n- MCP tools: status() and health_check() include update_available field (omitempty)\n- HTTP server: neurox serve logs one notice to stderr at startup\n\nNew internal/updatecheck package wraps installer.CheckLatest \n[…]\nig/neurox/update-check.json) to avoid hitting the GitHub\nAPI more than once per 24h. Cache writes are atomic (tmp file + rename).\n\nMCP stdio is never touched — the notice travels only as a JSON field.",
"is_bot": false,
"headline": "feat(updatecheck): notify agents and operators when a new version is …",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-29T12:54:04Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "63211e1f502d4cc0515f5b6b62bd9a376dd7f9a1",
"body": "…arity test\n\nSaveQueue worker goroutine wrote hookCalled via PostSaveHook closure while\nthe test goroutine read it without synchronization, triggering the race\ndetector. Use sync/atomic.Bool for safe concurrent access.",
"is_bot": false,
"headline": "fix(integration): replace bool with atomic.Bool to fix data race in p…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-29T11:47:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d9b223540e2897affd8b95eab599d5ad523f5fad",
"body": null,
"is_bot": false,
"headline": "chore(release): bump version to v0.5.1",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-29T11:34:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "068afd25da107613629e63b96ba00e649d1eef4a",
"body": null,
"is_bot": false,
"headline": "fix(build): change version from const to var for ldflags injection",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-29T11:31:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d2932cfcb51d3332a3ef305fbccf89b532aac1b4",
"body": "- Create joeldevz/homebrew-neurox tap with formula for v0.5.0\n- Add brew install as primary install method in README and README.es\n- Add Platform Support table (macOS/Linux/Windows × architectures)\n- Add update-homebrew job to release workflow (auto-updates formula\n with sha256 checksums on each tagged release)",
"is_bot": false,
"headline": "feat(dist): add Homebrew tap and platform support table",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-29T11:18:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ecee1e8d5c096c7a7c042203e996ef2beeab7cf8",
"body": "- Bump version constant in main.go\n- Fix stale pure-Go claims in internal-docs/blog-benchmark.md",
"is_bot": false,
"headline": "chore(release): bump version to v0.5.0",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-29T11:10:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "36e48dd797ee5f5291ef65e8f78e92714fed3870",
"body": "- Update README, README.es, CLAUDE.md, quickstart, and agent setup\n docs to reflect mattn/go-sqlite3 driver (CGO + sqlite_fts5)\n- Add CHANGELOG.md documenting changes since v0.2.0\n- Fix flaky TestBrowseSortParameter with deterministic timestamps\n- Update CI workflow with CGO_ENABLED=1 and -tags sqlite_fts5\n- Restructure release workflow for native CGO compilation per OS",
"is_bot": false,
"headline": "chore: prepare for v1 — update docs, CI, and fix flaky test",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-29T10:58:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "26a570868e5ff31181959c97f925f98c4baf9410",
"body": "Benchmarked three SQLite drivers for FTS5 recall latency:\n- ncruces (wasm): ~890ms/1K obs, ~30s/50K obs\n- modernc (pure Go): ~378ms/1K obs, ~17s/50K obs\n- mattn (CGO): ~1ms/1K obs, ~23ms/50K obs\n\nmattn is ~850x faster than ncruces for FTS5 MATCH+bm25.\nRequires CGO_ENABLED=1 and -tags sqlite_fts5 for build/test.",
"is_bot": false,
"headline": "perf(db): switch back to mattn/go-sqlite3 for native FTS5 performance",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-29T10:50:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c4df6fe181c2b38435c1575ecb5158258fb57f7f",
"body": "… HTTP\n\nExtract shared savepipeline package so all three surfaces produce\nobservations with identical quality, provenance, and post-save hooks.\n\n- Add internal/savepipeline for canonical save flow (provenance,\n retention, session attachment, LLM gate, facts, embeddings)\n- Add CLI session-start and \n[…]\nn\n- Add PostSaveHook on SessionManager for session-derived observations\n- Add 14 parity contract integration tests (all passing)\n- Update README, README.es, docs/reference with accurate surface tables",
"is_bot": false,
"headline": "feat(parity): unify save/recall/session pipeline across CLI, MCP, and…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-29T00:07:29Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3c412b3edc870ac77d484e1975a610ff645cd69e",
"body": null,
"is_bot": false,
"headline": "update md",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-28T23:25:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ababf7dcfaf0c481a2c78b2b1d0ca7974b1a4f98",
"body": null,
"is_bot": false,
"headline": "chore(release): bump version to v0.2.0",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-28T23:23:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "48dfbdc3946ae4e05e5c0a1c90df464ca8657390",
"body": "Convert 5 hot-path functions from per-row UPDATEs to batch WHERE id IN (...)\nwith chunking (500 IDs per chunk), eliminating thousands of unnecessary FTS5\ntrigger fires per consolidation epoch.\n\nFunctions converted:\n- promoteBufferToWorking: collect IDs then single batch UPDATE\n- promoteWorkingToCore\n[…]\nout(8min) safety net\nto TestBenchmarkSuite_Small.\n\nResult: TestBenchmarkSuite_Small goes from 10min timeout (panic) to 18.8s.\nEpoch promoting 8K observations: from timeout to 464ms (>30x improvement).",
"is_bot": false,
"headline": "perf(consolidate): batch UPDATEs to fix 10min integration test timeout",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-28T23:23:43Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "22cbc79b28edb479ad8b742e14d4e667d1102e78",
"body": null,
"is_bot": false,
"headline": "chore(release): bump version to v0.1.19",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-28T22:39:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9a24164eee699643ace8035be5ba02d0b39f88fd",
"body": "Address common misconceptions surfaced by LLM comparison reviews:\n- BSL license: clarify what it allows, list Sentry/CockroachDB/HashiCorp\n as precedent, note Apache 2.0 conversion date\n- Advanced-only framing: show 2-command install, 6 agents, zero-dep base\n- Benchmark evidence: link LongMemEval 98.1% Recall, Brain Benchmark\n- Web dashboard: describe the 4-tab interactive dashboard (Brain,\n Explorer, Graph, Health) that was undocumented in the README\n- Add FAQ nav link to header",
"is_bot": false,
"headline": "docs(readme): add FAQ section and make web dashboard visible",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-28T22:39:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1a373dc47487352ac6470d83d1e6620083ef6c59",
"body": "… CGO)\n\nReplace CGO-dependent mattn/go-sqlite3 with ncruces/go-sqlite3 v0.33.1\n(pure Go, wasm2go). Eliminates the #1 adoption barrier — users no longer\nneed gcc/clang to build from source.\n\n- Rewrite backup.go from SQLiteConn.Backup() to VACUUM INTO\n- Go version bump 1.23 → 1.26 (ncruces requirement)\n- CI: remove gcc install, CGO_ENABLED, -tags fts5\n- Release: collapse 3 jobs/3 runners → 1 job with 5-target matrix\n- Update 11 doc files to remove CGO/fts5 references",
"is_bot": false,
"headline": "feat(db): migrate from mattn/go-sqlite3 to ncruces/go-sqlite3 (remove…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-28T22:39:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "eeaee8ab00f14a04c630128dc609df5d94740635",
"body": null,
"is_bot": false,
"headline": "chore(release): bump version to v0.1.18",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-28T21:35:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a717920964ff7384d3b1720b5b265b82201df389",
"body": "Raise broad namespace recall with conservative backfill, semantic and fact integration, and benchmark wiring so cross-session memory queries return useful results instead of sparse matches.",
"is_bot": false,
"headline": "feat(recall): improve cross-session memory retrieval",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-28T21:33:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b78f0073b863c18ebc55552b6b993e29eb1e1e10",
"body": "Add one-command agent configuration: neurox setup claude-code,\nopencode, cursor, vscode, antigravity, claude-desktop. Merges into\nexisting config files without overwriting. Idempotent on re-run.\n\nImprove install.sh and install.ps1 post-install output to show\nthe exact PATH export command and neurox setup <agent> next steps.\n\nUpdate Quick Start in both READMEs to show 2-command flow:\ncurl install → neurox setup <agent>.",
"is_bot": false,
"headline": "feat(installer): add neurox setup <agent> for zero-friction onboarding",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-28T20:16:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b454a4e0cd99ced075fc6d87a3d208d50726fd41",
"body": "Wire neurox update to existing RunUpdate function.\nFix release binary extraction to match platform-suffixed names.\nAdd neurox backup command using SQLite backup API (CLI + MCP + HTTP).\nAdd session_end warning when LLM is unavailable.\nAdd JSON full-export/import with round-trip integrity.\nOptimize se\n[…]\nfor consistency.\nDocument --host flag and NEUROX_HTTP_HOST in READMEs.\nUpdate CLI help text with --format md|json and backup command.\nClean stale developer artifacts (paths, quickstart, package.json).",
"is_bot": false,
"headline": "feat: launch readiness — hardening, BSL license, CI, and cleanup",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-28T20:01:19Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a701a4678cac050964afb77abaf1cf1c120aa2c8",
"body": "- Add health_check and curate to MCP Tools tables (12→14)\n- Add curate, reembed, export, import, benchmark to CLI reference (11→17)\n- Add health-check, decay-timeline, stats/activity REST endpoints\n- Add 11 missing packages to architecture tree (15→26)\n- Add curator and consolidation config sections\n[…]\n 3 categories\n- Add 3 new concepts to docs/concepts.md (curation, benchmark, activation signals)\n- Sync all changes to README.es.md in natural Spanish\n- Bump version to 0.1.17 in main.go and server.go",
"is_bot": false,
"headline": "docs: sync README, concepts, and version to v0.1.17",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-28T13:13:39Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "48408779b0637d4a4a740f8790300d92c11729df",
"body": "Complete visual overhaul of the dashboard (Brain, Explorer, Graph, Health tabs)\nwith a Fey financial app inspired aesthetic: hero metrics, 2-column layout,\nglass-morphism, activity timeline chart, and refined KPI row.\n\n- Add GET /api/v1/stats/activity endpoint for daily tool call data\n- Add sort=rec\n[…]\nb: hero score card, action pills, wider bars, taller chart\n- Polish: fade transitions, staggered animations, focus-visible, spinners\n- Inter font from Google Fonts CDN, denser layout, 1200px max-width",
"is_bot": false,
"headline": "feat(dashboard): redesign with Fey-inspired dark premium UI",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-28T12:37:05Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "041a2f40649c23c854efe7b7a83db6805b9f657b",
"body": "The SaveGateDecide LLM call (30-100s on Ollama qwen3.5:9b) was running\nsynchronously before the SaveQueue, defeating the async save. Now it runs\nas a PreSaveFilter inside the worker so the MCP response is truly instant.\n\nAlso bumps version to v0.1.15.",
"is_bot": false,
"headline": "perf(save): move LLM quality gate to background worker",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-28T10:52:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b1cf30f9b6fce9e933b534cb23f39e21a7120af1",
"body": "Decouple MCP save handler from SQLite writes by introducing a SaveQueue\nwith a buffered channel and background worker. Saves return immediately\nwith a pre-generated ULID while persistence happens asynchronously.\n\nAlso increases busy_timeout to 15s and adds passive WAL checkpoints\nafter consolidation to reduce write contention.",
"is_bot": false,
"headline": "feat(observation): async save queue to prevent MCP timeouts",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-28T10:35:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "98134e1d79b5d9375b08b64bcdc9ecedf58ecd68",
"body": null,
"is_bot": false,
"headline": "docs: rewrite SKILL.md as agent behavior protocol and update PLAN.md",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-28T10:18:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a35d58c7a494f497b770041c604c461294b6eda3",
"body": "…nd add historical backfill",
"is_bot": false,
"headline": "refactor(consolidate): recalibrate promotion with composite scoring a…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-28T10:18:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "92136dbf5a41bee95f5c87cc7e9a644f94f52dea",
"body": "…ll bump strengthens consolidation",
"is_bot": false,
"headline": "refactor(decay): decay affects activation instead of importance, reca…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-28T10:17:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "67e95e312e2cc810df5d44fd1576e73db8746fa7",
"body": "…h migration and backfill",
"is_bot": false,
"headline": "feat(db): add activation_level and consolidation_strength columns wit…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-28T10:17:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "51df75f17165311ae143d1a668a031479eb62f12",
"body": "…tions to dashboard",
"is_bot": false,
"headline": "feat(graph): increase default node limit to 2000 and add 1000/2000 op…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-28T10:17:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2a1d1a9fd49df36f99d9690fed3777833b1fadc1",
"body": null,
"is_bot": false,
"headline": "feat(consolidate): reconsolidate reflections and add graph links",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-27T18:31:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "82d06189acb9d68cae8c5ea4e84bf2ede33734ae",
"body": "…on checks\n\n- dedupReflections() pass in dedup(): compares layer=2 source='reflection'\n observations within the same namespace, soft-deletes newer duplicates\n- Increase Ollama HTTP timeout 60s→180s to handle slow qwen3.5:9b calls\n- maxContradictionsPerRun=5 prevents 10min+ consolidation cycles when\n many contradiction candidates are queued",
"is_bot": false,
"headline": "fix(consolidate): dedup reflections in Core layer and cap contradicti…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-27T15:38:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2ba2e74dae1fdf6d711babbfad5f80871ca01430",
"body": "…-migration\n\n- Add ForceReflect 2h cooldown to prevent duplicate reflection cycles\n- Raise contradiction threshold to 0.65 to eliminate false positives\n- Migration 007: rescue ~400 incorrectly expired observations\n- Consolidation pipeline: abandon zombie sessions older than 24h\n- Semantic reflection\n[…]\n- ConsolidationConfig: dedup_threshold, contradiction_min/max now\n configurable via config.yaml without recompiling\n- Migration 008: db_settings KV table for system metadata\n- Bump version to v0.1.13",
"is_bot": false,
"headline": "feat(core): improve memory quality, configurable embeddings, and auto…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-27T14:37:00Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d588d73797649d12884800065a758e6fc681fc1b",
"body": "…, self-update\n\n- Add release-windows job to CI (windows-latest, .zip packaging)\n- Create install.ps1 PowerShell installer for Windows\n- Update self-update to handle .zip extraction and Windows binary locking\n- Remove Windows guard from neurox update command\n- Add Windows install instructions to both READMEs",
"is_bot": false,
"headline": "feat(installer): add Windows support — CI build, PowerShell installer…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-26T09:07:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "15d93d70843137dc2313e1d86202fe0b38ef4433",
"body": null,
"is_bot": false,
"headline": "chore: bump version to v0.1.11",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-26T08:36:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "36a3ef96db01ed3ec12b5dae5600777b6307d8b5",
"body": "…ed_by to fresh\n\nWhen the curator decides to KEEP an observation, it now resets\nstaleness='fresh', valid_until=NULL, invalidated_by=NULL. This\nprevents the contradiction detector from permanently hiding\nvalid observations that were incorrectly marked as expired.",
"is_bot": false,
"headline": "fix(curate): KEEP action resets staleness, valid_until, and invalidat…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-26T08:16:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d00309e4321ba26cff27b228033c51def99d6b32",
"body": null,
"is_bot": false,
"headline": "fix(curate): increase curator HTTP timeout to 5min for large namespaces",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-25T22:17:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c2440be0ff3e3e9e3f3c426ea62df056d5d67934",
"body": "Add a curation system that uses a large external LLM (Gemini 2.5 Flash)\nto review entire namespaces, delete noise, recalibrate importance weights,\nand generate quality reflections.\n\n- New internal/curate package: engine, prompt builder, priorities loader\n- CuratorConfig as second LLM provider indepe\n[…]\n/dataset)\n- Reflections now use curator provider when configured (quality upgrade)\n- Default Ollama model changed from qwen2.5:3b to qwen3:8b\n- 27 tests in curate package, all 23 project packages pass",
"is_bot": false,
"headline": "feat(curate): add deep memory curation with large model support",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-25T22:10:58Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1884c372ca3683bfc9ff8aea5625a948a5be64fd",
"body": "- Add ClaudeDesktopConfig field to Environment with platform-aware path\n detection (darwin/windows only — Claude Desktop not available on Linux)\n- Add ConfigureClaudeDesktop toggle to the Integrations step, hidden on\n Linux where ClaudeDesktopConfig is empty (same pattern as install_hook)\n- Add upsertClaudeDesktopConfig() writing mcpServers without \"type\":\n \"stdio\" as required by Claude Desktop (differs from Claude Code)\n- Wire the call in executeInstall() with non-fatal warning on error",
"is_bot": false,
"headline": "feat(installer): add Claude Desktop support to install wizard",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-25T15:07:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "090ff66425b461440ba9ebba3b21070246fa89c2",
"body": "…ig dir\n\nos.UserConfigDir() returns ~/Library/Application Support on macOS\nwhich is wrong for CLI tools. Now uses XDG_CONFIG_HOME if set,\nfalling back to ~/.config on all platforms (Linux, macOS, Windows WSL).\n\nFixes installer and config loader both.",
"is_bot": false,
"headline": "fix(config): use ~/.config/neurox on all platforms instead of OS conf…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-25T13:00:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "08a3076e477aef7aa81358b7d2fe2162ce53518e",
"body": "…ADME\n\n- install.sh always installs to ~/.local/bin (or --install-dir)\n- Detects and overwrites stale neurox copies in other PATH locations\n- README: one install command, no Go install confusion",
"is_bot": false,
"headline": "fix(install): single install path, auto-remove stale copies, clean RE…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-25T12:09:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "10b477edce42f299976a11c677c52a481e48a150",
"body": "- README: two install options (curl|bash vs go install)\n- Note explaining ~/go/bin vs PATH conflict with fix command\n- install.sh: sync all existing neurox locations in PATH after install",
"is_bot": false,
"headline": "docs(install): add go install instructions and PATH conflict warning",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-25T12:01:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "83346d15e776b0e70ed953adff416f9dcacbc8be",
"body": "Claude Code:\n- File: ~/.claude.json (was ~/.claude/settings.json — wrong file)\n- Format: {type:stdio, command:neurox, args:[mcp]} (was absolute path, no type)\n\nOpenCode:\n- Format: {type:local, command:[neurox,mcp], enabled:true} (was absolute path in array)\n\nCursor / Antigravity:\n- Format: {command:neurox, args:[mcp]} (was absolute path)\n\nAll clients now use 'neurox' by name instead of absolute path,\nso the config works regardless of install location.",
"is_bot": false,
"headline": "fix(installer): correct MCP config paths and formats for all clients",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-25T11:45:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3b1e8207ded2d78ccd32c25de487e996e03f231b",
"body": "Use filepath.EvalSymlinks to get the real executable path,\navoiding issues when neurox is run via a symlink.\nFalls back to 'neurox' (PATH-based) if resolution fails.",
"is_bot": false,
"headline": "fix(installer): resolve symlinks for binary path in MCP configs",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-25T11:43:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "695e92b8e00126253ada49063e077713b43ff7f6",
"body": "…ents\n\nneurox install now only does:\n1. Write config.yaml (LLM + embeddings providers)\n2. Write MCP configs for selected clients (Claude, Cursor, OpenCode, etc.)\n3. Install skill to ~/.claude/skills/neurox/\n4. Install git hook if requested\n\nNo binary copy, no PATH changes, no go build.\nThe binary is already installed when the user runs this command.",
"is_bot": false,
"headline": "fix(installer): remove binary copy — setup wizard only configures cli…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-25T10:48:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0278594421d8ed610b7f468d95edf13f0c46f21f",
"body": "neurox install now copies the current executable to the install dir\ninstead of running go build. This makes it work correctly when installed\nvia install.sh or go install, without requiring the source repo.",
"is_bot": false,
"headline": "fix(installer): use running binary instead of building from source",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-25T10:42:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d45b427aaf28e2c9ef3554997651cdc936fcd4cd",
"body": "…tHub Releases\n\n- Detects OS/arch automatically (linux/darwin, amd64/arm64)\n- Resolves latest version tag via GitHub API\n- Downloads neurox_<version>_<os>_<arch>.tar.gz from releases\n- Falls back to source build only if no prebuilt binary available\n- Installs with 'install -m 755' (atomic, handles busy binary)\n- Adds install dir to PATH in shell rc if not already present\n- curl | bash friendly",
"is_bot": false,
"headline": "feat(install): rewrite install.sh to download prebuilt binary from Gi…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-24T22:21:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f6f541347d5f6474b49a5f3fbd2a61775818ac3c",
"body": "Drop GoReleaser for builds (--split is Pro-only). Use direct go build\ncommands on native runners instead:\n- ubuntu-latest: linux/amd64 + linux/arm64 (with aarch64 cross-compiler)\n- macos-latest: darwin/amd64 + darwin/arm64 (native CGO)\nBoth jobs upload tarballs to the same GitHub Release via softprops/action-gh-release",
"is_bot": false,
"headline": "ci(release): replace goreleaser split with native per-platform builds",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-24T22:10:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9dfa998adb9acde2a7405304e61131cafb257b24",
"body": "- linux job: ubuntu-latest with gcc + gcc-aarch64-linux-gnu\n- darwin job: macos-latest (native CGO, no cross-compilation)\n- merge job: combines artifacts and publishes release\n- partial.by: target for split/merge strategy\n- goreleaser.yaml: add partial section, exclude ci: from changelog",
"is_bot": false,
"headline": "ci(release): split linux/darwin builds across native runners",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-24T22:08:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "07329913ef026c6e2b4d7766471eded804a837fb",
"body": "…ecations\n\n- Install gcc-aarch64-linux-gnu for linux/arm64 CGO support\n- Set CC env per target: x86_64-linux-gnu-gcc / aarch64-linux-gnu-gcc\n- archives.format → formats (array, fixes deprecation)\n- brews → homebrew_casks (fixes deprecation)\n- goreleaser-action version: latest → ~> v2 (stable pin)",
"is_bot": false,
"headline": "ci(release): fix CGO cross-compilation for arm64, fix goreleaser depr…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-24T22:05:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "009c3e4551335ad40d989a8bfeeb436cef859449",
"body": null,
"is_bot": false,
"headline": "chore: bump version to 0.1.2",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-24T22:01:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "284d233fac800b845895195f60b3fc39b8b58a60",
"body": "…kflow",
"is_bot": false,
"headline": "ci(release): add GoReleaser Homebrew tap + GitHub Actions release wor…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-24T21:57:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3dd7bb279366f4769744c9d6a46fcc385f12b08b",
"body": null,
"is_bot": false,
"headline": "chore(plan): mark steps 4 and 5 as done",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-24T21:32:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8176bcdccb33eb19af24ab6cec654e038efd924e",
"body": "…glossary, blog draft\n\n- neurox benchmark --output-html report.html: self-contained HTML with SVG radar chart,\n per-dimension breakdown, competitor comparison table (mem0/Zep/baseline)\n- internal/export/: ExportMarkdown writes Obsidian-compatible .md with YAML frontmatter\n and WikiLinks; ImportMar\n[…]\n,\n staleness, temporal intent, observation vs fact, brain power score)\n- docs/blog-benchmark.md: 1664-word blog post draft for HN/reddit launch\n- README: hero section rewritten for coding agent users",
"is_bot": false,
"headline": "feat(benchmark,export,content): HTML report, markdown export/import, …",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-24T21:32:16Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "36b0db9e6a7670df05eb293caae8506da850e2c0",
"body": "…e, and layer funnel\n\n- New GET /api/v1/decay-timeline endpoint — avg importance per layer per day (30d)\n- Health tab: score card (0-100) with letter grade and color coding\n- Dimension breakdown: per-dimension progress bars with status icons and recommendations\n- Memory layer funnel: Buffer/Working/Core counts with percentage bars\n- Decay timeline: Chart.js line chart of avg importance evolution over 30 days\n- Chart.js 4 loaded via CDN; chart destroyed/recreated on tab revisit",
"is_bot": false,
"headline": "feat(dashboard): add Health tab with brain power score, decay timelin…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-24T21:03:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8f813b0af38925d6f17bca4fe359353f90195d04",
"body": "…d rename module path\n\n- Rename go.mod module from 'neurox' to 'github.com/joeldevz/neurox' — enables go install\n- Update all 57 Go files with corrected internal import paths\n- Add docs/ with quickstart guides for Claude Code, Claude Desktop, Cursor, VS Code, OpenCode\n- Add skills/neurox/SKILL.md — \n[…]\n.claude/skills/neurox/ when Claude Code integration is selected\n- Add package.json for npx skills add joeldevz/neurox ecosystem support\n- Update .gitignore to exclude longmemeval data and result files",
"is_bot": false,
"headline": "feat(distribution): add per-client docs, SKILL.md, skills install, an…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-24T20:56:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "fdea21cef79b8a0fa2223def0a9573f1f7ca7678",
"body": "…mulations\n\nThree-axis benchmark covering cognitive (45%), performance (20%), and\nagent simulation (35%) dimensions. Includes MCP harness for in-process\nJSON-RPC tool calls, CLI with --scale/--category/--dimensions flags,\nand JSON export. Large-scale baseline: 86.2/100 (Grade A).",
"is_bot": false,
"headline": "feat(benchmark): add 12-dimension brain benchmark suite with agent si…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-22T17:32:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "da9a6593f00ac0d33f1bc6a439e1b7202cabe49e",
"body": "…from core knowledge\n\nAdd 'retention' field (operational/durable) to observations so consolidation\nstops promoting step logs, plan tracking, and build notes into Core memory.\n\n- Schema migration 004 adds retention column; 005 backfills existing data\n- New classify package auto-classifies observation\n[…]\n for setup wizard\n- Simplified install.sh as lightweight bootstrap script\n- 2 new tests for proactive ordering, 4 for consolidation retention,\n 14 for classify, 3 for observation retention round-trip",
"is_bot": false,
"headline": "feat(retention): add retention policy to separate operational memory …",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-22T11:08:24Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "34e1a1c7b68377cedfdd13b45e7a2bbf8c9f8130",
"body": "…etry and health_check\n\nWire embed.Queue into MCP/HTTP save+update handlers so all observations\nget vector embeddings. Add BackfillPending to consolidation pipeline for\nhistorical data. Create telemetry package tracking every MCP tool call\nwith parameter usage. Add health_check tool computing brain \n[…]\nw packages: internal/telemetry, internal/health\n- 13 MCP tools (health_check added), GET /api/v1/health-check endpoint\n- Embedding stats in status responses\n- All 21 packages pass, race detector clean",
"is_bot": false,
"headline": "feat(embed,telemetry,health): wire embedding pipeline, add tool telem…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-22T03:11:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a926fe3e08342883b0ba9cf7a413c88e7474576e",
"body": null,
"is_bot": false,
"headline": "docs(readme): expand cli and api reference",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-20T17:38:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b04b5335923f84975dabbea856460b725bf0949e",
"body": null,
"is_bot": false,
"headline": "docs(readme): align setup and hook docs",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-20T17:09:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "591319124b5815ac5fa01ccf58e598f45f0a8484",
"body": "…nd browser opening.",
"is_bot": false,
"headline": "feat: introduce interactive graph visualization with HTML rendering a…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-20T16:53:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b257bed91d9b0851a5001b4fa375a825923371e5",
"body": "…move numerous vendored dependencies.",
"is_bot": false,
"headline": "feat: Introduce temporal mention and observation capabilities, and re…",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-20T12:33:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1add567149746a22e26bd3f819792d1f3d33a96c",
"body": "Brain-inspired memory engine for AI coding agents with three-layer\nmemory model (Buffer → Working → Core), hybrid search (FTS5 + semantic),\nEbbinghaus decay curves, and consolidation pipelines.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(neurox): initial commit",
"author_name": "Joeldevz",
"author_login": "joeldevz",
"committed_at": "2026-03-19T23:34:13Z",
"body_truncated": false,
"is_coding_agent": true
}
],
"releases_count": 22,
"commits_last_year": 92,
"latest_release_at": "2026-06-19T15:07:37Z",
"latest_release_tag": "v0.5.6",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 8,
"days_since_latest_release": 41,
"mean_days_between_releases": 9.2
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 42,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "github.com/joeldevz/neurox",
"exists": true,
"license": null,
"keywords": [],
"ecosystem": "go",
"matches_repo": true,
"registry_url": "https://pkg.go.dev/github.com/joeldevz/neurox",
"is_deprecated": false,
"latest_version": "v0.5.6",
"repository_url": "https://github.com/joeldevz/neurox",
"versions_count": 26,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": null,
"latest_published_at": "2026-06-19T15:07:03Z",
"latest_version_yanked": null,
"days_since_latest_publish": 41
},
{
"name": "neurox",
"exists": true,
"license": "MIT",
"keywords": [
"ai",
"memory",
"mcp",
"coding-agent",
"brain",
"cortex",
"llm",
"embeddings",
"fts",
"knowledge-graph",
"claude",
"cursor",
"copilot",
"neuroscience"
],
"ecosystem": "npm",
"matches_repo": false,
"registry_url": "https://www.npmjs.com/package/neurox",
"is_deprecated": false,
"latest_version": "0.0.1",
"repository_url": "https://github.com/joeldev/neurox",
"versions_count": 1,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 10,
"first_published_at": "2026-03-19T14:20:51.088000Z",
"latest_published_at": "2026-03-19T14:20:51.728000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 134
}
]
},
"popularity": {
"forks": 0,
"stars": 5,
"watchers": 0,
"fork_history": {
"days": [],
"complete": true,
"collected": 0,
"total_forks": 0
},
"star_history": null,
"open_issues_and_prs": 7
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": true,
"has_mcp_signal": true,
"bootstrap_files": [
"vendor/github.com/buger/jsonparser/Makefile",
"vendor/github.com/spf13/cast/Makefile",
"vendor/github.com/wk8/go-ordered-map/v2/Makefile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [
"go.mod"
],
"largest_source_bytes": 152158,
"source_files_sampled": 168,
"oversized_source_files": 2,
"agent_instruction_files": [
"CLAUDE.md"
],
"agent_instruction_max_bytes": 9027
},
"dependencies": {
"manifests": [
"go.mod",
"package.json"
],
"advisories": {
"error": null,
"scope": null,
"source": null,
"findings": [],
"collected": false,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 0,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"go",
"npm"
],
"dependencies": [
{
"name": "github.com/charmbracelet/bubbletea",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.2.4"
},
{
"name": "github.com/charmbracelet/lipgloss",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.0.0"
},
{
"name": "github.com/mark3labs/mcp-go",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.45.0"
},
{
"name": "github.com/mattn/go-sqlite3",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.14.24"
},
{
"name": "github.com/oklog/ulid/v2",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v2.1.1"
},
{
"name": "gopkg.in/yaml.v3",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v3.0.1"
}
],
"all_dependencies": {
"error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"source": null,
"packages": [],
"collected": false,
"truncated": false,
"total_count": null,
"direct_count": null,
"indirect_count": null
}
},
"maintainership": {
"issues": {
"open_prs": 0,
"merged_prs": 3,
"open_issues": 7,
"closed_ratio": 0,
"closed_issues": 0,
"closed_unmerged_prs": 0
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "joeldevz",
"commits": 95,
"avatar_url": "https://avatars.githubusercontent.com/u/36200065?v=4"
}
],
"contributors_sampled": 1,
"top_contributor_share": 1
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"ci.yml",
"release.yml"
],
"has_docs_dir": true,
"linter_configs": [
".golangci.yml"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"go.sum",
"package-lock.json"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 10,
"reason": "3 out of 3 merged PRs checked by a CI test -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 0,
"reason": "Found 0/22 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 6,
"reason": "project has 2 contributing companies or organizations -- score normalized to 6",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 9,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "26 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": 0,
"reason": "Project has not signed or included provenance with any releases.",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 3,
"reason": "7 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "5251dead3bb3e8235161237682e03e5f64d31583",
"ran_at": "2026-07-31T14:59:09Z",
"aggregate_score": 3.4,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-31T08:27:14Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2026-06-19T15:54:03Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 1,
"created_at": "2026-03-30T22:29:56Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 2,
"created_at": "2026-03-30T22:30:19Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 3,
"created_at": "2026-03-30T22:30:50Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 4,
"created_at": "2026-03-30T22:31:15Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 5,
"created_at": "2026-03-30T22:31:49Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 9,
"created_at": "2026-07-01T08:44:52Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 10,
"created_at": "2026-07-31T08:23:04Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/joeldevz/neurox",
"host": "github.com",
"name": "neurox",
"owner": "joeldevz"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 54,
"inputs": {
"security": 33,
"vitality": 77,
"community": 26,
"governance": 45,
"engineering": 84
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 77,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "moderate",
"name": "Development activity",
"note": null,
"notes": [],
"value": 69,
"inputs": {
"commits_last_year": 92,
"human_commit_share": 1,
"days_since_last_push": 0,
"active_weeks_last_year": 8
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "8/52 weeks with commits",
"points": 5.5,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 8
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "92 commits in the last year",
"points": 17.7,
"status": "partial",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 92
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "26 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": null,
"notes": [],
"value": 90,
"inputs": {
"releases_count": 22,
"latest_release_tag": "v0.5.6",
"releases_from_tags": false,
"days_since_latest_release": 41,
"mean_days_between_releases": 9.2
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "22 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 22
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 41 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 41
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~9.2 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 9.2
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "unverified",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": "repository_too_young",
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": null,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "maintenance record not established from the collected data",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_unverified",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "critical",
"name": "Community & Adoption",
"value": 26,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 10,
"inputs": {
"forks": 0,
"stars": 5,
"watchers": 0,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "5 stars",
"points": 9.8,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 5
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "0 forks",
"points": 0,
"status": "missed",
"details": [
{
"code": "forks",
"params": {
"count": 0
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "0 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 0
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "at_risk",
"name": "Community health",
"note": null,
"notes": [],
"value": 44,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "license file present, not a recognized license",
"points": 16.9,
"status": "partial",
"details": [
{
"code": "license_custom",
"params": {}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "at_risk",
"name": "Sustainability & Governance",
"value": 45,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 16,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 1,
"top_contributor_share": 1
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 100% of commits",
"points": 0,
"status": "missed",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 100
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "1 contributors",
"points": 1.4,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 1
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 2 contributing companies or organizations -- score normalized to 6",
"points": 6,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "at_risk",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 38,
"inputs": {
"merged_prs": 3,
"open_issues": 7,
"closed_issues": 0,
"issue_closed_ratio": 0,
"closed_unmerged_prs": 0
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "0% of issues closed",
"points": 0,
"status": "missed",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 0
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "3/3 decided PRs merged",
"points": 38.2,
"status": "met",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 3,
"decided": 3
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/22 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "at_risk",
"name": "Ownership & stewardship",
"note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"verified_domain"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 41,
"inputs": {
"followers": 3,
"owner_type": "User",
"is_verified": null,
"owner_login": "joeldevz",
"public_repos": 6,
"account_age_days": 3096
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "personal (user) account",
"points": 10,
"status": "partial",
"details": [
{
"code": "owner_personal",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": "not applicable to user accounts",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_applicable_to_user_accounts",
"params": {}
}
],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "3 followers of joeldevz",
"points": 4.3,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 3,
"login": "joeldevz"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "6 public repos, account ~8 yr old",
"points": 18.2,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 6
}
},
{
"code": "account_age_years",
"params": {
"years": 8
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"github.com/joeldevz/neurox"
],
"ecosystems": "go",
"any_deprecated": false,
"min_days_since_publish": 41
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on go",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "go"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 41 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 41
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "26 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 26
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "good",
"name": "Engineering Quality",
"value": 84,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 84,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "2 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 2
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": ".golangci.yml",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".golangci.yml"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "3 out of 3 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"topics": [
"ai-agents",
"claude-code",
"coding-agents",
"llm",
"mcp",
"memory",
"opencode",
"persistent-memory",
"sqlite"
],
"has_wiki": true,
"homepage": null,
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "9 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 9
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "at_risk",
"name": "Security",
"value": 33,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Packaging. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"packaging"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 33,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 17,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 1,
"scorecard_aggregate": 3.4
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "3 out of 3 merged PRs checked by a CI test -- score normalized to 10",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 0/22 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 2 contributing companies or organizations -- score normalized to 6",
"points": 1.5,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.2,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "26 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "7 existing vulnerabilities detected",
"points": 2.2,
"status": "partial",
"details": [],
"max_points": 7.5
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "good",
"name": "AI Readiness",
"value": 73,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.989,
"agent_instruction_files": [
"CLAUDE.md"
],
"agent_instruction_max_bytes": 9027
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "CLAUDE.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "CLAUDE.md"
}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "94 of 95 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 94,
"sampled": 95
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "good",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 74,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"go.sum",
"package-lock.json"
],
"has_dockerfile": true,
"typed_language": true,
"bootstrap_files": [
"vendor/github.com/buger/jsonparser/Makefile",
"vendor/github.com/spf13/cast/Makefile",
"vendor/github.com/wk8/go-ordered-map/v2/Makefile"
],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [],
"agent_commit_share": 0.011,
"toolchain_manifests": [
"go.mod"
],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "vendor/github.com/buger/jsonparser/Makefile, vendor/github.com/spf13/cast/Makefile, vendor/github.com/wk8/go-ordered-map/v2/Makefile",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "vendor/github.com/buger/jsonparser/Makefile, vendor/github.com/spf13/cast/Makefile, vendor/github.com/wk8/go-ordered-map/v2/Makefile"
}
}
],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": ".golangci.yml",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".golangci.yml"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "Go (statically typed)",
"points": 11,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Go"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "Dockerfile, lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Dockerfile, lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "1 of the last 95 commits agent-authored or agent-credited",
"points": 2.1,
"status": "partial",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 1,
"sampled": 95
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 99,
"inputs": {
"primary_language": "Go",
"largest_source_bytes": 152158,
"source_files_sampled": 168,
"oversized_source_files": 2
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Go (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Go"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "2/168 source files over 60KB",
"points": 54.3,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 168,
"oversized": 2
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "critical",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 20,
"inputs": {
"example_dirs": [],
"has_mcp_signal": true,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 20,
"status": "met",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"npm package 'neurox' points at a different repository (https://github.com/joeldev/neurox); excluded from ecosystem scoring",
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
],
"report_type": "repository",
"generated_at": "2026-07-31T14:59:19.372272Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/j/joeldevz/neurox.svg",
"full_name": "joeldevz/neurox",
"license_state": "custom",
"license_spdx": null
}