Skip to content

Releases: 23blocks-OS/ai-maestro

v0.29.0 — Unified API Error Format

16 Apr 16:18
7a347a4

Choose a tag to compare

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 for ServiceResult<T>, ServiceError, and ServiceErrorCode (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.tstoResponse() turns any ServiceResult into a NextResponse with consistent error formatting.

Changed

  • 25 service files migrated to shared ServiceResult and factories (~305 error returns standardized).
  • 88 route files converted to thin wrappers: return toResponse(result).
  • 25 component files updated to read data.message || data.error for backward-compatible error display.
  • 5 test files updated (49 assertions now match structured ServiceError shape).
  • lib/types/amp.ts refactored: AMPErrorCode is now Extract<ServiceErrorCode, ...>, AMPError extends ServiceError. AMPNameTakenError interface corrected to match runtime shape (details.suggestions).
  • services/headless-router.tssendServiceResult() mirrors toResponse() for headless mode.

Fixed

  • preconditionFailed() factory now returns 412 (was 400).
  • lookupAgentByName and lookupAgentByDirectoryName catch blocks now propagate real errors via operationFailed() 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

26 Mar 05:22
cd6b7b0

Choose a tag to compare

Added

  • Auto-install Claude Code status lineinstall-plugin.sh now configures the AMP status line automatically, showing agent identity and unread message count in Claude Code's footer. Idempotent and reversible via amp-statusline.sh --uninstall.

v0.26.4 — AMP Mesh Routing Fix

25 Mar 06:03
6a223ec

Choose a tag to compare

Fixed

  • AMP mesh routing restoredamp-send.sh was incorrectly using filesystem delivery for remote agents after message migration created local directories. Now checks for config.json to distinguish real local agents from migration-created inbox directories.
  • AMP fetch URL fixamp-fetch.sh was missing /v1/ prefix on fetch and acknowledge endpoints, causing 404s against external providers.
  • AMP message ID timestampsgenerate_message_id() now uses seconds-precision timestamps per AMP spec.

v0.26.3 — AID v0.2.0: Independent from AMP

24 Mar 06:21
e7b971c

Choose a tag to compare

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 (no amp-init needed)
  • 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

24 Mar 05:56
78d41b9

Choose a tag to compare

Changes

  • Replaced all remaining hardcoded skill and script lists with dynamic discovery from the plugin directory
  • verify-installation.sh now auto-discovers skills and AMP scripts (was missing agent-identity and 2 AMP scripts)
  • install-plugin.sh AMP 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

24 Mar 05:39
0a370b8

Choose a tag to compare

Changes

  • Renamed install-messaging.shinstall-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

24 Mar 05:06
7000b84

Choose a tag to compare

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

  1. Agent registers its public key with an auth server (one-time)
  2. Agent presents a signed identity + proof of possession
  3. Auth server verifies and issues a scoped RS256 JWT
  4. 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

23 Mar 08:18
dc4c533

Choose a tag to compare

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 (--force reinit)
  • 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

v0.25.15 — AMP Key Rotation with Proof-of-Possession

23 Mar 07:57
31b9ac9

Choose a tag to compare

What's New

Key rotation with proof-of-possession

POST /v1/auth/rotate-keys now accepts an optional body with new_public_key, key_algorithm, and proof fields. The server verifies the proof (new key hex signed with old private key) before accepting the rotation. Omitting the body falls back to server-side key generation for backward compatibility.

This enables the amp-init --force deadlock fix: the client signs the new key with the old key before destroying it.

Duplicate public key rejection

POST /v1/register now returns 409 key_already_registered when the submitted public key fingerprint is already associated with a different agent. Same-agent re-registration with the same key remains allowed.

Full Changelog: v0.25.14...v0.25.15

AI Maestro v0.25.0 — Agent Skills Standard Compliant

09 Mar 19:31
fb9cc12

Choose a tag to compare

Agent Skills Standard (skills.sh) Compliant

All 6 AI Maestro skills now comply with the Agent Skills standard — an open standard adopted by 30+ AI agent products including Claude Code, OpenCode, Codex CLI, Gemini CLI, Cursor, and GitHub Copilot.

Skills are no longer Claude Code exclusive. Install them on any compatible agent:

npx skills add 23blocks-OS/ai-maestro-plugins

What's New

🔌 Agent Skills Standard

  • All 6 skills have valid YAML frontmatter, are under 500 lines, and use spec-compliant fields
  • AMP messaging skill sourced from upstream agentmessaging/claude-plugin which independently adopted the standard
  • 2 skills work standalone on any agent (planning, agent-messaging); 4 require AI Maestro server

🧠 Cerebellum Subsystem (v0.23.x)

  • Voice-enabled companion with FaceTime-style pop-out UI
  • OpenAI TTS provider, adaptive cooldown, speech history
  • Terminal buffer analysis for contextual voice responses

Service Layer & Headless Mode (v0.24.x)

  • All ~100 API routes extracted to 23 service files
  • Headless mode: API-only server (~1s startup, ~100MB RAM)
  • SharedState bridge pattern for server.mjs + API route coordination

🔒 Security

  • RCE command injection patch in tmux session management
  • ToxicSkills defense for skill/plugin install
  • AMP Ed25519 message signing hardening

📱 Mobile & UX

  • 3-tier responsive experience (phone/tablet/desktop)
  • Essential keys toolbar for mobile terminal
  • Toast notification system (replaced browser alerts)
  • Startup self-diagnostics

🏗️ Plugin System

  • Composable plugin builder with manifest-driven assembly
  • Plugin Builder page with visual skill composition
  • Agent roles and team types for messaging policy

👥 Community

Skills

Skill Any Agent Needs Server
planning
agent-messaging (AMP)
memory-search
docs-search
graph-query
ai-maestro-agents-management

Stats

  • 78 commits since v0.21.24
  • 23 service files
  • 6 standard-compliant skills
  • 44 CLI scripts

Full Changelog: v0.21.24...v0.25.0