Core service for managing headless Debian-based nodes. Provides a plugin system, TUI interface (raspi-config style), REST API, and job scheduler — all in a single binary.
- Plugin architecture — modular, separate repos compiled into one binary
- TUI interface — interactive menus via Bubble Tea (raspi-config style)
- Headless mode —
--headlessfor systemd/daemon use (API server only) - REST API — embedded HTTP server for remote access and future web UI
- Job scheduler — cron-based recurring tasks defined by plugins
- Job history — execution history persisted to disk, survives restarts
- Single binary — cross-compile for ARM, no runtime dependencies
- .deb packaging — install with
dpkg, systemd service included
curl -fsSL https://raw.githubusercontent.com/msutara/config-manager-core/main/scripts/install.sh | sudo bashOr with a specific version/architecture:
curl -fsSL https://raw.githubusercontent.com/msutara/config-manager-core/main/scripts/install.sh | sudo bash -s -- --version 0.2.0 --arch armhfDownload the latest release for your architecture from GitHub Releases:
# Raspberry Pi 2 / UCK Gen1 (ARMv7)
sudo dpkg -i cm_<version>_armhf.deb
# Raspberry Pi 4+ (ARM64)
sudo dpkg -i cm_<version>_arm64.deb
# x86_64
sudo dpkg -i cm_<version>_amd64.debThe package installs a systemd service and sets up directories. Start with:
sudo systemctl start cm# Native build
make build
# Cross-compile all targets (amd64, arm64, armhf)
make build-all
# Build .deb packages for all architectures
make deb-all./cm # run with defaults
./cm --config /path/to/config.yaml # custom config
./cm --version # show versionCM Core reads configuration from /etc/cm/config.yaml (or the path given
via --config). All settings can be overridden with environment variables.
| Setting | Env Var | Default | Description |
|---|---|---|---|
listen_host |
CM_LISTEN_HOST |
localhost |
API server bind address |
listen_port |
CM_LISTEN_PORT |
7788 |
API server port |
log_level |
CM_LOG_LEVEL |
info |
Log verbosity (debug, info, warn, error) |
data_dir |
CM_DATA_DIR |
/var/lib/cm |
Persistent data directory |
storage_backend |
CM_STORAGE_BACKEND |
json |
Job history backend (json) |
job_history_max_runs |
CM_JOB_HISTORY_MAX_RUNS |
50 |
Max run records per job (0 = unlimited) |
enabled_plugins |
CM_ENABLED_PLUGINS |
(all) | Comma-separated plugin allowlist |
theme |
CM_THEME |
(default) | TUI theme name or absolute path |
- Usage Guide — CLI options, configuration, and deployment
- How It Works — architecture and plugin model
- SPEC.md — core specification
- ARCHITECTURE.md — internal structure
- PLUGIN-INTERFACE.md — plugin contract
- API.md — REST API specification
See DEVELOPMENT.md for the multi-repo development workflow, including Go workspace setup, integration testing, plugin creation, and release procedures.
See CONTRIBUTING.md for guidelines.
See SECURITY.md for vulnerability reporting.
See LICENSE for details.