Configuration¶
Learn how to customize the A2A Registry server configuration.
Command Line Options¶
The A2A Registry server can be configured using command line arguments:
Basic Options¶
Option | Default | Description |
---|---|---|
--host |
127.0.0.1 |
Host address to bind the server |
--port |
8000 |
Port number to listen on |
--debug |
False |
Enable debug mode |
--log-level |
INFO |
Logging level (DEBUG, INFO, WARNING, ERROR) |
Examples¶
Development Setup¶
For development, you might want to enable debug mode and bind to all interfaces:
Production Setup¶
For production, use more conservative settings:
Environment Variables¶
You can also configure the server using environment variables:
Variable | Description | Example |
---|---|---|
A2A_REGISTRY_HOST |
Server host address | 0.0.0.0 |
A2A_REGISTRY_PORT |
Server port | 8080 |
A2A_REGISTRY_LOG_LEVEL |
Logging level | INFO |
A2A_REGISTRY_DEBUG |
Debug mode | true |
Example:
export A2A_REGISTRY_HOST=0.0.0.0
export A2A_REGISTRY_PORT=8080
export A2A_REGISTRY_LOG_LEVEL=INFO
a2a-registry serve
Storage Configuration¶
Currently, the A2A Registry uses in-memory storage by default. This means:
- All data is lost when the server restarts
- No persistent storage is required
- Fast performance for development and testing
Future Storage Options¶
Future versions will support additional storage backends:
- File-based storage - JSON or SQLite files
- Database storage - PostgreSQL, MySQL, etc.
- Redis storage - For distributed setups
Logging Configuration¶
Log Levels¶
- DEBUG: Detailed information for debugging
- INFO: General information about server operation
- WARNING: Warning messages for potential issues
- ERROR: Error messages for serious problems
Log Format¶
The server uses structured logging with the following information:
- Timestamp
- Log level
- Logger name
- Message
- Additional context (for requests, errors, etc.)
Example log output:
2025-01-15 10:30:00,123 - INFO - a2a_registry.server - Registered agent: weather-agent
2025-01-15 10:30:05,456 - INFO - uvicorn.access - 127.0.0.1:54321 - "GET /agents HTTP/1.1" 200
Security Considerations¶
Development vs Production¶
Development: - Debug mode enabled - Detailed error messages - Verbose logging
Production: - Debug mode disabled - Generic error messages - Minimal logging
Network Security¶
- Bind to
127.0.0.1
for local-only access - Bind to
0.0.0.0
only when needed for external access - Consider using a reverse proxy (nginx, Apache) in production
- Implement proper firewall rules
Performance Tuning¶
Server Settings¶
For high-traffic scenarios, consider:
- Using a production ASGI server like
gunicorn
withuvicorn
workers - Implementing connection pooling
- Adding caching layers
- Using external storage backends
Example Production Setup¶
# Using gunicorn with uvicorn workers
gunicorn a2a_registry.server:app \
--worker-class uvicorn.workers.UvicornWorker \
--workers 4 \
--bind 127.0.0.1:8000
Monitoring and Health Checks¶
Health Check Endpoint¶
The registry provides a health check endpoint at /health
:
Response:
Metrics and Monitoring¶
For production deployments, consider adding:
- Application metrics (Prometheus, etc.)
- Request/response logging
- Error tracking (Sentry, etc.)
- Performance monitoring (APM tools)
Troubleshooting¶
Common Issues¶
Port already in use:
Permission denied on port 80/443:
Can't access from other machines:
Debug Mode¶
Enable debug mode for troubleshooting:
This will provide detailed logging and better error messages.