API Reference
July 17, 2025 ยท View on GitHub
Overview
This document provides a comprehensive API reference for the Claude PM Framework's core modules and services. The framework is organized into several key namespaces, each serving a specific purpose in the multi-agent orchestration system.
Core Modules
claude_pm.core
The core module contains fundamental classes and utilities used throughout the framework.
AgentRegistry
from claude_pm.core.agent_registry import AgentRegistry
class AgentRegistry:
"""Dynamic agent discovery and management system."""
def __init__(self, prompt_cache=None):
"""Initialize the agent registry.
Args:
prompt_cache: Optional SharedPromptCache instance
"""
def listAgents(self,
scope='all',
specializations=None,
task_capability=None,
include_tracking=False) -> Dict[str, AgentMetadata]:
"""List available agents with filtering options.
Args:
scope: 'all', 'project', 'user', or 'system'
specializations: List of required specializations
task_capability: Specific task capability filter
include_tracking: Include modification timestamps
Returns:
Dictionary mapping agent IDs to metadata
"""
def selectOptimalAgent(self, agents: Dict, task_type: str) -> Agent:
"""Select the best agent for a given task.
Args:
agents: Dictionary of available agents
task_type: Type of task to perform
Returns:
Selected Agent instance
"""
def health_check(self) -> Dict[str, Any]:
"""Perform registry health check.
Returns:
Health status dictionary
"""
BaseService
from claude_pm.core.base_service import BaseService
class BaseService:
"""Base class for all framework services."""
async def initialize(self) -> None:
"""Initialize the service.
Must be called before using the service.
"""
async def shutdown(self) -> None:
"""Gracefully shutdown the service."""
@property
def is_initialized(self) -> bool:
"""Check if service is initialized."""
async def health_check(self) -> Dict[str, Any]:
"""Check service health status."""
ConfigService
from claude_pm.core.config_service import ConfigService
class ConfigService(BaseService):
"""Configuration management service."""
def get(self, key: str, default: Any = None) -> Any:
"""Get configuration value.
Args:
key: Configuration key (dot notation supported)
default: Default value if key not found
Returns:
Configuration value or default
"""
def set(self, key: str, value: Any) -> None:
"""Set configuration value.
Args:
key: Configuration key
value: Value to set
"""
def load_from_file(self, filepath: str) -> None:
"""Load configuration from file.
Args:
filepath: Path to configuration file
"""
claude_pm.services
The services module contains specialized services that provide specific functionality.
SharedPromptCache
from claude_pm.services.shared_prompt_cache import SharedPromptCache
class SharedPromptCache:
"""High-performance caching system for agent prompts."""
def __init__(self, max_size: int = 1000, ttl: int = 3600):
"""Initialize cache.
Args:
max_size: Maximum cache entries
ttl: Time-to-live in seconds
"""
def get(self, key: str) -> Optional[str]:
"""Retrieve cached prompt.
Args:
key: Cache key
Returns:
Cached value or None
"""
def set(self, key: str, value: str) -> None:
"""Cache a prompt.
Args:
key: Cache key
value: Prompt content
"""
def invalidate(self, pattern: str = None) -> int:
"""Invalidate cache entries.
Args:
pattern: Optional glob pattern
Returns:
Number of entries invalidated
"""
def get_stats(self) -> Dict[str, Any]:
"""Get cache statistics.
Returns:
Cache performance metrics
"""
HealthMonitor
from claude_pm.services.health_monitor import HealthMonitor
class HealthMonitor(BaseService):
"""System health monitoring service."""
async def check_system_health(self) -> Dict[str, Any]:
"""Comprehensive system health check.
Returns:
Health status for all components
"""
def check_framework_health(self) -> Dict[str, Any]:
"""Check framework-specific health.
Returns:
Framework health metrics
"""
async def monitor_performance(self,
duration: int = 60) -> Dict[str, Any]:
"""Monitor system performance.
Args:
duration: Monitoring duration in seconds
Returns:
Performance metrics
"""
TemplateManager
from claude_pm.services.template_manager import TemplateManager
class TemplateManager(BaseService):
"""Template processing and management service."""
def process_template(self,
template_path: str,
variables: Dict[str, Any]) -> str:
"""Process template with variables.
Args:
template_path: Path to template file
variables: Template variables
Returns:
Processed template content
"""
def get_available_templates(self) -> List[str]:
"""List available templates.
Returns:
List of template names
"""
claude_pm.agents
The agents module contains agent-related functionality.
BaseAgent
from claude_pm.agents.base_agent import BaseAgent
class BaseAgent:
"""Base class for all agents."""
def __init__(self, agent_id: str, metadata: Dict[str, Any]):
"""Initialize agent.
Args:
agent_id: Unique agent identifier
metadata: Agent metadata
"""
async def execute(self,
task: Dict[str, Any],
context: Dict[str, Any]) -> AgentResult:
"""Execute agent task.
Args:
task: Task specification
context: Execution context
Returns:
AgentResult with execution outcome
"""
def get_capabilities(self) -> List[str]:
"""Get agent capabilities.
Returns:
List of capability identifiers
"""
AgentResult
from claude_pm.agents import AgentResult
@dataclass
class AgentResult:
"""Result of agent execution."""
success: bool
output: Any
error: Optional[str] = None
metadata: Dict[str, Any] = field(default_factory=dict)
execution_time: float = 0.0
claude_pm.orchestration
The orchestration module handles multi-agent coordination.
PMOrchestrator
from claude_pm.orchestration import PMOrchestrator
class PMOrchestrator:
"""Main orchestration coordinator."""
async def orchestrate(self,
workflow: Dict[str, Any]) -> OrchestratorResult:
"""Orchestrate multi-agent workflow.
Args:
workflow: Workflow specification
Returns:
OrchestratorResult with outcomes
"""
async def delegate_task(self,
agent_id: str,
task: Dict[str, Any],
timeout: Optional[int] = None) -> AgentResult:
"""Delegate task to specific agent.
Args:
agent_id: Target agent ID
task: Task specification
timeout: Optional timeout in seconds
Returns:
AgentResult from execution
"""
TaskTool
from claude_pm.orchestration import TaskTool
class TaskTool:
"""Subprocess creation and management."""
@staticmethod
async def create_subprocess(agent_type: str,
task_description: str,
context: Dict[str, Any]) -> SubprocessResult:
"""Create agent subprocess.
Args:
agent_type: Type of agent to spawn
task_description: Task description
context: Execution context
Returns:
SubprocessResult with outcome
"""
claude_pm.utils
Utility functions and helpers.
TaskToolHelper
from claude_pm.utils.task_tool_helper import TaskToolHelper
class TaskToolHelper:
"""Helper functions for Task Tool operations."""
@staticmethod
def format_delegation(agent_nickname: str,
task: str,
context: Dict[str, Any]) -> str:
"""Format standard delegation prompt.
Args:
agent_nickname: Agent's short name
task: Task description
context: Task context
Returns:
Formatted delegation prompt
"""
@staticmethod
def parse_agent_result(output: str) -> Dict[str, Any]:
"""Parse agent output.
Args:
output: Raw agent output
Returns:
Parsed result dictionary
"""
Performance
from claude_pm.utils.performance import PerformanceMonitor
class PerformanceMonitor:
"""Performance monitoring utilities."""
def __init__(self):
"""Initialize performance monitor."""
def start_timer(self, operation: str) -> str:
"""Start timing an operation.
Args:
operation: Operation name
Returns:
Timer ID
"""
def end_timer(self, timer_id: str) -> float:
"""End timing and get duration.
Args:
timer_id: Timer ID from start_timer
Returns:
Duration in seconds
"""
def get_metrics(self) -> Dict[str, Any]:
"""Get performance metrics.
Returns:
Performance statistics
"""
CLI Commands
claude_pm.cli
Main CLI entry points and command handlers.
from claude_pm.cli import cli_main
def cli_main(args: List[str] = None) -> int:
"""Main CLI entry point.
Args:
args: Command line arguments
Returns:
Exit code (0 for success)
"""
claude_pm.cmpm_commands
Productivity commands for the cmpm interface.
from claude_pm.cmpm_commands import (
push_command,
deploy_command,
publish_command
)
def push_command(args: argparse.Namespace) -> int:
"""Execute push workflow.
Args:
args: Parsed command arguments
Returns:
Exit code
"""
def deploy_command(args: argparse.Namespace) -> int:
"""Execute deployment workflow.
Args:
args: Parsed command arguments
Returns:
Exit code
"""
def publish_command(args: argparse.Namespace) -> int:
"""Execute publication workflow.
Args:
args: Parsed command arguments
Returns:
Exit code
"""
Environment Variables
Core Configuration
CLAUDE_PM_CONFIG_PATH: Path to configuration fileCLAUDE_PM_LOG_LEVEL: Logging level (debug, info, warning, error)CLAUDE_PM_DEBUG: Enable debug mode (true/false)
API Keys
OPENAI_API_KEY: OpenAI API keyANTHROPIC_API_KEY: Anthropic API key
Performance
CLAUDE_PM_CACHE_ENABLED: Enable caching (true/false)CLAUDE_PM_CACHE_TTL: Cache time-to-live in secondsCLAUDE_PM_MAX_CONCURRENT_AGENTS: Maximum concurrent agents
Model Configuration
CLAUDE_PM_DEFAULT_MODEL: Default AI modelCLAUDE_PM_TEMPERATURE: Model temperature (0.0-1.0)CLAUDE_PM_MAX_TOKENS: Maximum tokens per request
Error Handling
Exception Classes
from claude_pm.exceptions import (
FrameworkError,
AgentNotFoundError,
TaskTimeoutError,
ConfigurationError,
ServiceError
)
class FrameworkError(Exception):
"""Base exception for framework errors."""
class AgentNotFoundError(FrameworkError):
"""Raised when requested agent is not found."""
class TaskTimeoutError(FrameworkError):
"""Raised when task execution times out."""
class ConfigurationError(FrameworkError):
"""Raised for configuration issues."""
class ServiceError(FrameworkError):
"""Raised for service-related errors."""
Error Context
All framework exceptions include contextual information:
try:
result = await orchestrator.delegate_task(agent_id, task)
except AgentNotFoundError as e:
print(f"Agent error: {e}")
print(f"Agent ID: {e.agent_id}")
print(f"Available agents: {e.available_agents}")
Hooks and Extensions
Agent Hooks
from claude_pm.hooks import AgentHooks
class CustomAgentHooks(AgentHooks):
"""Custom agent lifecycle hooks."""
async def pre_execute(self, agent: BaseAgent, task: Dict) -> Dict:
"""Called before agent execution.
Args:
agent: Agent instance
task: Task specification
Returns:
Modified task specification
"""
async def post_execute(self, agent: BaseAgent,
result: AgentResult) -> AgentResult:
"""Called after agent execution.
Args:
agent: Agent instance
result: Execution result
Returns:
Modified result
"""
Service Extensions
from claude_pm.extensions import ServiceExtension
class CustomServiceExtension(ServiceExtension):
"""Custom service extension."""
def register(self, service_manager: ServiceManager) -> None:
"""Register extension with service manager.
Args:
service_manager: Framework service manager
"""
For more examples and usage patterns, see the source code and test files.