Releases: 23blocks-OS/ai-maestro
v0.29.15 — Fix hibernate/standalone conflict
Bug Fix
Hibernated agents incorrectly shown as standalone — Agents with tmux session history (like Raine) were being classified as "standalone" when they had a recent heartbeat but no active tmux session. This caused the UI to show "Standalone Agent — no terminal view" instead of the hibernation screen with the Wake button.
What changed
- Standalone classification now requires no session history in the agent registry
- Heartbeats only mark agents as "online" for truly standalone agents
- Legacy
/api/sessionsendpoint also fixed
Impact
All registered agents that were hibernated now correctly show the Wake button again.
v0.29.14 — Ecosystem Narrative
The Agent Ecosystem
Introduces the Agent Formula — a clear narrative explaining how the 6 components of the 23blocks agent ecosystem work together:
Complete Agent = Personality (WHO) + Capabilities (HOW) + Identity (TRUST) + Communication (TALK)
What's New
docs/ECOSYSTEM.md— Canonical reference for how AI Maestro, Agent Library (150+ personalities), Plugin Builder, AID, and AMP fit togetherdocs/ecosystem.html— New docs site page with visual dimension cards, assembly flow, and "Build Your First Agent Team" walkthrough- Ecosystem section in README — Four-dimension table after "Meet Lola"
- Plugin Builder — Added personality cross-references, "Combine Personalities + Skills" section, and example manifest with all 15 agency-agents divisions
- Navigation — ECOSYSTEM link added to all 17 docs site pages
- Companion components — Extracted CompanionInput, FloatingVoiceSettings, MobileCallOverlay into standalone components
- GitHub metadata — Updated repo descriptions and topics
The Formula
| Dimension | Component | |
|---|---|---|
| WHO | Personality | Agent Library (150+) |
| HOW | Capabilities | Plugin Builder |
| TRUST | Identity | AID |
| TALK | Communication | AMP |
AI Maestro is the stage. Pick personalities, give them skills, and run them from one dashboard.
v0.29.0 — Unified API Error Format
Highlights
Every API error response across the codebase now follows the AMP protocol format — one consistent, structured shape for all 106 route handlers.
Before: inconsistent error shapes across ~280 services ({ error: 'Human text' }) vs structured AMP routes ({ error: 'code', message: '...', field?, details? }).
After: one shape everywhere.
{ "error": "missing_field", "message": "name is required", "field": "name" }What changed
Added
services/service-errors.ts— single source of truth forServiceResult<T>,ServiceError, andServiceErrorCode(30 codes: AMP's 18 + 12 generic). Ships 20+ factory functions (missingField,notFound,operationFailed,alreadyExists,gone,invalidState, etc.) and validation helpers (requireString,requireArray,requireNameFormat).app/api/_helpers.ts—toResponse()turns anyServiceResultinto aNextResponsewith consistent error formatting.
Changed
- 25 service files migrated to shared
ServiceResultand factories (~305 error returns standardized). - 88 route files converted to thin wrappers:
return toResponse(result). - 25 component files updated to read
data.message || data.errorfor backward-compatible error display. - 5 test files updated (49 assertions now match structured
ServiceErrorshape). lib/types/amp.tsrefactored:AMPErrorCodeis nowExtract<ServiceErrorCode, ...>,AMPError extends ServiceError.AMPNameTakenErrorinterface corrected to match runtime shape (details.suggestions).services/headless-router.ts—sendServiceResult()mirrorstoResponse()for headless mode.
Fixed
preconditionFailed()factory now returns 412 (was 400).lookupAgentByNameandlookupAgentByDirectoryNamecatch blocks now propagate real errors viaoperationFailed()instead of silently returning{ exists: false }/{ found: false }with a 500 status.toResponse()defensive fallback preserves caller's 4xx status instead of always overriding to 500.
Stats
- 154 files changed (+1,365 / -1,977 = net −612 lines) despite adding the new foundation
- 545/545 tests passing
- Build + lint pass on Node 20 and 22
Credits
Huge thanks to @mvillmow for the original issue (#285) that identified the duplication across route handlers. The analysis revealed an even deeper opportunity — the underlying error contract itself was inconsistent — and this release addresses the root cause.
PR
- #327 — feat: unify API errors to AMP format
Closes #285
v0.26.5 — Auto-install Status Line
Added
- Auto-install Claude Code status line —
install-plugin.shnow configures the AMP status line automatically, showing agent identity and unread message count in Claude Code's footer. Idempotent and reversible viaamp-statusline.sh --uninstall.
v0.26.4 — AMP Mesh Routing Fix
Fixed
- AMP mesh routing restored —
amp-send.shwas incorrectly using filesystem delivery for remote agents after message migration created local directories. Now checks forconfig.jsonto distinguish real local agents from migration-created inbox directories. - AMP fetch URL fix —
amp-fetch.shwas missing/v1/prefix on fetch and acknowledge endpoints, causing 404s against external providers. - AMP message ID timestamps —
generate_message_id()now uses seconds-precision timestamps per AMP spec.
v0.26.3 — AID v0.2.0: Independent from AMP
Agent Identity v0.2.0 — Fully Independent
AID no longer requires AMP to be installed. Agents can now authenticate with OAuth 2.0 servers using just AID alone.
What's new
aid-init— Standalone identity initialization (noamp-initneeded)aid-helper— Self-contained helper with OpenSSL auto-detection, Ed25519 signing- All
aid-*scripts are now self-sufficient
Interoperability
If both AMP and AID are installed, they share ~/.agent-messaging/agents/ — one Ed25519 identity serves both protocols. Neither requires the other.
Numbers
- Plugin: 7 skills, 50 scripts (was 48)
Full Changelog: v0.26.2...v0.26.3
v0.26.2 — Dynamic discovery for all verification lists
Changes
- Replaced all remaining hardcoded skill and script lists with dynamic discovery from the plugin directory
verify-installation.shnow auto-discovers skills and AMP scripts (was missingagent-identityand 2 AMP scripts)install-plugin.shAMP verification now auto-discovers (was missing 4 of 14 scripts)- Fixed installer banner alignment
Full Changelog: v0.26.1...v0.26.2
v0.26.1 — Rename installer, auto-discover skills
Changes
- Renamed
install-messaging.sh→install-plugin.sh— the installer handles all skills, scripts, and CLI tools, not just messaging - Auto-discover skills — new skills added via the plugin manifest are automatically installed without modifying the installer script
- Added plugin builder references to the installer banner so users know they can customize their plugin at ai-maestro.23blocks.com/plugin-builder.html
Full Changelog: v0.26.0...v0.26.1
v0.26.0 — Agent Identity (AID) Integration
Agent Identity (AID) Integration
AI agents can now authenticate with OAuth 2.0 servers using their Ed25519 cryptographic identity — no passwords, no API keys, no secrets to rotate.
What's new
- Agent Identity (AID) added to the ai-maestro plugin build via
agentmessaging/agent-identity - New commands:
aid-register,aid-status,aid-token - New skill:
agent-identity - Plugin now ships 7 skills and 48 scripts
How it works
- Agent registers its public key with an auth server (one-time)
- Agent presents a signed identity + proof of possession
- Auth server verifies and issues a scoped RS256 JWT
- Agent uses JWT to call any API
Previous releases in this session
- v0.25.16 — Sync AMP plugin scripts to v0.1.3
- v0.25.15 — Key rotation with proof-of-possession + duplicate key rejection
Full Changelog: v0.25.16...v0.26.0
v0.25.16 — AMP Plugin Sync to v0.1.3
What's New
AMP Plugin synced to v0.1.3
Rebuilt ai-maestro-plugins via the manifest build system (build-plugin.sh --clean) to pull latest AMP scripts from agentmessaging/claude-plugin upstream.
Key upstream changes now included:
- Key rotation with proof-of-possession (
--forcereinit) - Local fingerprint uniqueness guard before registration
--id <uuid>parameter for multi-agent identity resolution- Client-side UUIDv4 for offline-first agent identity
- Case-insensitive index lookup + single-agent auto-select
- Multiple security, routing, and attachment fixes
Full Changelog: v0.25.15...v0.25.16