XConf Admin is a comprehensive configuration management server designed for RDK (Reference Design Kit) devices. It provides a centralized platform for managing device configurations, firmware updates, telemetry settings, and various administrative functions across RDK deployments.
- Configuration Management: Centralized management of device configurations
- Firmware Management: Control firmware distribution and updates
- Telemetry Services: Manage telemetry profiles and data collection
- Device Control Manager (DCM): Handle device control and settings
- Feature Management: Control feature flags and rules
- Authentication & Authorization: JWT-based security with role-based access control
- RESTful API: Comprehensive REST API for all operations
- Metrics & Monitoring: Built-in Prometheus metrics support
- Canary Deployments: Support for gradual rollouts
- Go 1.23+: This project requires Go version 1.23 or later
- Cassandra: For data persistence (configure in config file)
- Git: For version control and building
git clone https://github.com/rdkcentral/xconfadmin.git
cd xconfadmingo mod downloadmake buildThis will create a binary bin/xconfadmin-{OS}-{ARCH} (e.g., bin/xconfadmin-linux-amd64)
Set the following required environment variables:
export SAT_CLIENT_ID='your_client_id'
export SAT_CLIENT_SECRET='your_client_secret'
export SECURITY_TOKEN_KEY='your_security_token_key'Create a configuration file based on the sample provided:
cp config/sample_xconfadmin.conf config/xconfadmin.confEdit the configuration file to match your environment settings including:
- Server port and timeouts
- Database connection details
- Logging configuration
- Authentication settings
- Service endpoints
mkdir -p /app/logs/xconfadminbin/xconfadmin-linux-amd64 -f config/xconfadmin.confTest the server is running:
curl http://localhost:9001/api/v1/versionExpected response:
{
"status": 200,
"message": "OK",
"data": {
"code_git_commit": "abc123",
"build_time": "2025-09-08T10:00:00Z",
"binary_version": "v1.0.0",
"binary_branch": "main",
"binary_build_time": "2025-09-08_10:00:00_UTC"
}
}The XConf Admin server provides several API endpoints organized by functionality:
- Version:
GET /api/v1/version- Get application version info - Health:
GET /health- Health check endpoint - Metrics:
GET /metrics- Prometheus metrics
- Authentication:
/auth/*- Authentication and authorization - Firmware:
/firmware/*- Firmware management - DCM:
/dcm/*- Device Control Manager - Telemetry:
/telemetry/*- Telemetry configuration - Features:
/feature/*- Feature management - Settings:
/setting/*- Various device settings
# Get firmware configurations
curl -H "Authorization: Bearer <token>" http://localhost:9001/api/firmware/configs
# Update device settings
curl -X POST -H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"key":"value"}' \
http://localhost:9001/api/dcm/settingsxconfadmin/
βββ adminapi/ # Admin API handlers and services
β βββ auth/ # Authentication and authorization
β βββ canary/ # Canary deployment management
β βββ change/ # Change management
β βββ dcm/ # Device Control Manager
β βββ firmware/ # Firmware management
β βββ queries/ # Query handlers
β βββ rfc/ # Remote Feature Control
β βββ setting/ # Settings management
β βββ telemetry/ # Telemetry services
βββ common/ # Common utilities and constants
βββ config/ # Configuration files
βββ http/ # HTTP utilities and middleware
βββ shared/ # Shared components
βββ taggingapi/ # Tagging API
βββ util/ # Utility functions
make testmake localtestmake cover
make htmlmake buildmake cleanmake releaseXConf Admin includes built-in monitoring capabilities:
- Prometheus Metrics: Available at
/metricsendpoint - Health Checks: Available at
/healthendpoint - Structured Logging: JSON-formatted logs with configurable levels
- Request Tracing: Optional OpenTelemetry integration
We welcome contributions! Please see our Contributing Guidelines for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Run the test suite
- Submit a pull request
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
For support and questions:
- Create an issue in the GitHub repository
- Check the documentation
- Review existing issues and discussions
- xconfwebconfig - Web configuration service
- RDK Central - RDK Central organization
Note: This is a configuration management server for RDK devices. Ensure proper security measures are in place when deploying in production environments.