Aeon Changelog: What Shipped Each Week
Y2E8K2YK/VChangelog.
What shipped in aeon - merged PRs, new skills, dashboard fixes, and ecosystem additions, published as a changelog each week.
- 2026-09-14
Sync-safe eyebrow and changelog fixes
aeon-update and the changelog skill now run the same generator and formatter their CI gates run, so a docs sync that only edits prose no longer lands downstream instances CI-red.
- fix(aeon-update): the eyebrow fail-safe now defers a clean update/merge of an existing skill whose lock entry carries findings - a line-shift above a pinned finding was tripping failOnCapabilityExpansion and turning ci-skill-integrity red on prose-only syncs (#1061)
- fix(changelog): the changelog skill runs the website formatter on its generated output, so format:check stays green on the sync PR (#1061)
1 PR included
- #1061 fix: close two aeon-update/changelog gaps that land downstream sync PRs CI-red (@aaronjmars)
- 2026-09-14
Riva scan kernel and self-healing loop fixes
vuln-scanner gains an opt-in Riva research kernel, competitor-monitor can now diff table rows on watched pages, and a new miroshark-matchday skill runs weekly bulk football simulations. The rest of the window tightens the self-healing loop itself - bounded trufflehog scans, accurate no-action telemetry, readable read-only skill logs, and a CI fix so the workflow expression-limit guard fires on workflow-only edits too.
- vuln-scanner gains an opt-in Riva research kernel - a focused threat-model/invariant scan selectable alongside the legacy scanner, with a safe shadow mode for side-by-side comparison before switching over (#1039)
- New miroshark-matchday skill: every Friday runs one paid MiroShark simulation per major football league (Premier League, Serie A, La Liga) and delivers the share links, reports, and videos (#1056)
- competitor-monitor can now opt in to diffing table rows on a watched page - useful for a CVE/incident/customer table the scraper previously dropped on every deploy (#1043)
- fix(aeon): a read-only skill's structured log now survives the run instead of being replaced by a content-free two-line stub, restoring its dedup/diff history for the next run (#1051)
- fix(aeon): a read-only skill's failure log now gets committed too, not just its success log (#1052)
- fix(harness): memory/ and output/ stay writable inside the read-only sandbox again, unblocking read-only skills that need to log or capture chain output there (#1042)
- fix(chain): a dev-loop run with no verified feature PR now reports no-action instead of success, so skill-health can no longer mistake a no-op for a shipped, reviewed change (#1053)
- fix(vuln-scanner): the trufflehog filesystem scan is now time-bounded and can no longer run in the background, closing the same silent-timeout gap already fixed for the git-history pass (#1054)
- fix(vuln): the github-trending notify feed stays machine-parseable even when a run sends a header-only summary, so vuln-scanner can always find a scan target (#1055)
- fix(tests): unbreaks main CI - the vuln-scanner status test now tolerates the timeout-aware trufflehog block added the same day (#1057)
- fix(ci): the workflow expression-limit regression guard now also fires on workflow-only edits to aeon.yml, not just script/bin changes (#1058)
- Maintenance: aeon-docs synced for #1034-#1040 (#1041), plus 6 dependency bumps - sharp x2, js-yaml x3, hono (#1044, #1046, #1047, #1048, #1049, #1050)
18 PRs included
- #1039 feat(vuln-scanner): add Riva research kernel (@Svector-anu)
- #1041 docs: sync PRs #1034-#1040 to aeon docs (@aaronjmars)
- #1042 fix(harness): keep memory/ and output/ writable in read-only sandbox (@aaronjmars)
- #1043 feat(competitor-monitor): opt-in table-row diffing for list pages (@aaronjmars)
- #1044 chore(deps): bump hono from 4.13.0 to 4.13.7 in /apps/mcp-server (@dependabot[bot])
- #1046 chore(deps-dev): bump js-yaml from 4.3.1 to 4.3.2 in /apps/webhook (@dependabot[bot])
- #1047 chore(deps): bump js-yaml from 4.3.1 to 4.3.2 in /skills/remotion/project in the npm_and_yarn group across 1 directory (@dependabot[bot])
- #1048 chore(deps): bump sharp from 0.35.3 to 0.35.4 in /apps/dashboard (@dependabot[bot])
- #1049 chore(deps-dev): bump js-yaml from 4.3.1 to 4.3.2 in /apps/dashboard (@dependabot[bot])
- #1050 chore(deps): override sharp to 0.35.4 in apps/webhook (@aaronjmars)
- #1051 fix(aeon): read-only guard stub loses every skill's memory/logs baseline (@Svector-anu)
- #1052 fix(aeon): commit a read-only skill's failure log, not just its success (@aaronjmars)
- #1053 fix(chain): distinguish no-action telemetry (@Svector-anu)
- #1054 fix(vuln-scanner): bound the trufflehog filesystem scan, forbid backgrounding scanners (@Svector-anu)
- #1055 fix(vuln): keep github-trending feed machine-parseable for the scanner (@aaronjmars)
- #1056 Add miroshark-matchday skill: weekly bulk football matchday sims + video handoff (@NurstarK)
- #1057 fix(tests): make vuln-scanner status test tolerant of the timeout-aware block (@aaronjmars)
- #1058 fix(ci): add .github/workflows/aeon.yml to ci-tests trigger paths (@aaronjmars)
- 2026-09-09
Mandatory hook fee and two crypto skills
deploy-uni-hook now bakes the mandatory 10 bps AeonFee into every hook it deploys and, via the new submit-hook skill, publishes a live mainnet hook to the public univ4-hooks registry; a new compute-resell skill resells idle provider compute on the Surplus market. Two CI-reliability fixes stop aeon-update sync PRs and egress-audit artifact uploads from going falsely red. The first-party catalog is now 80 skills.
- feat(deploy-uni-hook): every hook the skill deploys now inherits the audited AeonFee base, enforcing the mandatory 10 bps protocol fee to AEON_FEE_RECIPIENT - hooks shipped through the live skill were previously fee-free (#1035)
- New compute-resell skill (Crypto & Markets, disabled by default): resells free or low-cost provider compute across Bankr, AWS Bedrock, and Google Vertex on the Surplus Intelligence market, reactively pricing each offer within cost floor/cap guardrails; a provider turns on only when its wallet and credential secrets are both set (#1036)
- New submit-hook skill (Crypto & Markets): ports the univ4-hooks marketplace publish path to canon, so deploy-uni-hook step 11 lists a live mainnet hook on the public aeonfun/univ4-hooks registry (opens a PR, files an issue when there is no push access) (#1040)
- Backfilled: cortx-reliability (Crypto & Markets) checks whether an x402 payment endpoint is reliably delivering value before you spend USDC on it - paid delivery rate, active incidents, latency, and a proceed/warn/block call. It merged in a prior window but landed below the sync watermark and was never documented; now reconciled into the catalog and icon set (#954)
- fix(aeon-update): the in-run eyebrowlock rescan now derives the eyebrow version from ci-skill-integrity.yml instead of a hardcoded v0.4.1, so sync PRs stop failing the verify check once CI moves to v0.4.2 (#1037)
- fix(egress): under EGRESS_AUDIT the artifact-upload FinalizeArtifact call no longer routes through iron-proxy, ending the 403 that reddened otherwise-green runs (#1038)
- Maintenance: the changelog skill now formats the website changelog file after editing so format:check passes (#1034)
7 PRs included
- #954 feat: add cortx-reliability skill - x402 endpoint reliability check (@danbuildss)
- #1034 docs(changelog): format website file after edit so format:check passes (@aaronjmars)
- #1035 feat(deploy-uni-hook): enforce the mandatory 10 bps AeonFee on every deployed hook (@aaronjmars)
- #1036 feat(skills): add compute-resell - multi-provider compute reselling on Surplus (@aaronjmars)
- #1037 fix(aeon-update): derive eyebrow version from CI so sync PRs stop going red (@aaronjmars)
- #1038 fix(egress): stop iron-proxy MITM from redding artifact uploads (@aaronjmars)
- #1040 Port submit-hook marketplace publish to canon (@aaronjmars)
- 2026-09-07
Verification hardening across the self-healing loop
This batch tightens the loop that grades and repairs itself: chain-runner, skill-health, and fleet-scorecard stop letting rejected dispatches and non-skill runs corrupt reliability scores, notify reports real per-channel delivery status instead of always claiming success, and vuln-scanner gates high-severity findings behind deterministic proof before publishing. The dev-loop chain gains a verified receipt tying a review back to the exact commit it checked, deploy-uni-hook gets three correctness fixes, and send-email now checks for bounces before it sends again.
- feat(vuln-scanner): a high or critical finding now needs deterministic verification - a foundry-fork run pinned to an observed chain/block, or a command-mode reproduction - before it can publish; unverified findings downgrade to needs-verification (#1008)
- fix(vuln-scanner): trufflehog's git-history scan is now time-bounded, so a 200-commit/369MB repo can no longer eat a whole 30-minute run budget and report phantom success on a placeholder output (#1030)
- feat(dev-loop): the feature-then-review chain now writes a sha-bound review receipt and verifies it back from GitHub state, so a green child run can't omit the verdict, target, or finding counts the next step needs (#1027)
- feat(chains): dev-loop verifies exactly one new open PR from the authenticated actor after a feature run and binds it to that run with a dispatch-id marker before handing it to pr-review (#1009)
- fix(chain-runner): a target-validation rejection before any skill runs no longer counts as a skill failure, so a misconfigured dispatch can't drag down a chain's lifetime reliability score (#1017)
- fix(skill-health): a recovered skill's health issue can now close as soon as recent runs are clean, instead of waiting on the lifetime success rate to age the incident out (#1018)
- fix(fleet-scorecard): the least-reliable-skills table now only counts real skill dispatches, so CI runs and chain wrapper jobs stop leaking into another skill's failure rate (#1019)
- fix(notify): a send that reaches zero configured channels - or where every channel's real API error was being swallowed - now fails instead of silently reporting delivered (#1020)
- feat: send-email runs a delivery preflight over prior sends (Resend's GET /emails/{id}) before sending again, since a 200 from POST /emails only means accepted, not delivered (#1033)
- fix: the workflow's secret-validation step now recognizes RESEND_API_KEY as bound, clearing a false Secrets not set warning on every email-skill run even when the send succeeded (#1032)
- fix(scheduler): per-skill model overrides now resolve for block-style aeon.yml entries too, not just single-line ones, so a skill configured with model: "claude-opus-4-8" inside a block actually runs on that model (#1024)
- fix(dry-run): local skill dry runs can select Claude or Codex plus an explicit model id, closing a portability gap surfaced by validating a skill built in a supervised Codex session (#1029)
- deploy-uni-hook: three correctness fixes - balance/skew gates now anchor to the pool's own price instead of an implicit 1.0 (#1031), the fork-simulation gate works for every hook kind after a CREATE2/gas-limit fix (#1023), and a scaffold comment now points at the right revert-matching helper (#1022)
- fix(workflow): the skill-runner script is kept below GitHub Actions' 21,000-character expression limit with a regression guard at 20,500, after a real fork hit a hard parse failure on every dispatch (#1026)
- llm-gateway(glm): reasoning effort now pins to high by default (var-overridable) on the GLM 5.3 series, which is forced-thinking and otherwise leaves depth model-decided (#999)
- Maintenance: eyebrow skill-integrity gate bumped to v0.4.2 (#1002), eslint/globals majors held so grouped Dependabot PRs stay green (#1012), MythosForge delisted from the ecosystem page (#1010), the changelog skill's own em/en-dash scrub bug fixed (#1000), optional MCP-server runtime-hardening docs added (#1001), and 8 dependency bumps (types/node, tsx, wrangler, fast-uri x2, qs, 5 dashboard deps, upload-artifact)
30 PRs included
- #999 llm-gateway(glm): pin reasoning effort to high (var-overridable) (@aaronjmars)
- #1000 fix(changelog-skill): scrub em/en dashes from generated output (@aaronjmars)
- #1001 docs: optional runtime hardening for the Aeon MCP server (@alexverify)
- #1002 Bump eyebrow skill-integrity gate to v0.4.2 (@alexverify)
- #1003 chore(deps-dev): bump @types/node from 26.1.2 to 26.4.0 in /apps/mcp-server in the mcp-server group (@dependabot[bot])
- #1006 chore(deps): bump tsx from 4.23.1 to 4.23.12 in /apps/cli in the cli group (@dependabot[bot])
- #1008 feat(vuln-scanner): verify high severity claims (@Svector-anu)
- #1009 feat(chains): verify dev-loop pr handoff (@Svector-anu)
- #1010 docs: remove MythosForge from ecosystem (@aaronjmars)
- #1011 chore(actions): bump actions/upload-artifact from 4.6.2 to 7.0.1 in the github-actions group across 1 directory (@dependabot[bot])
- #1012 chore(deps): hold eslint and globals majors so grouped Dependabot PRs stay green (@aaronjmars)
- #1013 chore(deps-dev): bump wrangler from 4.115.0 to 4.127.1 in /apps/webhook in the webhook group (@dependabot[bot])
- #1014 chore(deps): bump the dashboard group in /apps/dashboard with 5 updates (@dependabot[bot])
- #1015 chore(deps): bump fast-uri from 3.1.5 to 3.1.7 in /skills/remotion/project in the npm_and_yarn group across 1 directory (@dependabot[bot])
- #1016 chore(deps): bump fast-uri from 3.1.5 to 3.1.7 in /apps/mcp-server (@dependabot[bot])
- #1017 fix(chain-runner): stop a rejected dispatch from poisoning the reliability signal (@Svector-anu)
- #1018 fix(skill-health): detect critical-incident recovery without waiting on lifetime success_rate (@Svector-anu)
- #1019 fix(fleet-scorecard): stop non-skill runs from leaking into the per-skill reliability table (@Svector-anu)
- #1020 fix(notify): report per-channel delivery status and fail on total delivery failure (@Svector-anu)
- #1021 chore(deps): bump qs from 6.15.3 to 6.16.0 in /apps/mcp-server (@dependabot[bot])
- #1022 fix(deploy-uni-hook): scaffold comment points at _expectSwapRevert not vm.expectRevert (@aaronjmars)
- #1023 fix(deploy-uni-hook): DeployHook.s.sol simulates cleanly for every hook kind (@aaronjmars)
- #1024 fix(scheduler): read per-skill model: from block-style aeon.yml entries (@aaronjmars)
- #1026 fix(workflow): preserve expression headroom (@Svector-anu)
- #1027 feat(dev-loop): add verified review receipts (@Svector-anu)
- #1029 fix(dry-run): support explicit claude and codex model selection (@Svector-anu)
- #1030 fix(vuln-scanner): bound trufflehog git-history scan, no more phantom-success runs (@Svector-anu)
- #1031 fix(deploy-uni-hook): anchor price/balance/skew gates to the pool's own price (@aaronjmars)
- #1032 fix(notify): bind RESEND_API_KEY in validate-skill-secrets step (clear false warning) (@aaronjmars)
- #1033 feat: delivery preflight - detect bounces on prior sends before send-email (@aaronjmars)
- 2026-08-31
GLM gateway move + fail-closed adapters
GLM stops being a run-harness - the adapter was Claude Code pointed at Z.AI - and becomes a native Claude AI Gateway entry with per-tier model mapping, taking the harness count back to nine. A cluster of correctness fixes makes broken runs fail loudly instead of reporting green: unparseable adapter output, mis-correlated chain dispatches, Hermes runs that wrap HTTP 400s in success envelopes, and repair PRs that marked issues resolved before they merged.
- GLM moves out of the harness list and into the LLM gateway registry - adapters/glm.sh was Claude Code with ANTHROPIC_BASE_URL pointed at api.z.ai - so GLM_API_KEY (alias ZAI_API_KEY) runs native in the auto cascade and the harness count drops back to nine (#990)
- Tiered GLM model mapping - GLM_MODEL_OPUS/GLM_MODEL_SONNET/GLM_MODEL_HAIKU, mirroring the OpenRouter arm - so the per-skill model tiers in aeon.yml pick a real model on the GLM gateway instead of one pinned id (#998)
- New community skill cortx-reliability (danbuildss): check an x402 endpoint's paid delivery rate, uptime, latency, and active incidents before an agent spends USDC on it (#954)
- Security: the dashboard API requires the Origin/Referer host to exactly match the request Host, so a page on http://localhost:5555 can no longer no-CORS POST at http://127.0.0.1:5555 to reach private APIs (#986)
- Fixed: unparseable adapter output fails the run instead of being wrapped into a schema-valid success envelope that published the raw blob as the skill result with zero token usage recorded (#987)
- Fixed: chain-dispatched runs get a unique dispatch ID, so two concurrent chains running the same skill can no longer wait on - and consume - each other's output (#988)
- Fixed: skill-repair leaves an issue open until its repair PR actually merges, instead of recording resolved at PR-creation time while the failure is still live (#997)
- Fixed: the Hermes adapter errors when the CLI prints an HTTP 4xx/5xx but exits zero - a fork run looked green while its whole output was 'HTTP 400: modelCode: does not exist' (#984)
- Fixed: transient xAI x_search failures - timeout, 5xx, empty 200 - retry once before falling back to a lower-quality source, instead of dying permanently on the first blip (#989)
- Fixed: Cursor headless runs always pass --trust, so read-only skills work in Cursor's fresh temporary-home CI workspaces, and fx is now a valid workflow_dispatch harness choice (#983, #982)
- Each skill's Telegram notifications now quote that skill's previous message (reply_to_message_id, on by default), grouping runs into threads without forum topics; documented in telegram-commands and CONFIGURATION (#995, #996)
- Dashboard: a Connect chip copies this machine's gh auth token into the GH_GLOBAL Actions secret - no manual PAT paste, no refresh job - and harness picker labels rename to product names (Claude, Grok, Mistral, Cursor, Hermes) (#993, #994)
- deploy-uni-hook learns what the fleet's audits already taught: Labs auto-route vs allowlist routing classes, exact-output fee handling, and custody-correct fee withdrawal instead of take()-to-self (#991, #992)
- Maintenance: docs synced for #957-#979 (#980), the harness banner re-rendered with ten engines (#981), and a founder credit linking aaronjmars.com added to the README footer (#985)
20 PRs included
- #954 feat: add cortx-reliability skill - x402 endpoint reliability check (@danbuildss)
- #980 docs: sync PRs #957-#979 to aeon docs (@aaronjmars)
- #981 docs: re-render ten-engine harness banner (@aaronjmars)
- #982 allow fx workflow dispatches (@Svector-anu)
- #983 trust cursor workspaces in headless runs (@Svector-anu)
- #984 fail hermes runs on api errors (@Svector-anu)
- #985 Add founder credit + link to aaronjmars.com (@aaronjmars)
- #986 fix(dashboard): require exact origin host match (@keyurbodar)
- #987 fix(envelope): fail on unparseable adapter output (@keyurbodar)
- #988 fix(chains): correlate dispatched skill runs uniquely (@keyurbodar)
- #989 retry transient xai search failures (@Svector-anu)
- #990 feat: move GLM from harness to Claude AI Gateway (@aaronjmars)
- #991 teach deploy-uni-hook Labs routing classes (@aaronjmars)
- #992 teach deploy-uni-hook the fleet audit rules (@aaronjmars)
- #993 feat(dashboard): Connect copies gh token into GH_GLOBAL (@aaronjmars)
- #994 style(dashboard): shorten harness picker labels (@aaronjmars)
- #995 feat(notify): reply Telegram to previous skill run (@aaronjmars)
- #996 docs: Telegram reply-to-previous (@aaronjmars)
- #997 don't mark an issue resolved when the repair PR is only opened (@Svector-anu)
- #998 Add tiered GLM model mapping (GLM_MODEL_SONNET/OPUS/HAIKU) (@aaronjmars)
- 2026-08-27
Ten harnesses + rightstack advisor
Three more coding-agent CLIs - Cursor, Hermes, and GLM - join run-harness, taking Aeon to ten harnesses, and a new read-only rightstack skill brings the catalog to 77. The window also adds machine-readable proof that vuln scanners actually ran, a read-only harness-quality comparison, three community skill packs, and non-blocking concurrent skill calls in the local MCP server.
- Three new run-harnesses - Cursor (agent -p, CURSOR_API_KEY), Hermes via the Nous Portal (HERMES_AUTH), and the GLM Coding Plan on Z.AI's Anthropic endpoint (GLM_API_KEY/ZAI_API_KEY) - join the run-harness contract, taking Aeon to ten coding-agent CLIs, with permanent dashboard Access Keys rows for all three (#967, #975)
- New rightstack skill (Dev & Code): a read-only Web3 stack advisor (recommend/workflow/compare/explain/migrate) that maps a build goal to a coherent stack, manual-only and unable to install, deploy, or transact - catalog is now 77 skills (#961)
- Read-only harness comparison (skill-health-routing.mjs): groups harness-tagged skill-health scores with per-run token/cache usage so operators can weigh quality against cost before switching harness in aeon.yml (#969)
- Machine-readable vuln-scanner execution evidence: staged scanners (Semgrep, TruffleHog, OSV-Scanner, Slither, cargo-fuzz) are wrapped with an invocation logger and a post-run step prints proof they actually ran (#968)
- Three community skill packs listed - CultOS exact-commit PR review (#974), the Farcaster pack with a Neynar-backed cast skill (#977), and the Spoolis Outcome Gate (#978)
- Operator-console plugin prepped for the OpenAI, Kiro Powers, and MiniMax marketplaces - host-neutral wording and Codex-runnable scripts, additive manifests only (#959, #964, #965)
- Docs: stale harness/MCP counts corrected - llms.txt moved to seven CLIs (the harness work then takes it to ten) and a missing Higgsfield row added to the MCP OAuth catalog (#960)
- Fixed: the local MCP server runs skills with an async spawn behind a single-flight queue, so one tools/call no longer freezes the whole stdio server for up to 10 minutes (#973)
- Fixed: Telegram notification chunks are bounded after Markdown renders to HTML, so a link-heavy skill can no longer emit an unsendable oversized payload (#970)
- Fixed: bin/add-skill records the real source commit in skills.lock instead of unknown (#972)
- Fixed: macOS portability - the cron test detects GNU vs BSD date (#957) and the issue-backed cron-state/health helpers survive Bash 3.2 set -u in default-repo mode (#971); Linux Actions scheduling was never affected
- Ecosystem: added Eyebrow (#976), removed Amper (#979)
- Maintenance: first repo lint gates (eslint + shellcheck, both green) with two false positives suppressed (#962, #963), plus a 400x400 Cline marketplace logo (#966)
22 PRs included
- #957 fix macos cron date portability (@Svector-anu)
- #959 chore(plugin): prep operator-console plugin for OpenAI submission (@aaronjmars)
- #960 docs: fix stale harness/MCP catalog counts (+higgsfield) (@aaronjmars)
- #961 add rightstack web3 advisor (@Svector-anu)
- #962 chore(ci): add eslint + shellcheck lint gates (@aaronjmars)
- #963 chore: silence two shellcheck false positives (not bugs) (@aaronjmars)
- #964 feat(plugin): Agent Plugins plugin.json + privacy/support for Kiro Powers (@aaronjmars)
- #965 Add MiniMax plugin manifest for the aeon operator console (@aaronjmars)
- #966 Add 400x400 MCP server logo for Cline marketplace (@aaronjmars)
- #967 add cursor hermes and glm harnesses (@Svector-anu)
- #968 add machine-readable vuln scanner execution evidence (@Svector-anu)
- #969 add recommend-only harness comparison (@Svector-anu)
- #970 fix: bound rendered telegram chunks (@Svector-anu)
- #971 fix: support default repo in macos issue stores (@Svector-anu)
- #972 fix add-skill commit provenance (@Svector-anu)
- #973 fix(mcp-server): run skills async with a single-flight queue (@aaronjmars)
- #974 feat: list CultOS Aeon skill pack (@thesmithdao)
- #975 fix dashboard auth rows for new harnesses (@Svector-anu)
- #976 docs: add eyebrow to ecosystem (@alexverify)
- #977 docs: list Farcaster Pack in the community skill-pack registry (@amritmirch)
- #978 Add Spoolis Outcome Gate skill pack (@jsfranklin221)
- #979 docs: remove Amper from ecosystem list (@aaronjmars)
- 2026-08-25
Notify dispatcher + seven-harness cleanup
The ./notify path moves behind a credential-owning post-run dispatcher, so Telegram/Discord/Slack/Buzz/email tokens no longer sit in every skill's run env - a skill just writes a structured payload to a queue and the post-run step sends it. The fx harness added the prior window is now normalized as Aeon's seventh across the docs and the local MCP server, and the post-run scorer now grades the notify card a skill actually sent instead of its terse closing recap.
- ./notify now writes one structured payload to a queue and a new post-run notify-deliver.sh is the only place a channel token is consumed - Telegram/Discord/Slack/Buzz/email tokens are dropped from every skill's run env (#912 Phase 2) (#955)
- Security: six dead channel credentials with no in-run consumer (Discord/Slack bot-token + channel-id, and the Beamr gateway/payer vars) removed from the skill run env and the ALL_SECRETS allowlist; the webhook URLs notify actually uses are kept (#912 item 2) (#951)
- Harness inventory normalized to seven with fx as the 7th adapter across docs/harnesses.md, the harness-adapter README, and the harness banner art (#952, #950)
- Fixed: the local MCP server now dispatches the fx harness instead of silently rewriting fx skills to Claude (#953)
- Fixed: the post-run scorer grades the sent notify card (the captured chain artifact) rather than the harness .result recap, so verifiably-sent figures stop being capped as unverifiable (#949)
- Fixed: the dashboard captures Kimi's full credentials directory plus config.toml when building KIMI_AUTH, so a non-mainland kimi.ai login no longer lands authenticated but with no model configured (#956)
- Maintenance: in-repo docs synced for #926-#947 (#948)
8 PRs included
- #949 fix(scorer): grade the sent notify card, not the harness .result summary (@aaronjmars)
- #950 docs: seven-engine harness banner (fx) (@aaronjmars)
- #951 fix(secrets): drop dead channel creds from the in-run skill env (#912 item 2) (@aaronjmars)
- #952 docs: normalize harness count to seven, drop fx singling-out (@aaronjmars)
- #953 fix(mcp-server): dispatch fx harness (@aaronjmars)
- #955 feat(notify): post-run delivery dispatcher, drop channel tokens from skill env (#912 Phase 2) (@aaronjmars)
- #956 fix(dashboard): capture kimi auth config correctly (@Svector-anu)
- #948 docs: sync PRs #926-#947 to aeon docs (@aaronjmars)
- 2026-08-24
skill-article launcher + egress audit
A new skill-article skill turns any skill in an instance into a publish-ready launch article mined from its real run history, and an opt-in egress-audit proxy captures a run's outbound network calls behind an audit boundary. The fx harness added the prior window now shows up in the dashboard picker, and concurrent aeon.yml edits no longer race.
- New skill-article skill (Basics): turn any skill into a publish-ready launch article - proof-stat headline, one contrarian thesis, war stories mined from real memory/logs run history, and the full SKILL.md embedded verbatim; optional Higgsfield title banner (#945)
- Opt-in egress-audit hardening (iron-proxy): a run's outbound network calls are captured and reported behind an audit proxy, off by default (#947)
- Fixed: fx now appears in the dashboard harness picker, so the seventh harness is actually selectable (#943)
- Fixed: the dashboard locks aeon.yml read-modify-write, so concurrent config edits no longer race and clobber each other (#944)
- Ecosystem: added AgentOS (#946)
5 PRs included
- #943 fix(dashboard): fx never showed up in the harness picker (@Svector-anu)
- 2026-08-24
Vercel fx harness + secretcurl leak fix
aeon adds fx - Vercel's native Zig coding-agent CLI - as a seventh run-harness, alongside a security fix that kept curl-substituted secrets out of the process argv where ps/proc could see them. The same window closes three dispatch-correctness bugs (duplicate Telegram redelivery, racing GitHub-issue creates, and a concurrency-group collision across different skill targets) plus a Windows Connect/OAuth fix batch.
- fx - Vercel's native Zig coding-agent CLI - joins Claude/Grok/Codex/Pi/Vibe/Kimi as a 7th run-harness, verified against a locally-built binary (#941)
- Security: secretcurl no longer leaks its substituted secret into curl's own process argv, where any other process could read it via ps or /proc (#935)
- Fixed: the Telegram webhook now dedupes redelivered updates by update_id, so a slow response no longer re-dispatches the same update (#937)
- Fixed: racing state_store/health_issue 'ensure' calls no longer create duplicate GitHub issues for the same title (#936)
- Fixed: the skill-runner concurrency group is now scoped by target too, so dispatching the same skill at two different vars no longer collides (#934)
- Fixed: Bash(cd:*) is granted again, restoring the documented one-cd-per-call workaround for the sandbox's compound-command denial (#933)
- Fixed: failed-dispatch diagnostics are no longer truncated to the front of the output, so the actual error fields survive logging (#932)
- Fixed: Windows Connect OAuth truncation, a setup-token timeout, config line-folding, Foundry install, and mainnet-flag masking (#930)
- Dashboard auto-allowlists MCP secret names into the run workflows, closing the gap where a connected key-based MCP couldn't be seen by headless runs (#931)
- memory-flush's mechanical bookkeeping moved out of the LLM into a deterministic, watermark-tracked script (#938)
- Maintenance: in-repo docs synced for #890-#925, a README Codex-plugin note, the HOL plugin-scanner workflow added then dropped same-day, docs asset refresh/cleanup, and state-store test hardening (#926, #927, #928, #929, #939, #940, #942)
17 PRs included
- #926 docs: sync PRs #890-#925 to aeon docs (@aaronjmars)
- #927 docs(readme): note the operator console installs as a Codex plugin too (@aaronjmars)
- #928 ci: scan the operator-console plugin with the HOL AI Plugin Scanner (@aaronjmars)
- #929 chore: drop the HOL plugin-scanner workflow + config (@aaronjmars)
- #930 fix: Windows Connect OAuth, setup-token timeout, config line-folding, Foundry install, mainnet flag masking (@aaronjmars)
- #931 feat(dashboard): auto-allowlist MCP secret names into the run workflows (@aaronjmars)
- #932 fix(harness): stop truncating diagnostic output on every failed dispatch (@Svector-anu)
- #933 fix(skill-mode): grant Bash(cd:*) - silently denying entire compound commands (@Svector-anu)
- #934 fix(aeon): scope the skill-runner concurrency group by target too (@Svector-anu)
- #935 fix(secretcurl): keep substituted secrets out of curl's own argv (@Svector-anu)
- #936 fix(state_store,health_issue): converge racing issue-store ensures (@Svector-anu)
- #937 fix(webhook): dedupe Telegram updates by update_id before dispatch (@Svector-anu)
- #938 improve(memory-flush): deterministic prep + structured watermark (@aaronjmars)
- #939 Remove unused docs/assets images (@aaronjmars)
- #940 Refresh providers + free-aeon docs images (@aaronjmars)
- #941 feat(harness): add fx (vercel) as a 7th harness (@Svector-anu)
- #942 test(state-store,health-issue): skip before-side unless base ref is truly pre-fix (@aaronjmars)
- 2026-08-20
Self-governance controls and Codex reach
Aeon gains the self-governance layer from the chassis porting plan - chain steps route on the Haiku quality score, reactive failure handlers know which skill tripped them, self-authored skills pass a dry-run gate before auto-merge, and every privileged action is audit-logged. The operator skill also reaches Codex, the vuln-scanner adds an agentic logic audit and a deliverability gate, and the GitHub token model is corrected to a single classic PAT.
- Chain steps can now branch on the Haiku quality score Aeon already computes - `when: "score > 3"` on a chain step routes good output to a polish pass and weak output to a rewrite, turning the 1-5 grade from a chart into a control-flow edge (#911)
- Reactive failure handlers now learn which skill tripped them (passed as the handler's `var`), and reactive is documented as the blessed per-skill failure edge (#910)
- `validate-config` now fails CI on a dangling reactive-trigger reference or a mistyped `when:` condition, closing a silent no-op path (#907)
- Fixed reactive `success_rate` conditions, which the scheduler silently dropped; single-condition evaluation moved to a tested `reactive_when.sh` covering all three documented conditions (#906)
- A dry-run gate runs self-authored skills (`create-skill`, `self-improve`) against synthetic secrets and structural pass checks before their auto-merging PR opens (#914)
- A structured, append-only audit log records every privileged action (notify, secretcurl) with secret names only - values are scrubbed in raw, base64, and url-encoded forms (#908)
- The `/aeon` operator skill now installs on Codex too, and the repo ships a root `llms.txt` doc map any coding agent can fetch first to orient (#919)
- A generated `harness-adapter/harnesses.json` capability manifest makes the six adapters' facts (token cost, read-only enforcement, MCP flavor, auth) queryable in one CI-validated file (#916)
- `aeon-update` now 3-way merges an operator-customized file that upstream also changed (a hand-narrowed `aeon.yml` merges cleanly) instead of dropping it to a whole-file CONFLICT (#903)
- `vuln-scanner` gained an A3.6 agentic logic audit - source-to-sink reasoning over a repo's real entrypoints for the authorization and business-logic bugs the syntactic and fuzz passes miss (#894)
- `vuln-scanner` now confirms a maintainer domain can actually receive mail (DoH MX/A check) before spending its one daily autonomous-disclosure send slot (#895)
- Ported vuln correctness fixes from the aeon-vuln instance: flat-array scan-history reads and multi-prefix security-PR matching in `vuln-tracker`, osv-scanner v2 in `vuln-scanner` (#890)
- The GitHub token model is corrected to a single classic PAT (`repo` + `workflow`); `GH_READ_PAT` / `GH_SECRETS_PAT` fold into `GH_GLOBAL`, and `bd-radar` no longer false-alarms on the unset read token (#905, #909)
- The post-run quality scorer now grades the full output (head 10KB + tail 4KB, not just the first 3000 bytes), aligns to STRATEGY.md, and flags fabricated IDs and figures (#921)
- The README leads with an agent-onboarding callout (read aeon.fun/skills/aeon.md and follow it) and a 'six engines, one socket' harness section; ~2.6M of oversized banner assets trimmed (#922)
- Security hardening: all GitHub Actions SHA-pinned to immutable refs, codex install scripts blocked, the eyebrow download SHA256-pinned, and the messages.yml secret dump narrowed to a named allowlist (#904, #917, #918)
- Maintenance: model pins refreshed to the current generation, the skill-run timeout raised to 30m, jittered cron-state backoff, and assorted ops guards and CI fixes (#891, #892, #893, #896, #897, #898, #899, #900, #901, #902, #915, #920, #923, #924, #925)
34 PRs included
- #890 fix(vuln-tracker,vuln-scanner): port scan-history, PR-match, and osv-scanner robustness from aeon-vuln (@aaronjmars)
- #891 chore: refresh hardcoded model pins to current generation (@aaronjmars)
- #892 chore: drop fable-5 from venice passthrough, refresh fork-fleet examples (@aaronjmars)
- #893 chore: switch Opus pins from opus-5 to opus-4-8 (@aaronjmars)
- #894 feat(vuln-scanner): add A3.6 agentic logic audit alongside the fuzz pass (@aaronjmars)
- #895 feat(vuln-scanner): DoH MX/A deliverability gate before autonomous disclosure email (@aaronjmars)
- #896 fix: unbreak main CI (stale harness-resolution test + eyebrow lockfile drift) (@aaronjmars)
- #897 docs(resolve-harness): remind to sync the test + eyebrow lock on a model-pin change (@aaronjmars)
- #898 fix(aeon.yml): rm ./secretcurl before commit like ./notify (@aaronjmars)
- #899 fix(skill_mode): grant ./scripts/skill-runs in the base tool tier (@aaronjmars)
- #900 chore(harness): 30m skill-run timeout (harness 1800s, job 50m) (@aaronjmars)
- #901 fix(cron-state): jittered backoff + 10 retries for commit-race (@aaronjmars)
- #902 fix(notify): add -h/--help guard so a usage probe never broadcasts (@aaronjmars)
- #903 feat(aeon-update): 3-way merge OWNED conflicts + eyebrow-lock fail-safe (@aaronjmars)
- #904 fix(security): narrow messages.yml ALL_SECRETS to named allowlist (@aaronjmars)
- #905 docs: single classic PAT (repo+workflow) for GH_GLOBAL (@aaronjmars)
- #906 fix(scheduler): make reactive success_rate condition actually fire (@aaronjmars)
- #907 feat(validate-config): validate reactive-trigger references and conditions (@aaronjmars)
- #908 feat(audit): structured audit log of privileged actions (@aaronjmars)
- #909 fix(bd-radar,fleet-control): GH_GLOBAL fallback for private reads + silence false unset-GH_READ_PAT alarms (@aaronjmars)
- #910 feat(scheduler): reactive handler learns which skill tripped it (item 3) (@aaronjmars)
- #911 feat(chains): verdict routing on Haiku scores (when: on chain steps) (@aaronjmars)
- #914 feat(dry-run): gate self-authored skills before auto-merge (@aaronjmars)
- #915 fix(workflow): bound apt installs so a dpkg-lock stall can't eat the job wall (@aaronjmars)
- #916 feat(harness-adapter): generated capability manifest (harnesses.json) (@aaronjmars)
- #917 security: SHA-pin all GitHub Actions to immutable commit refs (@aaronjmars)
- #918 security: block codex install scripts + SHA256-pin eyebrow download (@aaronjmars)
- #919 feat: Codex plugin + repo llms.txt (@aaronjmars)
- #920 fix(dashboard): keep feed card content inside its box (@aaronjmars)
- #921 fix(scorer): grade full output, align to strategy, flag fabrication (@aaronjmars)
- #922 docs(readme): agent-onboarding callout + harness section + asset optimization (@aaronjmars)
- #923 docs(readme): drop harness list from agent callout (@aaronjmars)
- #924 docs(readme): rename harness section heading (@aaronjmars)
- #925 docs(readme): move harness section under skill packs (@aaronjmars)
- 2026-08-17
Operator skill as a plugin, OpenRouter attribution
The /aeon operator skill is now installable as a Claude Code plugin from any folder, OpenRouter gateway traffic is attributed to Aeon on the public app leaderboard, and the pi + OpenRouter onboarding path is fixed end to end. aeon-update also stops silently deleting a still-enabled skill retired upstream, and five ecosystem partners land.
- The /aeon operator skill ships as an installable Claude Code plugin - `/plugin marketplace add aeonfun/aeon` then `/plugin install aeon@aeon`, versioned and updatable, from a self-contained plugin/ subdirectory that never pulls in the framework catalog (#884, #885)
- OpenRouter gateway requests now carry HTTP-Referer + X-Title attribution headers, ranking aeon's usage on OpenRouter's public app leaderboard instead of counting as anonymous volume; overridable per fork (#881)
- Fixed pi + OpenRouter onboarding: tsx is now a runtime dependency (the container bootstrap dropped it as a devDependency and crashed the CLI), and the dashboard run-gate no longer misreports a flaky secrets read as "No provider key set" (#882)
- aeon-update no longer silently deletes a currently-enabled skill retired upstream - the case is downgraded to a loud CONFLICT the operator cannot merge past unnoticed (#874)
- Five ecosystem partners added - AgentLink, AI2Human, Mneme, Skim, and TaskMarket (#880)
- Documented Langfuse v4 compatibility: the OTLP ingestion contract is unchanged and existing keys keep working across the Nov 2026 Cloud cutover (#883)
- Maintenance: nanoid security bump in the remotion project, a ponytail-audit dead-code sweep (net -444 lines), and PR-scoped CI concurrency (#879, #886, #887)
10 PRs included
- #884 feat: package aeon operator skill as a Claude Code plugin (@aaronjmars)
- #885 docs: document the aeon setup skill as an installable Claude Code plugin (@aaronjmars)
- #881 Tag OpenRouter traffic for the app leaderboard (@aaronjmars)
- #882 fix: pi/openrouter onboarding (CLI tsx runtime + dashboard run-gate) (@aaronjmars)
- #874 fix(aeon-update): don't silently delete a currently-enabled skill retired upstream (@aaronjmars)
- #880 docs(ecosystem): add AgentLink, AI2Human, Mneme, Skim, TaskMarket (@aaronjmars)
- #883 docs(langfuse): note v4 compatibility + ingestion-version header (@aaronjmars)
- #879 security: bump nanoid to 3.3.18 (GHSA-2v37-7h3g-55p8) (@aaronjmars)
- #886 refactor: ponytail-audit verified dead-code cuts (net -444) (@aaronjmars)
- #887 ci: add PR-scoped concurrency to lint/check workflows (@aaronjmars)
- 2026-08-17
In-repo docs catch up to Aug 10 batch
CHANGELOG.md inside aeonfun/aeon now records the taskmarket-delegate, you-web-search, and hunter-22 skills, the cargo-fuzz scanning addition, the bin/add-skill fix, and the ALL_SECRETS security fix - bringing the repo's own changelog in sync with what this site already carried. The skill secrets reference gains two new entries.
- In-repo CHANGELOG.md catches up: taskmarket-delegate + you-web-search skills, hunter-22 and the ALL_SECRETS security fix backfilled, cargo-fuzz scanning, bin/add-skill fix, nanoid patch (#873)
- Skill secrets reference gains YDC_API_KEY (you-web-search) and TASKMARKET_API_KEY (taskmarket-delegate) (#873)
1 PR included
- #873 docs: sync PRs #795-#871 to aeon docs (@aaronjmars)
- 2026-08-15
TaskMarket + You.com skills, cargo-fuzz scanning
Two new skills land - taskmarket-delegate hands low-confidence work to the TaskMarket agent-worker market, and a previously-undocumented you-web-search adds an optional You.com web source - taking the catalog to 75. vuln-scanner gains the ability to run a scanned repo's own cargo-fuzz harnesses, and a broken bin/add-skill that couldn't install from the standard skills/ layout is fixed.
- New skill taskmarket-delegate - browses, ranks, and delegates work to the TaskMarket agent-worker market (winnable-first, no key for read-only browse), with create/submit gated behind explicit operator authorization; catalog grows to 75 skills (#865)
- New skill you-web-search - an optional You.com-backed web search (api.you.com/v1/search) giving operators a structured, current web source, disabled by default and gated on YDC_API_KEY; it shipped Aug 1 but had gone undocumented until now (#795)
- vuln-scanner now runs a scanned repo's own cargo-fuzz harnesses in scan arm A - seeding the corpus from the repo's fixtures and triaging any crash with full rigor - a deliberate step up from read-only static scanning to executing the target's own code inside the sandboxed run (#863, #868)
- Fixed bin/add-skill: it could not install from the standard skills/
/SKILL.md layout the whole catalog uses (its find glob was one level too shallow), so every repo reported "No skills found" (#866) - Finance District added to the ecosystem page - its Agent Wallet is in the core catalog and launched as a supported wallet on aeon (#869)
- Maintenance: patched nanoid security advisories in the dashboard (#871)
7 PRs included
- #865 feat(skills): add taskmarket-delegate skill (browse/create/submit TaskMarket tasks) (@Autonomy-Labs-Tech)
- #795 feat: add optional You.com web search integration (@mouse-value-add)
- #863 vuln-scanner: fuzz targets a repo already ships (cargo-fuzz) (@Svector-anu)
- #868 vuln-scanner: stage cargo-fuzz toolchain + widen sandbox grant (@Svector-anu)
- #866 fix(add-skill): enumerate and install skills under skills/ (was broken for all repos) (@Autonomy-Labs-Tech)
- #869 docs: add Finance District to ECOSYSTEM.md (@raul1stdigital)
- #871 fix(deps): patch nanoid security advisories (@aaronjmars)
- 2026-08-10
Bounty-discovery skill, secrets fix, README reorg
A new hunter-22 skill turns bounty discovery into a one-tap vuln-scanner audit, matching candidates against the agent's real capabilities and dropping content/social bounties wearing a code-audit costume. The same window closes a real credential-exposure bug - serializing the entire secret store into a workflow env var had silently taken two public instances offline since Jul 30 - and continues the front-page rebuild with another eighteen presentation-only PRs.
- New skill hunter-22 - calls ClawHunter's bounty-discovery API, triages against real capabilities, and drops a one-tap "Audit owner/repo" button that dispatches vuln-scanner on matching bounties; catalog grows to 74 skills (#864)
- Fixed a workflow credential-exposure bug: ALL_SECRETS serialized the entire secret store into an env var, tripping GitHub's anti-abuse hold and silently taking two public instances offline since Jul 30 - now built from an explicit allowlist (#819)
- Headline skill count expressed as a stable "60+" floor on the surfaces CI doesn't guard, so it stops drifting stale between catalog updates (#859)
- README front-page rebuild continues: docs pill nav, more prose trimmed, Community/Proof-of-work/Why sections reordered and re-bannered - eighteen more presentation-only PRs (#836-#856)
20 PRs included
- #864 hunter-22: bounty discovery with a one-tap audit handoff to vuln-scanner (@Svector-anu)
- #819 fix(ci): build ALL_SECRETS from an explicit allowlist, not toJSON(secrets) (@aaronjmars)
- #859 docs: express headline skill count as a stable 60+ floor (@aaronjmars)
- #856 docs: keep autonomy banner with Why (@aaronjmars)
- #855 docs: move Proof of work under Why (@aaronjmars)
- #854 docs: move Why section up under the catalog links (@aaronjmars)
- #853 docs: swap Community X card (@aaronjmars)
- #852 docs: swap X + Bankr cards, drop good-first-issues link (@aaronjmars)
- #851 docs: Community image cards + contributors banner (@aaronjmars)
- #849 docs: name secured orgs in Proof, reword scorer + products (@aaronjmars)
- #848 docs: Proof of work banner + heals-itself loop art (@aaronjmars)
- #847 docs: drop Add more skills, refresh guardrails + replicates (@aaronjmars)
- #846 docs: refresh 6-packs banner + trim skill-file line (@aaronjmars)
- #845 docs: drop Community Packs section, tidy Docs + Integrate (@aaronjmars)
- #844 docs: refresh 6-packs, never-sleeps, ships-work banners (@aaronjmars)
- #842 docs: refresh autonomy + anatomy banners (@aaronjmars)
- #841 docs: trim skill example, reorder sections, one-line footer (@aaronjmars)
- #840 docs: quickstart strip, 6-packs banner, refreshed skill-file art (@aaronjmars)
- #837 docs: cut the wall of text (trim + collapse) (@aaronjmars)
- #836 docs: Docs pill nav (replace Reference list) (@aaronjmars)
- 2026-08-06
Five instance skills ported into the framework
Five skills battle-tested on a live Aeon instance land in the framework, generalized for any operator: an autonomous cloud-cost analyst, a competitor-page watcher, and three media skills (Higgsfield generative image/video, a Remotion MP4 renderer, and a weekly token-usage card). The dashboard gains a one-click Higgsfield MCP connection and two new secrets. The catalog grows to 73 skills.
- New skill spend-watch - autonomous cloud-cost analyst across Neon, Vercel, Railway, and GitHub Actions: attributes spend to the biggest drivers and ranks dollar-figured recommendations by real signal, with safe cost levers behind arm: (dev pack, disabled by default) (#860)
- New skill competitor-monitor - snapshots competitor pages (pricing, headings, CTAs, new/removed pages, title/meta) and reports only what changed since the last run; read-only, stdlib scraper (#860)
- New skill higgsfield - generative image and video (text-to-image, text-to-video, image-to-video with motion control) via the Higgsfield MCP, credit- and prompt-gated to at most two outputs per run (#860)
- New skill remotion - renders a short MP4 from an agent-authored storyboard via a bundled Remotion project and delivers it by URL, no external generative API (#860)
- New skill weekly-aeoncard - a weekly token-consumption recap rendered as a shareable SVG card from the run ledger (#860)
- Dashboard wiring: the Higgsfield hosted OAuth MCP is one-click connectable, and NEON_API_KEY + RAILWAY_TOKEN join the secrets vault (#860)
- Catalog grows to 73 skills (Dev 11, Productivity 10) (#860)
1 PR included
- #860 feat(skills): add spend-watch, competitor-monitor, higgsfield, remotion, weekly-aeoncard (@aaronjmars)
- 2026-08-05
README brand refresh, three new skills
The README is rebuilt around an animated hero and section-banner art with a pill navigation, trimmed to a tight prose density and the longer-form detail moved into docs/. The same batch adds three skills - video-script, aeon-update, and pack-submit - registers the Skim Clean Reads community pack, and hardens the memory-flush garbage-collection pass. The catalog grows to 68 skills.
- README brand refresh: animated hero, section-banner art, pill navigation, and a compare-vs-Claude-Code/Hermes/OpenClaw pointer - presentation only, no capability change (#833-#857)
- New skill video-script - turns a repo, product page, or topic into a receipts-first, recording-ready video script, verifying every number against the live source in-run (#835)
- New skill aeon-update - the downstream counterpart to fork-fleet: pulls the parent framework's shipped changes down into an instance as one reviewable PR (#832)
- New skill pack-submit - the inverse of install-skill: publishes one of the agent's own skills as a standalone community pack and opens the registry PR (#831)
- Community skill pack registered: Skim Clean Reads - clean-markdown web reads via x402, ~4x smaller than raw HTML, $0.002 USDC on Base (#829)
- memory-flush hardened: stamps the consolidation date on every flush, scans an adaptive window, de-duplicates before writing, and rotates its logs (#828)
- Catalog grows to 68 skills (Core 12, Evolution 9, Basics 17) (#831, #832, #835)
- Maintenance: webhook Dependabot batch plus two CI changes (#826, #827, #839)
14 PRs included
- #857 docs: compare vs Claude Code, Hermes, OpenClaw; drop Active forks (@aaronjmars)
- #850 docs: add Community + We love contributors, reorder Why (@aaronjmars)
- #843 docs: refresh quickstart art + fix stale Proof numbers (@aaronjmars)
- #838 docs: cut README prose to MiroShark density, relocate detail to docs (@aaronjmars)
- #835 feat(skills): add video-script - receipts-first video scripts from a repo, URL, or topic (@NurstarK)
- #834 docs: section art + header polish (@aaronjmars)
- #833 docs: brand refresh for README header - animated hero + pill nav (@aaronjmars)
- #832 create skill: aeon-update (downstream framework updater) (@aaronjmars)
- #831 feat: add pack-submit skill - publish a local skill as a community pack (@aaronjmars)
- #829 Add community skill pack: Skim Clean Reads (pay-per-call web reads via x402) (@JessieJanie)
- #828 feat(memory-flush): stamp consolidation date, adaptive window, dedup, log rotation (@aaronjmars)
- #839 ci: state egress-parser scope; gate lockfile coverage (@alexverify)
- #827 ci: drop daily cron from Setup Telegram Commands (@aaronjmars)
- #826 fix(webhook): clear 6 Dependabot alerts (undici, @opentelemetry/core) (@aaronjmars)
- 2026-08-04
Spec-form skills, OpenTelemetry, Buzz channel
Aeon drops OKF entirely and moves all 65 skills to the Agent Skills open standard, so every skill passes the official spec validator. The same batch wires OpenTelemetry across the Node services and the non-claude harnesses, adds Buzz (Block's Nostr-relay workspace) as an outbound notification channel, gives every skill its own icon, recalibrates the skill security scanner to fire on real sinks, corrects the read-only persistence contract, and teaches the setup skill to mine your Claude Code history for work worth automating.
- OKF removed globally and all 65 skills adopt the Agent Skills open-standard frontmatter, passing the official skills-ref validator (#824)
- OpenTelemetry now traces the dashboard, MCP server, and webhook, plus a coarse gen_ai span per run for the grok/codex/pi/vibe/kimi harnesses - opt-in, numeric usage only (#821, #823)
- Buzz (Block's self-hostable Nostr-relay workspace) joins Telegram/Discord/Slack/email as an outbound ./notify channel, signed with the agent's own keypair (#822)
- The setup skill gains Mode 8 - mine your past Claude Code chats to surface recurring work worth turning into a scheduled skill (#820)
- Every skill gets its own monochrome icon from one canonical catalog source, across the dashboard, README, and docs (#808)
- Skill security scanner recalibrated to fire on dangerous operations rather than ordinary shell syntax (it was failing 65 of 67 first-party skills), with follow-up hardening against suppression-keyword evasion (#811, #813)
- Read-only persistence contract corrected: read-only skills route through ./notify and their captured output, not direct memory/ writes the sandbox refuses; finance-district-mcp also declares onchain_writes (#816, #817, #818)
- Ecosystem logos refreshed; NoelClaw and SyntheticsAI removed (#814)
- Community skill pack registered: AI2Human Create Task (#812)
- Maintenance: 2 dependency bumps + a new CI capability-integrity gate (#809, #810, #815)
16 PRs included
- #824 Adopt Agent Skills spec form; remove OKF globally (@aaronjmars)
- #823 fix(otel): otel-cli epoch seconds.fraction, not raw nanoseconds (@aaronjmars)
- #822 feat(notify): add Buzz as an outbound notification channel (@aaronjmars)
- #821 feat(otel): OpenTelemetry on the Node entry points + non-claude harnesses (@aaronjmars)
- #820 feat(aeon skill): mine Claude Code history for skills to automate (@aaronjmars)
- #818 docs(skills): read-only MCP skills route persistence through output, not memory/ writes (@aaronjmars)
- #817 docs: correct read-only persistence contract (sandbox write-locks memory/ + output/) (@aaronjmars)
- #816 fix(finance-district-mcp): declare onchain_writes + correct notify -f usage (@aaronjmars)
- #815 ci: add eyebrow capability-integrity gate for skills (@alexverify)
- #814 docs: refresh ecosystem logos, drop NoelClaw and SyntheticsAI (@aaronjmars)
- #813 fix(security): close injection-suppression evasion + procsub/quoted-rm gaps (@aaronjmars)
- #812 catalog: register AI2Human Create Task skill pack (@richard7463)
- #811 fix(security): calibrate skill-scan to fire on sinks, not template vars (@alexverify)
- #810 chore(deps): bump the dashboard group in /apps/dashboard with 4 updates (@app/dependabot)
- #809 chore(deps-dev): bump wrangler from 4.112.0 to 4.115.0 in /apps/webhook in the webhook group (@app/dependabot)
- #808 feat(skills): per-skill icons across dashboard, docs, and catalog (@aaronjmars)
- 2026-07-31
Deploy Uniswap v4 hooks from a brief
A new crypto-pack skill, deploy-uni-hook, turns a one-line brief into a live Uniswap v4 hook and test pool on any v4 chain - a pre-audited template or a from-scratch freeform hook, with the hook-address flag bits auto-derived and every deploy gated behind a static audit, a dangerous-pattern scan, a behavioral forge test, and a fork simulation. It is a dry-run by default and only broadcasts on an explicit arm:, stays testnet-only unless a mainnet triple-lock lines up, and brings the catalog to 66 skills.
- New skill deploy-uni-hook generates, audits, simulates, and deploys a Uniswap v4 hook + test pool from a one-line brief, on any v4 chain - catalog now 66 skills (#805)
- Safe by default: every run is a dry-run unless prefixed arm:, and a mainnet broadcast needs arm: + an explicit chain: + a HOOK_MAINNET_OK=1 lock, a triple-lock so a stray message can't reach mainnet (#805)
- Dashboard catalogs the two new HOOK_* secrets (burner key + mainnet lock) and adds a per-skill run-input hint parsed from each skill's var: (#805)
1 PR included
- #805 feat: deploy-uni-hook skill (Uniswap v4 hook generate+audit+simulate+deploy) (@aaronjmars)
- 2026-07-30
Two dev skills, PostHog MCP, circuit breaker
Two new dev-pack skills land. seo-audit runs a daily on-page and technical SEO pass over every page of a site (sitemap discovery, per-page scoring, cross-page checks, a day-over-day diff, and a standing fix list), and posthog-errors sends a weekly cross-project error digest over the PostHog MCP server, which joins the featured servers with one-click Connect and brings the catalog to 65 skills. The scheduler also gains an auto-recovering circuit breaker so a repeatedly-failing skill pauses itself instead of burning every run, and inbound Telegram is now gated on the owner's user ID to close a public-chat button hijack.
- New skills seo-audit + posthog-errors, and PostHog joins the featured MCP servers with one-click Connect - catalog now 65 skills (#802)
- Scheduler trips an auto-recovering circuit breaker on a repeatedly-failing skill, so one broken skill can't burn every run (#801)
- Telegram inbound is gated on the owner's user ID, closing a public-chat button hijack; it defaults to the chat ID for a 1:1 DM (#797)
- Dashboard catalogs the PAGESPEED_API_KEY secret with its brand icon and setup copy, instead of a bare catch-all row (#803)
- Docs: MCP catalog drift fixed, harness framing flattened, a README catalog drift-guard added, and finance-district added to the mcp-oauth table (#794, #796)
- finance-district-mcp registered in aeon.yml so it actually schedules - it shipped in #791 with no entry (#800)
- Maintenance: CI green-up after the Telegram gate, and a dashboard PacksPanel unique-key fix (#798, #799)
9 PRs included
- #803 dashboard: catalog PAGESPEED_API_KEY secret (seo-audit) (@aaronjmars)
- #802 Add seo-audit and posthog-errors skills (dev pack) (@aaronjmars)
- #801 feat(scheduler): auto-recovering circuit breaker for failing skills (@aaronjmars)
- #800 fix(config): register finance-district-mcp in aeon.yml (@aaronjmars)
- #799 fix(dashboard): unique keys in PacksPanel stat grid (@aaronjmars)
- #798 fix(ci): restore green after telegram owner-gate (#797) (@aaronjmars)
- #797 fix(telegram): gate inbound on owner user, not just chat (public-chat button hijack) (@aaronjmars)
- #796 docs(mcp-oauth): add finance-district row to Current catalog table (@aaronjmars)
- #794 docs: fix MCP catalog drift, flatten harness framing, add README catalog drift-guard (@aaronjmars)
- 2026-07-29
Harness MCP + sandbox hardening, new wallet skill
MCP now actually works on codex, grok, and kimi - it was silently dead on all three, reporting the server "not connected" and finishing green with a plausible answer. Every surface now dispatches skills through one harness path, so inbound messages and the local MCP server honor the operator's chosen harness instead of quietly falling back to Claude, and read-only skills are genuinely write-locked on all six harnesses. The batch also adds finance-district-mcp - a multichain non-custodial agent wallet over MCP - bringing the catalog to 63 skills, and gives MCP credentials their own logo'd group in the dashboard Settings.
- MCP now actually works on codex, grok, and kimi - all three failed silently, so a green run was never evidence the tools ran (one even fabricated Hacker News item IDs) (#779, #780)
- Community skill packs install cleanly end to end - five defects fixed; a sweep of all 10 registry packs now installs 52/52 skills, up from 8/52 (#778)
- grok's MCP --trust fix extended to inbound messages and the local MCP server, where MCP had stayed silently dead (#781)
- One run path - messages.yml and apps/mcp-server now dispatch through run-harness, and the MCP server resolves all six harnesses instead of silently running four on Claude (#784)
- Inbound messages now run on all six harnesses - messages.yml had answered codex/pi/vibe/kimi on Claude; harness resolution and CLI install are now shared scripts covered by their first test suites (#789)
- Read-only skills are now genuinely sandboxed on every harness - grok previously had zero runtime enforcement - and notify's queues moved out of the repo into $AEON_PENDING_DIR (#787)
- Docs corrected - the read-only guard they described didn't exist, and the dead grok-args generator is removed rather than rewired (#788)
- Dashboard: connecting a harness account no longer opens two browser tabs, and seven credentials regained their brand icons in Settings (#786)
- Dashboard: MCP credentials get their own logo'd Access Keys group instead of falling into the Skill Keys catch-all (#790)
- New skill finance-district-mcp - a multichain non-custodial agent wallet over MCP (balances, prices, DeFi yields, swaps, x402 payments across EVM, Solana, Bitcoin, and Sui), bringing the catalog to 63 skills (#791)
- A code-quality sweep surfaced two correctness fixes: envelope wrap_raw_output could fabricate a green run (now flagged with a warning marker), and read-only skills ran unsandboxed on the MCP-server path (#792)
- Maintenance: dead GROK_JSON_SCHEMA knob removed, run-grok.sh reduced to setup-only, and a postcss CVE override (#782, #785, #783)
15 PRs included
- #792 optimize: code-quality sweep, plus two correctness fixes it surfaced (@aaronjmars)
- #791 feat(skills): add finance-district-mcp, a multichain agent wallet over MCP (@aaronjmars)
- #790 feat(dashboard): give MCP credentials their own Access Keys group, with logos (@aaronjmars)
- #789 fix(harness): stage all six harnesses on messages.yml via shared resolve/install scripts (@aaronjmars)
- #788 docs: correct grok's read-only story; delete the orphaned grok-args (@aaronjmars)
- #787 fix(security): sandbox read-only runs on every harness; move notify queues out of the repo (@aaronjmars)
- #786 fix(dashboard): stop harness Connect opening two browser tabs, restore Settings icons (@aaronjmars)
- #785 chore(grok): reduce run-grok.sh to setup-only, move its tests to the adapter (@aaronjmars)
- #784 refactor(harness): route messages.yml + mcp-server through run-harness (@aaronjmars)
- #783 fix(deps): bump postcss override past GHSA-r28c-9q8g-f849 (@aaronjmars)
- #782 chore(grok): drop the dead GROK_JSON_SCHEMA knob (@aaronjmars)
- #781 fix(grok): pass --trust on the run-grok.sh path too, not just the adapter (@aaronjmars)
- #780 docs(harnesses): correct the grok MCP section after #779 (@aaronjmars)
- #779 fix(harness): MCP was silently dead on codex, grok and kimi (@aaronjmars)
- #778 fix(packs): make community skill packs installable end to end (@aaronjmars)
- 2026-07-27
Claude 5 default, grok OAuth durability, harness fixes
The model picker now offers only the Claude 5 family (Sonnet 5, Opus 5, Haiku 4.5) and defaults to Sonnet 5 - all earlier variants retired. The same batch fixes three harness-correctness gaps: Grok's rotated OAuth refresh token now persists so GROK_CREDENTIALS survives past its 6-hour lifetime, AGENTS.md is a full CLAUDE.md mirror so non-Claude harnesses load their complete operating manual, and the Run banner now shows the actual resolved model - not the config-default Claude id.
- Model picker now offers the Claude 5 family only; default switches to Sonnet 5 (#775)
- Grok OAuth refresh token now persists across runs so GROK_CREDENTIALS survives past its 6h lifetime (#773)
- AGENTS.md is now a full CLAUDE.md mirror so non-Claude harnesses load the complete operating manual (#770)
- Run step banner now shows the actual resolved harness model, not the config-default Claude id (#769)
- Dashboard MCP controls disabled on the Codex harness, where MCP calls silently cancel without stdin (#771)
- Secrets-write PAT renamed MCP_SECRETS_PAT → GH_SECRETS_PAT; now one token covers MCP OAuth and Grok refresh (#774)
- harness-adapter docs drop three pointers to repos that 404 - no more ghost contribution paths (#776)
- /aeon setup skill count corrected 61 → 62 across setup skill, README, and all self-references (#772)
- External contributor amir-rezaei fixes CHANGELOG.md grammar: 'serving latest main' → 'serving the latest main' (#764)
- Maintenance: 1 CI optimization (OKF validation fires only on .md file changes; #777)
10 PRs included
- #777 ci(okf): trigger only on markdown changes under the OKF roots (@aaronjmars)
- #776 docs(harness-adapter): drop pointers to repos that no longer exist (@aaronjmars)
- #775 feat(models): offer the Claude 5 family only, default to Sonnet 5 (@aaronjmars)
- #774 chore(secrets): rename MCP_SECRETS_PAT -> GH_SECRETS_PAT, standardize for MCP + Grok (@aaronjmars)
- #773 fix(grok): persist rotated OAuth refresh token so GROK_CREDENTIALS survives past 6h (@aaronjmars)
- #772 docs(skills): correct /aeon setup skill count 61 -> 62 (@aaronjmars)
- #771 feat(dashboard): disable MCP controls on the Codex harness (@aaronjmars)
- #770 fix(harness): AGENTS.md = full CLAUDE.md mirror, load exactly one per run (@aaronjmars)
- #769fix(aeon): Run banner names the resolved harness model, not the config-default claude id (@aaronjmars)
- #764 docs: add missing article 'the' before 'latest main' in CHANGELOG.md (@amir-rezaei)
- 2026-07-24
In-repo docs catch up to harness batch
CHANGELOG.md inside aeonfun/aeon now carries the full multi-harness batch (#757–#767) - Added, Changed, Security, and Maintenance sections - so what's recorded in the repo matches what shipped. The aeon setup skill's secrets reference is refreshed in the same pass.
- In-repo CHANGELOG.md updated with the #757–#767 batch (multi-harness, aeon-doctor, setup skill, CVE patches, BASESCAN rename); aeon setup skill secrets reference refreshed (#768)
1 PR included
- #768 docs: sync PRs #757–#767 to aeon docs (changelog, dashboard, BASESCAN rename) (@aaronjmars)
- 2026-07-23
Multi-harness support, aeon-doctor, in-repo setup skill
Skills now run on any of six agent CLIs - Claude Code, Grok, Codex, Pi, Vibe, and Kimi - behind one {result, usage, session_id} contract via the new harness-adapter, with the four OpenRouter-backed harnesses sharing a single OPENROUTER_API_KEY or running on their own native login. The batch also adds aeon-doctor (a static config linter that catches the silent-misconfig class no run-based health skill can see), ships the /aeon setup skill in-repo, completes the BASESCAN_KEY → BASESCAN_API_KEY secret rename, and patches two high-severity dashboard CVE classes.
- Multi-harness support - run skills on Claude Code, Grok, Codex, Pi, Vibe, or Kimi behind one {result, usage, session_id} contract via harness-adapter; all six verified live on GitHub Actions (#765, #767)
- The four OpenRouter-backed harnesses (codex/pi/vibe/kimi) share one OPENROUTER_API_KEY or run on their own native login - Connect ChatGPT / Kimi / provider key (#765)
- aeon-doctor - a read-only static config-correctness linter for unquoted schedules, duplicate keys, unconfigured skills, mode typos, and broken requires/MCP refs; notifies only on problems (#761)
- The /aeon setup skill now ships in-repo at .claude/skills/aeon/ and is documented, naming the coding agents that can drive an install: Claude Code, Codex, Hermes, OpenClaw (#762, #763)
- Dashboard - per-skill model picker now tracks the active harness (#766)
- Secret rename BASESCAN_KEY → BASESCAN_API_KEY, following the
_API_KEY convention (#760) - Maintenance: two high-severity dashboard CVE patches (sharp/libvips, Next.js 16.2.11) and an 8-dimension repo cleanup (#757, #758, #759)
10 PRs included
- #767 docs: document the six-harness setup (README + aeon.yml) (@aaronjmars)
- #766 fix(dashboard): per-skill model picker tracks active harness (@aaronjmars)
- #765 feat(harness): multi-harness support (codex/pi/vibe/kimi) via harness-adapter (@aaronjmars)
- #763 docs(aeon-setup): name supported agents (Claude Code, Codex, Hermes, OpenClaw) (@aaronjmars)
- #762 docs: ship the /aeon setup skill in-repo + document it (@aaronjmars)
- #761 feat(skills): add aeon-doctor static config-correctness linter (@aaronjmars)
- #760 refactor(secrets): rename BASESCAN_KEY -> BASESCAN_API_KEY (@aaronjmars)
- #759 fix(dashboard): bump next 16.2.10 -> 16.2.11 to clear high-severity CVEs (@aaronjmars)
- #758 fix(dashboard): patch 2 high-severity sharp/libvips CVEs (@aaronjmars)
- #757 optimize: repo-wide cleanup pass (8 dimensions) (@aaronjmars)
- 2026-07-21
App CI gating, config fixes, test expansion
Every app under apps/ now has a CI gate - dashboard typechecks, tests, and builds; cli typechecks; mcp-server builds; webhook bundles through wrangler - closing the gap that let dependency bumps break silently, and catalog/skill-packs.json gets a validation workflow of its own. The same batch fixes two silent config bugs that stopped aeon enable and aeon schedule from working on freshly added skills, an external contributor expands validate-pack test coverage from 3 to 20 cases, and the README badges get a refresh.
- apps/** now has CI: dashboard typechecks/tests/builds, cli typechecks, mcp-server builds, webhook bundles via wrangler --dry-run (#752)
- catalog/skill-packs.json gated by its own workflow, with validate-skill-packs wired into the test suite (#752)
- Config CLI: enable/schedule now creates missing aeon.yml entries and quotes generated crons (#754)
- TypeScript held on 6.x for apps/dashboard via a Dependabot major-ignore - TS7 breaks the Next.js 16 build (#724)
- External contributor BBridgeers expands validate-pack test coverage from 3 to 20 cases (#751)
- Docs badge added to the README, linking to aeon.fun/docs (#755)
- Badge copy tweaks: Documentation label shortened to Docs, X drops Follow, Bankr reads $aeon on Bankr (#756)
- Maintenance: 4 dependency bumps (tsx, wrangler, actions/setup-node, dashboard group)
10 PRs included
- #756 docs: badge copy tweaks (@aaronjmars)
- #755 docs: add Documentation badge to README (@aaronjmars)
- #754 fix(config): enable/schedule create a missing aeon.yml entry, and quote generated crons (@aaronjmars)
- #753 chore(deps-dev): bump tsx from 4.23.0 to 4.23.1 in /apps/cli in the cli group (@dependabot[bot])
- #752 ci: gate apps/** and catalog/skill-packs.json (@aaronjmars)
- #751 test: expand validate-pack test coverage from 3 to 20 cases (@BBridgeers)
- #746 chore(deps-dev): bump the dashboard group across 1 directory with 4 updates (@dependabot[bot])
- #744 chore(deps-dev): bump wrangler from 4.110.0 to 4.112.0 in /apps/webhook in the webhook group across 1 directory (@dependabot[bot])
- #727chore(actions): bump actions/setup-node from 6 to 7 in the github-actions group across 1 directory (@dependabot[bot])
- #724 chore(deps): hold typescript on 6.x for the dashboard (Next 16 + TS7 breaks build) (@aaronjmars)
- 2026-07-18
Integrate Aeon image, support section, count sync
The README's Integrate Aeon section now shows the aeon-connect visual, all links to the private aeon-connect repo are dropped, and a Support the project section with the wallet address is added. Skill-pack counts are synced to the live catalog: 61 skills total, Basics pack at 15.
- Integrate Aeon section gets an aeon-connect visual and a dedicated Support the project wallet address (#748)
- All links to the private aeon-connect repo dropped; ADK guide updated to generic reference-implementation wording (#749)
- Skill-pack counts synced to catalog: 61 skills total, Basics pack now 15 (#747)
- Orphaned use-this-template.png asset removed from docs/assets (#750)
4 PRs included
- #750 chore: remove unused use-this-template.png asset (@aaronjmars)
- 2026-07-16
One-click MCP OAuth, new MCP skills, ADK
OAuth-gated MCP servers (Base, Robinhood, glim, Executor) now connect in one browser click, with tokens refreshed durably before every run. The same batch swaps in dedicated Robinhood and glim skills, adds Executor Cloud, ships Grok 4.5 in the Grok Build harness, and documents the ADK for building products on top of Aeon.
- One-click OAuth Connect for OAuth-gated MCP servers - authorize once in the browser, tokens captured server-side and stored as repo secrets (#730)
- glim joins Base and Robinhood as a one-click OAuth Connect server (#731)
- Durable OAuth refresh: rotated refresh tokens now persist via MCP_SECRETS_PAT / GH_GLOBAL, fixing 401s one run after Connect (#732)
- MCP panel shows PAT-setup steps (with a clickable link) when no secrets-write token is set, surfaced before the first Connect (#737, #740)
- New robinhood-mcp and glim-mcp skills replace ctrl - on-demand portfolio/trading and cited live-data research (#734)
- Executor Cloud added to the MCP catalog with a read-only executor-mcp skill (#736)
- robinhood-mcp and glim-mcp now send a single notify call per run (#735)
- Grok Build harness supports Grok 4.5 (new default) and retires the deprecated x_search model for grok-4.3 (#725)
- ADK (Aeon Developer Kit) documents building products on top of Aeon via a GitHub App and skill packs (#741, #742, #743)
- MCP catalog, README pack table, and CONFIGURATION docs updated for the new servers and skills (#739, #733)
- Skill runs stamp OKF frontmatter before auto-commit so bare markdown files self-heal (#738)
- Maintenance: 3 CI/chore updates (actions/cache v4 → v6, attestation-gate logging, grok harness log noise)
18 PRs included
- #743 docs(adk): use plain hyphens instead of em dashes (@aaronjmars)
- #742 docs: rename Developer Kit to ADK (Aeon Developer Kit) + add an Integrate Aeon README section (@aaronjmars)
- #741 docs: add Developer Kit - build on Aeon via a GitHub App, the GitHub API, and skill packs (@aaronjmars)
- #740 fix(dashboard): make the PAT setup URL on the MCP panel a clickable link (@aaronjmars)
- #739 docs: cover the new MCP servers + skills (catalog table, README packs, CONFIGURATION) (@aaronjmars)
- #738 fix(workflows): stamp OKF type: frontmatter before auto-commit (@aaronjmars)
- #737 feat(dashboard): replace durable-refresh status line with a PAT setup section on the MCP panel (@aaronjmars)
- #736 feat(mcp): add Executor Cloud to the MCP catalog + executor-mcp skill (@aaronjmars)
- #735 fix(skills): one notify call per run in robinhood-mcp + glim-mcp (@aaronjmars)
- #734 feat(skills): swap ctrl for robinhood-mcp + glim-mcp MCP skills (@aaronjmars)
- #733 docs(mcp-catalog): record Robinhood OAuth mechanics + why no offline_access (@aaronjmars)
- #732 Make MCP OAuth refresh durable for rotating-token providers (@aaronjmars)
- #731 feat(mcp): enable one-click OAuth Connect for glim (@aaronjmars)
- #730 feat(mcp): durable OAuth connect for OAuth-gated MCP servers (@aaronjmars)
- #729 chore(ci): only log the attestation gate when active (attest=true) (@aaronjmars)
- #728 chore(grok): quiet benign harness log notices + drop grok-build from picker (@aaronjmars)
- #726 ci: bump actions/cache@v4 → v6 (drop Node 20 deprecation warning) (@aaronjmars)
- #725 feat(grok): support Grok 4.5 + migrate deprecated x_search model to grok-4.3 (@aaronjmars)
- 2026-07-15
aeonfun org transfer, all links updated
The repo has moved from aaronjmars to the aeonfun org (owned by Aeon Inc) - every self-referential link, badge, install command, and the trusted-sources allowlist updated in one atomic PR. Fork from aeonfun/aeon going forward.
- Repo transferred to aeonfun org; all GitHub links, badges, and bin/add-skill install commands updated (#721)
- Maintenance: 2 dependency bumps (typescript 6.0.3 → 7.0.2, wrangler 4.107.0 → 4.110.0)
3 PRs included
- #721 chore: update attribution to aeonfun / Aeon Inc (@aaronjmars)
- 2026-07-12
README overhaul, optimize round 2, v0.1.0 changelog
The README dropped from 733 to 330 lines as reference docs moved to dedicated pages; a second /optimize pass fixed a latent parseContentsList crash and surfaced swallowed errors in the MCP CLI. The same batch adds a v0.1.0 CHANGELOG.md and retires the last postprocess scripts.
- README halved (733 → 330 lines): Advanced reference moved to docs/, gateway/auth story deduped (#700, #706, #708)
- Sharper landing page: Proof of Work section, 1.6M-stars headline, one-liner Community Packs (#701, #711)
- Auth and Notifications setup rewritten as scannable tables with Grok documented (#705)
- CHANGELOG.md added to the repo, seeded with the v0.1.0 entry (#712)
- deploy and token-transfer retire postprocess scripts; both now run in-run (#707)
- /optimize round 2: parseContentsList crash fixed; mcp CLI and outputs route errors now surface (#715, #716)
- Dashboard color tokens unified: ~150 eva-* refs collapsed into single aeon-* scheme (#717)
- Skill scorer no longer flags legitimate no-ops (clean scan, empty inbox) as empty_output (#714)
- Transient skill writes (github-trending, token-movers, write-tweet) pinned to /tmp (#713)
- AgentLink community pack: biomapped on-chain agent identity on Base (#686)
- Stale doc references refreshed across 22 user-facing files: catalog paths and webhook secret corrected (#699)
21 PRs included
- #717 optimize: unify eva-*/aeon-* color tokens into one aeon-* scheme (@aaronjmars)
- #716 fix: surface swallowed errors in mcp CLI + outputs route (@aaronjmars)
- #715 optimize: repo cleanup (8 dimensions) + fix parseContentsList crash (@aaronjmars)
- #714 fix(scorer): flag empty_output only on empty FINAL output, not legitimate no-ops (@aaronjmars)
- #713 fix(skills): route transient skill writes to /tmp, not the repo root (@aaronjmars)
- #712 docs: add CHANGELOG.md seeded with v0.1.0 (@aaronjmars)
- #711 docs(readme): 1.6M-stars headline, Community Packs one-liners, reference to bottom (@aaronjmars)
- #710 docs(readme): em-dashes -> hyphens + new use-template image (@aaronjmars)
- #709docs(readme): show a real skill, fix disclosure substance, drop count-as-quality (@aaronjmars)
- #708 docs(readme): halve the README, move Advanced reference to docs/ (@aaronjmars)
- #707 feat: retire postprocess; run deploy + token transfer in-run (@aaronjmars)
- #706 docs(readme): dedup the gateway/auth story (told 3-4x) (@aaronjmars)
- #705 docs(readme): clearer Authentication + Notifications setup (Grok, clickable links) (@aaronjmars)
- #704 docs(readme): align Proof of work table (strip first-column emoji) (@aaronjmars)
- #703 docs: align pack table, drop self-healing image, steer new skills to community packs (@aaronjmars)
- #701 docs(readme): sharper hero + Proof of work section + quick-start polish (@aaronjmars)
- #700 docs(readme): trim the Advanced section, relocate internals to docs (733 -> 596 lines) (@aaronjmars)
- #699 docs: refresh stale references across user-facing docs (catalog move + webhook secret) (@aaronjmars)
- #698 fix(workflow): align model backstop with config default (opus-4-8 -> sonnet-4-6) (@aaronjmars)
- #697 docs: fix scheduler model, skill count, and stale MCP examples (@aaronjmars)
- #686 Community skill pack listing: AgentLink (techdigger/aeon-skill-pack-agentlink) (@techdigger)
- 2026-07-09
secretcurl auth, headless CLI, dashboard polish
Skills now call authenticated APIs directly via `./secretcurl`, collapsing three pre-run airlock scripts into zero and giving each fork least-privilege key injection by default. The batch also ships a headless `aeon` CLI, a 14-PR dashboard UX overhaul, and Sigstore attestations on every skill-run output.
- `./secretcurl` replaces the XAI pre-run airlock; all 11 social skills call api.x.ai directly (#685, #687)
- CoinGecko, Alchemy, Etherscan, and GitHub reads moved in-run via `./secretcurl`; all prefetch scripts retired (#689, #691)
- Irreversible sends (notify, article, tweets) run in-run; four postprocess scripts deleted (#695)
- Per-skill least-privilege: each skill receives only the API keys it declares in `requires:` (#682, #684)
- CoinGecko demo-key header fixed - free keys were 400'ing silently with the wrong header (#683)
- Headless `aeon` CLI ships - every dashboard feature as a scriptable, server-free command (#676, #677)
- Skill catalog restructured: 59 skills in 6 packs where `category` equals the pack name (#647)
- Sigstore provenance: every skill-run output gets a signed, Rekor-logged attestation (#650, #652, #653)
- Chain-input script injection and arbitrary file read patched (GHSA-h9v2, GHSA-cqvj) (#658, #660, #661)
- Dashboard: enable/disable is now a real toggle switch with live schedule status on the skill page (#673)
- Dashboard copy overhaul: Team→Skills, duty→enabled/disabled, bare text actions → bordered buttons (#664, #669, #670, #671, #672, #674, #675)
- Scheduler and message poller split into independent workflows; fresh-fork DEGRADED state fixed (#649, #678)
- vuln-scanner scan arm made functional: scanner allowlist grant and tool-staging step wired (#693)
- Email notifications migrated from SendGrid to Resend - one outbound-email key covers everything (#680)
- Non-main-ref workflow dispatch no longer breaks Commit and cron-state steps (#694)
- 8-agent optimize sweep: dead code, weak types, orphaned verdikta scaffolding, dead scripts removed (#655, #656, #657, #696)
- Maintenance: 1 CI config update (#659)
49 PRs included
- #696 chore(scripts): remove 2 dead scripts; wire validate-config into CI (@aaronjmars)
- #695 feat(skills): run irreversible sends in-run via secretcurl; retire postprocess scripts (@aaronjmars)
- #694 fix(workflow): don't fail Commit/cron steps on a non-main-ref dispatch (@aaronjmars)
- #693 fix(vuln-scanner): make the scan arm functional (allowlist grant + tool-staging step) (@aaronjmars)
- #692 docs(skills): kill the "sandbox blocks the network" myth (Sandbox note → Network note) (@aaronjmars)
- #691 feat(secrets): read GitHub in-run (bd-radar / fleet / okf); retire all 3 prefetch scripts (@aaronjmars)
- #690 chore(secrets): delete the dead prefetch-xai.sh (skills already tombstone it) (@aaronjmars)
- #689 feat(secrets): route CoinGecko/Alchemy/Etherscan calls through ./secretcurl (non-XAI skills) (@aaronjmars)
- #688 chore(ecosystem): update Root edge (RootAi) logo (@aaronjmars)
- #687 Route all XAI skills through ./secretcurl for direct auth'd API calls (@aaronjmars)
- #685 chore(airlock): remove prefetch-xai.sh - skills call api.x.ai directly (@aaronjmars)
- #684 feat(secrets): shrink static env → activate per-skill key injection (@aaronjmars)
- #683 fix(coingecko): use demo API-key header (free keys were 400'ing) (@aaronjmars)
- #682 Per-skill least-privilege secrets + "under the hood" run summary (@aaronjmars)
- #680 feat(notify): migrate email channel from SendGrid to Resend (@aaronjmars)
- #679 chore(secrets): prune dead skill keys & fix stale catalog descriptions (@aaronjmars)
- #678 fix(heartbeat): warming-up grace so fresh forks don't read DEGRADED (@aaronjmars)
- #677 docs(readme): document the headless `aeon` CLI (@aaronjmars)
- #676 feat(cli): non-interactive `aeon` CLI reusing dashboard lib (read + write, all phases) (@aaronjmars)
- #675 copy(dashboard): schedule Edit→Change schedule, empty var state→No custom settings (@aaronjmars)
- #674 fix(dashboard): scope toggle cursor to pill + skill-settings tweaks (@aaronjmars)
- #673 feat(dashboard): clearer skill page - enable switch, schedule status, obvious var edit (@aaronjmars)
- #672 copy(dashboard): Hire New Member→Add new skill (@aaronjmars)
- #671 copy(dashboard): Assignment brief→Skill settings + var empty-state→Defaults settings (@aaronjmars)
- #670 copy(dashboard): Team→Skills, Hire→Add, Search members→Search (@aaronjmars)
- #669 dashboard: duty→enabled/disabled, Shift→Skill schedule, reorder skill page sections (@aaronjmars)
- #668 dashboard: more-visible Templates buttons + rename skill Remove→Delete (@aaronjmars)
- #667 copy(dashboard): rename Telegram button to 'Register again' + trim helper copy (@aaronjmars)
- #666 fix(dashboard): style remaining inline actions (Set/Edit/Install) + move Re-register button (@aaronjmars)
- #665 fix(dashboard): transparent bordered mini-buttons (match Off Duty pill) (@aaronjmars)
- #664 feat(dashboard): remove Available filter + make inline actions read as buttons (@aaronjmars)
- #663 docs(skills): trim skill descriptions + drop em dashes (@aaronjmars)
- #662 Dashboard copy & layout cleanup (@aaronjmars)
- #661 security(messages): nudge when Discord/Slack poll without an author allowlist (GHSA-252c F5) (@aaronjmars)
- #660 fix(ci): P0 - unbreak aeon.yml + chain-runner.yml (empty ${{ }} in run: comment) (@aaronjmars)
- #659 ci: cache Claude Code global install across skill + message runs (@aaronjmars)
- #658 security: fix chain-input script injection + arbitrary file read (GHSA-h9v2 / GHSA-cqvj) (@aaronjmars)
- #657 optimize: remove orphaned verdikta scaffolding + dead fetch-tweets legacy cache (@aaronjmars)
- #656 optimize: Omit
+ shared capabilities parser (/optimize follow-up) (@aaronjmars) - #655 optimize: dead-code, dedup, weak-types & a sync bug-fix (/optimize cleanup) (@aaronjmars)
- #654 docs(ecosystem): remove Mneme + LawbWorld, update Solvr logo (@aaronjmars)
- #653 fix(attestation): attest an immutable run-scoped snapshot (@aaronjmars)
- #652 feat(attestation): sign a run manifest alongside the output (@aaronjmars)
- #651 docs(attestation): document skill-execution provenance (@aaronjmars)
- #650 feat(workflows): skill-execution attestation (Sigstore provenance) (@aaronjmars)
- #649 refactor(workflows): decouple scheduler from messages (@aaronjmars)
- #648 chore(docs): remove Smithery / MCP Registry submission package (@aaronjmars)
- #647 Skill + pack restructure: 59 skills, 6 packs (category == pack) (@aaronjmars)
- #640 docs(langfuse): record known gaps + decision not to add a cost-proxy sidecar (@aaronjmars)
- 2026-07-06
OKF-native memory, repo compaction, grok-build
Aeon's `memory/topics/` is now an OKF-native knowledge bundle - every concept self-describes with `type:` frontmatter, enforced by a CI gate and exposed via MCP `okf://` resources. In the same batch the repo root compacted 31 → 14 tracked entries, the grok harness gained grok-build model selection, and the skill catalog pruned to 69.
- `memory/topics/` becomes an OKF-native knowledge bundle: `type:` frontmatter on every concept, `okf-validate` CI gate, MCP `okf://` resources (#627, #628, #629)
- Repo root compacted 31 → 14 tracked entries: CLI scripts → `bin/`, registries → `catalog/`, deliverables → `output/` (#607, #616, #617, #618, #619)
- Architecture audit across all 69 skills: silently-bypassed security scanner restored, 3 dead scripts pruned, .gitignore fixed (#620)
- `grok-build` is now a selectable model in the dashboard harness picker (#622)
- Connecting the grok harness in the dashboard auto-switches and pushes the config - no manual step (#624)
- Heartbeat shifted to once daily at 08:00 UTC; staleness heuristic updated from ~8h to ~26h (#625)
- `verdikta-hunter` ships as a prompt-style bounty-discovery skill with hard-capped on-chain execution, contributed by @nigelon11 (#605)
- SECURITY.md and CONTRIBUTING.md added; LICENSE restored to repo root so GitHub detects it; Sponsor button added via FUNDING.yml (#609, #610, #611)
- Skill catalog pruned 94 → 69 (25 removed, incl. 3 Core); community pack registry trimmed 24 → 10 (#603, #600)
- Maintenance: Telegram slash-commands now re-register daily; sync-upstream workflow dropped (no-op on canonical repo); FUNDING.yml location settled; misc admin cleanup (#626, #623, #621, #613, #614, #615, #612, #608, #601, #604)
28 PRs included
- #629 docs(okf): document the OKF-native knowledge bundle in the README (@aaronjmars)
- #628 feat(okf): make all knowledge+operational markdown OKF-conformant in place (@aaronjmars)
- #627 feat(okf): make memory/topics an OKF-native knowledge bundle (@aaronjmars)
- #626 chore(workflows): drop self-referential sync-upstream; daily TG command re-register (@aaronjmars)
- #625 chore(heartbeat): once-daily schedule + 3 code fixes (Paperclip ref, optional RESEND, cron-state guard) (@aaronjmars)
- #624 feat(dashboard): connecting grok harness auto-switches + pushes harness (@aaronjmars)
- #623 fix(dashboard): silence npm allow-scripts warning on ./aeon (@aaronjmars)
- #622 feat: add grok-build as a selectable Grok harness model (@aaronjmars)
- #621 docs: how to add a Grok harness model (@aaronjmars)
- #620 chore: architecture audit - restore security scanner, prune orphans, fix output/gitignore drift (@aaronjmars)
- #619 chore: compact repo root round 4 - .outputs/ → output/.chains/ (@aaronjmars)
- #618 chore: compact repo root round 3 - assets → docs/assets (fixes #617 logo) (@aaronjmars)
- #617 chore: compact repo root round 2 - ECOSYSTEM/SHOWCASE/examples → docs/ (@aaronjmars)
- #616 chore: compact repo root - unify output/, relocate templates/config (@aaronjmars)
- #615 chore: reorder FUNDING.yml (aeon.fun first) (@aaronjmars)
- #614 chore: move FUNDING.yml back to .github/ (@aaronjmars)
- #613 chore: move FUNDING.yml to repo root (@aaronjmars)
- #612 docs: remove PRs-welcome badge from README (@aaronjmars)
- #611 chore: add FUNDING.yml (Sponsor button) (@aaronjmars)
- #610 fix: move LICENSE back to repo root so GitHub detects it (@aaronjmars)
- #609 chore: add SECURITY + CONTRIBUTING, consolidate community docs under .github/ (@aaronjmars)
- #608 chore(repo): health files → .github/, remove dead Jekyll site + wallet-profile (@aaronjmars)
- #607 chore(repo): declutter root - move CLI into bin/, registries into catalog/ (@aaronjmars)
- #605 feat(skills): verdikta-hunter - prompt-style rework with hard-capped on-chain execution (reworks #582) (@nigelon11)
- #604 docs: clean dangling refs to removed skills (SHOWCASE + smithery) (@aaronjmars)
- #603 chore(skills): retire 25 skills (94 → 69), incl. 3 core (@aaronjmars)
- #601 chore(showcase): drop UIZorrot/aeon fork row (@aaronjmars)
- #600 chore(registry): prune community skill packs 24 → 10 (@aaronjmars)
- 2026-07-03
API-key audit, repair ledger, cadence-free shiplog
The API-key layer got a full audit across all 102 skills - routing is verified, vault descriptions corrected, and one orphaned key removed. shiplog collapses into a single cadence-agnostic skill that covers whatever window has elapsed since it last ran, and a public self-repair ledger backported from aaeron tracks every skill write, review, merge, and prune.
- API-key routing audited across all 102 skills: GH_READ_PAT added where missing, orphan removed, vault descriptions corrected to match real usage (#595)
- shiplog is now cadence-agnostic - one skill covers the full elapsed window since the last run, replacing the separate weekly and daily variants (#569)
- self-repair-ledger backported from aaeron: a dated public ledger of every skill the agent wrote, reviewed, merged, or pruned, auto-committed to the repo (#568)
- Phylax audit gains a hosted-engine fast path - canonical ALLOW/WARN/DENY verdict from the Phylax API, with inline 3-scanner fallback if the API is unreachable (#559)
- README and docs updated: default model corrected to claude-sonnet-4-6, stale skill counts synced to 102 (#596)
- pyyaml pinned to ==6.0.2 in CI - the last unpinned CLI install across all workflows (#577)
- Maintenance: 6 dependency/CI bumps
12 PRs included
- #599 chore(deps): bump the dashboard group in /apps/dashboard with 2 updates (@dependabot[bot])
- #598 chore(deps-dev): bump wrangler from 4.106.0 to 4.107.0 in /apps/webhook in the webhook group (@dependabot[bot])
- #596 docs: sync stale skill counts to 102 + default model to sonnet-4-6 (@aaronjmars)
- #595 fix(keys): API-key routing audit - add GH_READ_PAT, drop orphan, correct vault descriptions (@aaronjmars)
- #580 chore(deps-dev): bump @types/node from 26.0.1 to 26.1.0 in /apps/dashboard in the dashboard group (@dependabot[bot])
- #577 chore(ci): pin pyyaml to ==6.0.2 (@aaronjmars)
- #575 chore(deps-dev): bump the dashboard group in /apps/dashboard with 3 updates (@dependabot[bot])
- #574 chore(deps-dev): bump wrangler from 4.103.0 to 4.106.0 in /apps/webhook in the webhook group (@dependabot[bot])
- #573 chore(actions): bump actions/checkout from 4 to 7 in the github-actions group (@dependabot[bot])
- #569 Simplify shiplog: one cadence-agnostic skill (since last run) (@aaronjmars)
- #568 Backport self-repair-ledger from aaeron (generic) (@aaronjmars)
- #559 feat(phylax-audit): hosted-engine fast path for canonical verdicts (@usephylax)
- 2026-07-02
Grok Build harness + skills consolidated to 102
aeon becomes multi-harness: run any skill through xAI's Grok Build CLI, logging in with your X account - fully additive, with Claude Code still the default. In parallel the skill catalog is consolidated from 187 hubs down to 102 with no capability lost, and Telegram's button + reply layer is wired across 16 skills.
- New Grok Build harness - run skills through xAI's grok CLI, authenticated with your X account (SuperGrok / X Premium+) or an XAI_API_KEY; Claude Code stays the default (#585)
- A Claude→grok compatibility layer lets existing skills run unchanged on grok, with no per-skill rewrites (#590)
- Grok harness gains native MCP support plus opt-in per-skill run-shaping - max_turns, best_of_n, verify, effort (#587)
- The harness is wired through every entry point - scheduled runs, chains, inbound Telegram/Discord/Slack, and the quality scorer - so a grok-only fork behaves identically (#586, #587)
- Note: grok's headless output carries no token counts, so grok-harness runs log 0 tokens on Actions and don't appear in cost tracking (#585)
- Skill catalog consolidated 187 → 102 hubs behind per-skill selectors; every absorbed behavior survives as a branch of its hub (#581, #583)
- Telegram buttons and stateless force-reply follow-ups wired across 16 skills - snooze/mute a noisy alert, refine a draft, or add to a watchlist straight from chat (#591)
- Then made zero-touch: every notification auto-carries global Run again / Schedule weekly quick-action buttons, and saving your bot token in the dashboard auto-registers the slash-command menu - no manual workflow run (#593, #594)
- Dashboard: harness picker with one-click Connect X account, Sonnet 4.6 as the default model, and grok model-id fixes (#585, #588, #589, #592)
- Docs and catalogs (smithery, skill-graph) regenerated to the 102-skill inventory (#584)
13 PRs included
- #594 feat(dashboard): auto-register Telegram commands on token save + re-register button (@aaronjmars)
- #593 feat(telegram): global Run again / Schedule weekly buttons on every skill notification (@aaronjmars)
- #592 fix(dashboard): auth CTA per-harness + Sonnet 4.6 default + Anthropic modal tidy (@aaronjmars)
- #591 feat(telegram): wire buttons + force-reply across 16 skills (@aaronjmars)
- #590 feat(grok): Claude→grok compatibility layer so skills run unchanged on the grok harness (@aaronjmars)
- #589 chore(dashboard): default to claude harness, packs skeleton, middleware→proxy (@aaronjmars)
- #588 fix(dashboard): stop sanitizeModel stripping the dot from grok model ids (@aaronjmars)
- #587 feat(grok): de-dupe AGENTS.md, wire MCP, add run-shaping flags + full harness parity (@aaronjmars)
- #586 fix(grok): harness hardening - no thought-leak, safe cancels, harness-routed scorer, drop grok-build (@aaronjmars)
- #585 feat(harness): add Grok Build (grok CLI) as an additive agent harness (@aaronjmars)
- #584 docs: regenerate smithery + skill-graph catalogs to 102 skills (@aaronjmars)
- #583 feat(skills): consolidation phase 2 - 85 merges → 49 hubs (187→102) (@aaronjmars)
- #581 chore(skills): consolidation phase 1 - delete 16 skills, rename fork-firstrun→fork-events (@aaronjmars)
- 2026-07-01
Interactive Telegram + a leaner core
Telegram gains slash commands, inline buttons, deep links, and force-reply follow-ups - all with no LLM in the loop for structured input. The codebase also sheds ~1,800 lines of dead weight, Claude Sonnet 5 lands as a selectable model, and the ecosystem list is refreshed.
- Telegram interactivity: /skill slash commands with autocomplete, inline snooze/mute/re-run buttons, t.me deep links, and stateless force-reply follow-ups - structured input runs with no LLM in the loop, on both the poller and the instant webhook (#578)
- Installers consolidated behind a shared library and the speculative a2a-server removed - net −1,823 lines, plus a fix for a footgun that shipped real treasury addresses into forks (#579)
- CLAUDE.md audited against the real workflows: drift fixed and an end-to-end architecture overview added (#576)
- Claude Sonnet 5 added as a selectable model - near-Opus quality on coding and agentic work at Sonnet pricing (#572)
- Ecosystem refresh: logos updated, Zetta added, x402Books and Bankrsynth removed (#571)
- shiplog's X-traction prefetch path wired up, config-driven from memory/products.md (#570)
6 PRs included
- #579 refactor: consolidate installers, cut a2a-server, drop dead scripts (@aaronjmars)
- #578 feat(telegram): slash commands, buttons, deep links & force-reply (@aaronjmars)
- #576 docs(claude-md): fix drift + add architecture overview (@aaronjmars)
- #572 feat(models): add Claude Sonnet 5 as a selectable model (@aaronjmars)
- #571 chore(ecosystem): update logos, swap x402Books→Zetta, drop Bankrsynth (@aaronjmars)
- #570 feat(prefetch): wire shiplog X-traction case into prefetch-xai.sh (@aaronjmars)
- 2026-06-30
21 skills backported, vigil at 17 tools
The biggest skill expansion since the hardening trilogy: 21 skills from derivative instances land in canonical aeon (all disabled by default), vigil's tool count jumps from 9 to 17, and a new send-email skill ships while 5 others are retired. Heartbeat, repo-pulse, and disclosure-tracker all get richer implementations reverse-backported from live instances.
- vigil skill jumps from 9 to 17 tools: consensus, liquidity lock, tax check, and ownership audit added (#558)
- validate-config test suite wired into CI, closing a gate gap where the suite ran nowhere (#560)
- 21 skills from derivative instances backported to canonical aeon, all disabled by default (#562)
- repo-pulse, disclosure-tracker, and pvr-watchlist upgraded with richer reverse-backported implementations (#563)
- heartbeat status logic refined: status page no longer flaps red on a recovered transient failure (#564)
- private-repo prefetch now driven by products.md; GH_READ_PAT wired for per-product access (#565)
- send-email skill ships via Resend; polymarket, polymarket-comments, ecosystem-entrants, smithery-manifest, v4-readiness removed (#566)
- daily-shiplog and idea-forge generalized to config-driven skills via memory/products.md (#567)
- 8-agent optimize sweep: dead code removed, internal constants de-exported, knip now clean (#561)
9 PRs included
- #567 Add generalized daily-shiplog + idea-forge (@aaronjmars)
- #566 feat: add global send-email skill; remove 5 skills (@aaronjmars)
- #565 feat: products.md-driven prefetch-private-repos.sh + wire GH_READ_PAT (@aaronjmars)
- #564 Reverse-backport: richer heartbeat (status logic + token-pulse) (@aaronjmars)
- #563 Reverse-backport: richer repo-pulse / disclosure-tracker / pvr-watchlist (@aaronjmars)
- #562 Backport 21 derivative-instance skills + upgrade vuln-scanner (@aaronjmars)
- #561 optimize: code-quality cleanup (8-agent /optimize sweep) (@aaronjmars)
- #560 ci(tests): wire validate-config.test.js into ci-tests (@anajuliabit)
- #558 vigil skill: refresh 9 → 17 tools (@vigilcodes)
- 2026-06-27
hardening trilogy defaults on, chain and scanner fixes
Three hardening features from aeon-dev - capability tiers (§6), issues-as-state dual-write (§3), and votable health (§7) - now activate by default in any fork. The batch also fixes a silent coercion bug that had disabled §7, patches two latent chain-runner issues, and corrects the vuln-scanner disclosure endpoint.
- Port hardening easy wins: notify formatter, compact logs, verify output, schedule clusters, prune skills (#547)
- Capability tiers (§6) enforce read-only vs write mode per skill, now on by default (#548)
- Issues-as-state (§3) and votable health (§7) ship on by default with dual-write safety net (#550)
- `HEALTH_ISSUES` unset was coerced to 0, silently disabling votable health - now fixed (#552)
- Chain runner gets `issues:write` permission and var-less skill discovery fixed (#553)
- Hardening features documented: capability tiers, issues-as-state, votable health in README (#554)
- `validate-config.js` added - the shared validator `config-validator` already referenced but never committed (#546)
- Phylax-audit threat-string examples wrapped in backticks to prevent scanner false positives (#545)
- vuln-scanner disclosure endpoint corrected to `POST /security-advisories/reports` with explicit HTTP-code branching (#557)
- AeThree joins ecosystem: agent governance launchpad where token holders vote on AI models (#556)
- clawhunter-skills v0.2 listing: multi-venue support, per-bounty agentPlan, research tools (#555)
11 PRs included
- #557 vuln-scanner: fix PVR reporting endpoint and disclosure flow (@aaronjmars)
- #556 docs(ecosystem): add AeThree (@SamsShow)
- #555 Update clawhunter desc (@clawhunter)
- #554 docs: document capability tiers, issues-as-state, and votable health (@aaronjmars)
- #553 fix(chain): add issues:write + fix var-less skill discovery in chain-runner (@aaronjmars)
- #552 fix(§7): votable-health was silently default-OFF (unset HEALTH_ISSUES coerced to 0) (@aaronjmars)
- #550 Enable §3 issues-as-state (dual-write) + §7 votable health by default, + read-only/gh-api hardening (@aaronjmars)
- #548 Port hardening §6 capability tiers + §3 issues-as-state + §7 votable health Issues (@aaronjmars)
- #547Port hardening easy wins from aeon-dev (notify formatter, compact_logs, verify_output, schedule_clusters, prune_skills) (@aaronjmars)
- #546 feat(scripts): add validate-config.js - the shared validator config-validator already calls (@aaronjmars)
- #545 fix(phylax-audit): format example threat strings as inline-code (@usephylax)
- 2026-06-25
skill-triage gets Phylax security pre-screen
Inbound skill PRs that reference a Base contract address or a declared payment/data endpoint now get a Phylax onchain + endpoint ALLOW/WARN/DENY verdict inline, alongside the existing static skill-scan pass. Pure-prompt skills - the common case - pass through unchanged.
- skill-triage runs Phylax onchain + endpoint audit on any skill PR declaring a contract address or payment endpoint (#544)
1 PR included
- #544 feat(skill-triage): add Phylax onchain + endpoint security pre-screen (@aaronjmars)
- 2026-06-24
dashboard README closes the last sub-app gap
The Aeon dashboard was the only sub-app without a README - the A2A and MCP servers got theirs in #501 and #512. One PR closes that gap: quickstart via `./aeon` or direct npm, the six views, configuration, and the loopback security gate, all documented.
- Dashboard README added: quickstart, six views, config reference, and remote-access security gate documented (#543)
1 PR included
- #543 docs: add apps/dashboard/README.md (@aaronjmars)
- 2026-06-23
phylax-audit skill, dashboard signal cleanup
Phylax ships a pre-install ALLOW/WARN/DENY verdict for external skills - the first supply-chain audit gate contributed from outside the core team. The dashboard feed gets fixed the same day to show only Aeon-launched runs, cutting Dependabot rows that were flooding real activity.
- `phylax-audit` gives a deterministic ALLOW/WARN/DENY verdict before any external skill install (#537)
- Dashboard feed and Runs tab now show only Aeon-launched events; Dependabot rows filtered out (#542)
- Phylax listed in ECOSYSTEM.md as an active security-layer contributor (#539)
- Code quality pass: shared utilities extracted, dead code removed, load-error UX improved (#540)
- Maintenance: 6 dependency/CI bumps
10 PRs included
- #542 fix(dashboard): show only Aeon-launched runs in feed/runs (drop Dependabot) (@aaronjmars)
- #541 chore(deps): group Dependabot updates per ecosystem + monthly (@aaronjmars)
- #540 chore: code-quality pass - DRY, shared types, dead code, weak types + load-error UX fix (@aaronjmars)
- #539 docs: add Phylax to ECOSYSTEM.md (@aaronjmars)
- #537 feat(skill): add phylax-audit - pre-install ALLOW/WARN/DENY verdict for external skills (@usephylax)
- #536 chore(deps-dev): bump @tailwindcss/postcss from 4.2.2 to 4.3.1 in /apps/dashboard (@dependabot[bot])
- #535 chore(deps-dev): bump typescript from 5.9.3 to 6.0.3 in /apps/dashboard (@dependabot[bot])
- #534 chore(deps): bump react and @types/react in /apps/dashboard (@dependabot[bot])
- #533 chore(deps): bump react-dom from 19.2.4 to 19.2.7 in /apps/dashboard (@dependabot[bot])
- #532 chore(deps-dev): bump @types/node from 22.19.15 to 26.0.0 in /apps/dashboard (@dependabot[bot])
- 2026-06-22
community packs, MCP catalog, install pipeline hardening
Community packs drove this batch - Charon, Simmer, ClawHunter, Hunch, glim.sh, and logbook all joined the registry - while a run of dashboard fixes made pack discovery and install reliable enough that new forks start Core-only by default.
- Charon policy-guard pack runs pre-flight PASS/PAUSE/DENY checks before each skill (#511)
- Simmer Polymarket Trader: take live positions on Polymarket from an Aeon skill (#499)
- ClawHunter: Pump Fun bounty discovery and x402-paid content-studio skills (#498)
- Hunch: on-Base prediction markets with x402 position-taking (#472)
- glim.sh added to MCP catalog: semantic search, X, Reddit, GitHub live data (#470)
- Litebeam added to MCP catalog: x402-settled microservice routing layer (#508)
- Robinhood Agentic Trading MCP added: portfolio read and trade execution via OAuth (#489)
- logbook signed action-receipt pack listed in ecosystem (#507)
- Five ecosystem entries added: ClawHunter, Glim.sh, Lens, LiteBeam, Simmer (#528)
- Pack install auto-merges and ensures Actions can open PRs on fresh forks (#485)
- Installed community packs now appear in the dashboard skill roster (#490)
- Enabled-packs scoped per repo; new forks default to Core-only (#491)
- Pack `path` field forwarded correctly on dashboard one-click install (#493)
- `packs.json` regenerated on install so new skills appear without manual steps (#487)
- `validate-pack.sh` added for local pre-flight validation before opening a PR (#495)
- `skills.json` decoupled from `aeon.yml`; catalog CI no longer trips on config edits (#484)
- A2A gateway quickstart README added (#501)
- MCP server quickstart README added (#512)
- PR template added to surface contribution gates at submission time (#494)
- Stale skill references cleaned across docs, config, and issue templates (#503, #504, #505, #506, #531)
- README one-click dashboard pack install documented (#497)
- Only Claude models remain in aeon.yml; non-Claude Bankr options removed (#496)
- LICENSE copyright updated to Aeon Inc (#529)
- `@json-render` packages aligned on ^0.19 to eliminate dependency duplication (#526)
- Dependabot enabled for Actions workflows and npm workspaces (#513)
- README skill count synced to 183; packs table aligned, stale banner removed (#530, #488)
- Maintenance: 12 dependency/CI bumps
45 PRs included
- #531 chore(skills): remove stale references to pruned skills (@aaronjmars)
- #530 docs(readme): sync skill count to 183 (@aaronjmars)
- #529 chore: update LICENSE copyright to Aeon Inc (@aaronjmars)
- #528 docs(ecosystem): add ClawHunter, Glim.sh, Lens, LiteBeam, Simmer (@aaronjmars)
- #527 docs(ecosystem): update NÜMETAL and GitKernal logo URLs (@aaronjmars)
- #526 chore(dashboard): align @json-render/core + react on ^0.19 to dedupe (@aaronjmars)
- #525 chore(deps): bump yaml from 2.8.3 to 2.9.0 in /apps/dashboard (@dependabot[bot])
- #524 chore(deps): bump next from 16.2.6 to 16.2.9 in /apps/dashboard (@dependabot[bot])
- #523 chore(deps-dev): bump tailwindcss from 4.2.2 to 4.3.1 in /apps/dashboard (@dependabot[bot])
- #522 chore(deps-dev): bump wrangler from 4.98.0 to 4.103.0 in /apps/webhook (@dependabot[bot])
- #521 chore(deps-dev): bump typescript from 5.9.3 to 6.0.3 in /apps/a2a-server (@dependabot[bot])
- #520 chore(deps): bump gsap from 3.14.2 to 3.15.0 in /apps/dashboard (@dependabot[bot])
- #519 chore(deps-dev): bump @types/node from 20.19.43 to 26.0.0 in /apps/a2a-server (@dependabot[bot])
- #518 chore(deps-dev): bump typescript from 5.9.3 to 6.0.3 in /apps/mcp-server (@dependabot[bot])
- #517 chore(deps-dev): bump @types/node from 22.20.0 to 26.0.0 in /apps/mcp-server (@dependabot[bot])
- #516 chore(deps): bump @json-render/shadcn from 0.15.0 to 0.19.0 in /apps/dashboard (@dependabot[bot])
- #515 chore(actions): bump actions/setup-node from 5 to 6 (@dependabot[bot])
- #514 chore(actions): bump actions/checkout from 4 to 7 (@dependabot[bot])
- #513 chore: add Dependabot for npm apps and GitHub Actions (@aaronjmars)
- #512 docs: add apps/mcp-server/README.md with quickstart and Claude Desktop config (@aaronjmars)
- #511 Add Charon AEON skill pack (@CharonAI-code)
- #509 fix(mcp): use Litebeam's X avatar for the catalog logo (@aaronjmars)
- #508 feat(mcp): add Litebeam as a featured MCP template (@aaronjmars)
- #507 ecosystem: add logbook (@logbookbase)
- #506 chore: purge remaining dangling refs to 2026-06-15 deleted skills (@aaronjmars)
- #505 docs: refresh skill gallery + prune skill-graph of deleted skills (@aaronjmars)
- #504 chore: remove dangling refs to 4 more skills deleted on 2026-06-15 (@aaronjmars)
- #503 chore: remove dangling references to the deleted token-report skill (@aaronjmars)
- #501 docs(a2a-server): add README quickstart for the A2A gateway (@aaronjmars)
- #499 Add Polymarket Trader by Simmer to community skill packs (@adlai88)
- #498 Add community skill pack: clawhunter-skills (@clawhunter)
- #497 docs(readme): document one-click dashboard pack install (@aaronjmars)
- #496 chore: list only Claude models (drop Bankr gateway non-Claude options) (@aaronjmars)
- #495 feat: add scripts/validate-pack.sh - local pre-flight validator for community packs (@aaronjmars)
- #494 docs: add pull request template (@aaronjmars)
- #493 fix(dashboard): forward pack `path` as --path on install + copy command (@aaronjmars)
- #491 fix(dashboard): scope enabled-packs per repo so forks default to Core-only (@aaronjmars)
- #490 fix(dashboard): render installed community packs in the roster (data-driven groups) (@aaronjmars)
- #489 feat(mcp-catalog): add Robinhood Agentic Trading MCP (@aaronjmars)
- #488 docs(readme): align packs table + remove stale skills-aeon-197 image (@aaronjmars)
- #487 fix(install): install-skill-pack regenerates packs.json so installs aren't invisible (@aaronjmars)
- #485 feat(install-skill): zero-touch auto-merge + ensure Actions can open PRs (@aaronjmars)
- #484 fix(catalog): decouple skills.json from aeon.yml (drop schedule field) (@aaronjmars)
- #472 Add Hunch Prediction Markets skill pack (crypto) (@rajkaria)
- #470 feat(mcp-catalog): add glim.sh (live-data MCP, x402 + MPP) (@tenequm)