Skip to content

msutara/config-manager-core

Config Manager Core

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.

Features

  • Plugin architecture — modular, separate repos compiled into one binary
  • TUI interface — interactive menus via Bubble Tea (raspi-config style)
  • Headless mode--headless for 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

Installation

Quick install (recommended)

curl -fsSL https://raw.githubusercontent.com/msutara/config-manager-core/main/scripts/install.sh | sudo bash

Or 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 armhf

From .deb package

Download 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.deb

The package installs a systemd service and sets up directories. Start with:

sudo systemctl start cm

From source

# Native build
make build

# Cross-compile all targets (amd64, arm64, armhf)
make build-all

# Build .deb packages for all architectures
make deb-all

Quick Start

./cm                              # run with defaults
./cm --config /path/to/config.yaml  # custom config
./cm --version                    # show version

Configuration

CM 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

Documentation

Specifications

Development

See DEVELOPMENT.md for the multi-repo development workflow, including Go workspace setup, integration testing, plugin creation, and release procedures.

Contributing

See CONTRIBUTING.md for guidelines.

Security

See SECURITY.md for vulnerability reporting.

License

See LICENSE for details.

About

Core service for managing headless Debian-based nodes — plugin system, REST API, job scheduler

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors