Changelog.
What shipped in aeon - merged PRs, new skills, dashboard fixes, and ecosystem additions, published as a changelog each week.
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)
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)
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
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)
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)
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)
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)
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
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
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
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
