Repository navigation
AgentPack 2.0.0
Cross-agent package manager for MCP servers and plugins — Claude Code, Codex and OpenCode.
Download: AgentPack-2.0.0-win-x64.exe (Windows x64, portable, unsigned). Requires Node.js 22.17+ with npm on PATH; the app bundles Electron but launches MCP servers with the machine's Node.
Run AgentPack-2.0.0-win-x64.exe --demo for a sandboxed demo with three sample agent configs and a nested Next.js + Supabase project. Without --demo it reads and writes your real agent configuration.
What changed since 1.6.0
An external agent reviewed the codebase and filed seven defects. All seven are fixed. It had no access to the reasoning behind the code, ran its own fault-injection fixtures, and found three P1 failures that the normal-path tests were concealing. Each was reproduced with the reviewer's own fixture before being touched, and every defect provable without a desktop window now has a regression test.
| Severity | Defect | Fix |
|---|---|---|
| P1 | A failed post-write snapshot defeated rollback, and dormancy dropped its own recovery entry | The post-image hash is taken before the copy, and the copy may fail; a written flag separates "nothing to undo" from "cannot attribute"; the dormant stash is dropped only once the live entry is demonstrably back |
| P1 | A malformed existing config leaked pre-existing credentials into errors | The TOML parser appends offending source lines to its message, and those lines can hold secrets from entries we never wrote and therefore cannot redact. Every parse error now keeps the diagnostic and drops the excerpt |
| P1 | An errored watcher stayed open and kept activating capabilities after Stop | It closes itself before reporting, and the IPC layer stops through the handle instead of discarding the only reference that could close it |
| P2 | Duplicate JSONC sections produced Installed/Verified with no readable entry | Duplicated top-level keys are refused as ambiguous, and install now reads every entry back before claiming success |
| P2 | A validly quoted marketplace table blocked Codex plugin installation | The document is parsed rather than matched with a bare-header regex |
| P2 | The rehearsal falsely passed a partial cross-agent conflict | Conflicts count as problems, and the clean-baseline guard reports partial dirtiness |
| P3 | Rollback deleted comments added after installation | Wholesale byte restore is reserved for formats that cannot carry comments; TOML and JSONC take a surgical path, and table removal no longer swallows trailing comments |
The review is published in full, unedited, at docs/INDEPENDENT-REVIEW.md.
A production pass over the whole codebase. No TODOs, no debug output outside test fixtures, no commented-out code and no silently empty catch blocks. What it did find: the Codex adapter removed plugin tables with a hand-rolled scan that duplicated the shared one — and because it was a separate copy, it never received the trailing-comment fix, so plugin removal still deleted user comments where server removal no longer did. Both paths now share one implementation. Seven helpers that nothing outside their own module imported are private again, and a branch_glob trigger variant that was declared but never implemented has been removed rather than left promising behaviour the engine does not have.
Server launches are 25× faster here. While verifying the fixes, the renderer acceptance run began failing. It would have been easy to blame the review fixes or machine load; it was neither. npm ping reports CERT_HAS_EXPIRED on this machine, and npm was retrying for a fixed ~70 seconds before falling back to a cache it already had. Health checks now ask npm to prefer that cache for the exact version each capability pins — 73 seconds per launch became under three. The network is still used when a package is genuinely missing.
Verification for this build
Run with no environment overrides:
| Check | Result |
|---|---|
| TypeScript | clean |
| Focused regressions | 31 / 31 |
| Self-check suite | 75 passed |
| Engine acceptance | 14 / 14, configs restored byte-identically |
| Renderer UI (real preload + IPC) | 8 / 8 |
| Smoke | ok, no console errors |
Real tools/call |
3 / 3 |
| Packaged portable launch | exit 0 |
Known limits
Unchanged, and stated rather than hidden. A green tool list proves the server starts and answers, not that a credential is valid. Plugin status reads Configured, never Verified, because a plugin loads inside the agent where we cannot see it. Context figures are tool-schema estimates (characters divided by four), not billed tokens, and apply to an agent's next session. Authenticated GitHub and Supabase operations have not been exercised with real accounts, and no coding-agent session has been started to confirm it loads the generated config. The artifact is unsigned.
Full assessment: docs/READINESS.md. Demo script: docs/DEMO.md.
SHA-256: 0532907D8ACE87EB963E615F691AFCEEB4EC020ADBCA2A1772D68ACCEE0B85D6