Go to file
johnride 67b5c2df07
All checks were successful
Run Check Script / check (push) Successful in 1m11s
Compile and package harmony_composer / package_harmony_composer (push) Successful in 5m41s
Merge pull request 'feat: Add iobench project and python dashboard' (#112) from feat/iobench into master
Reviewed-on: https://git.nationtech.io/NationTech/harmony/pulls/112
2025-08-19 16:24:31 +00:00
.cargo upgrade stack size from default 1MB on windows (k3d stack overflow otherwise) 2025-05-11 22:39:23 -04:00
.gitea/workflows fix: remove sha256 for harmony composer image in harmony_composer workflow 2025-08-11 19:49:06 -04:00
adr feat: Add ntfy score (#69) 2025-07-02 16:19:35 +00:00
data/watchguard feat: ncd0 example complete. Missing files for authentication, ignition etc are accessible upon deman. This is yet another great step towards full UPI automated provisionning 2025-05-06 11:44:40 -04:00
docs docs: New README, two options to choose from right now (#59) 2025-06-12 18:16:43 +00:00
examples fix: bring back to TUI 2025-08-15 12:47:36 -04:00
harmony Merge remote-tracking branch 'origin/master' into feat/secrets 2025-08-19 12:00:19 -04:00
harmony_cli fix: bring back to TUI 2025-08-15 12:47:36 -04:00
harmony_composer fix: make sure demo works on both local & remote target (#107) 2025-08-14 20:42:09 +00:00
harmony_macros chore: reformat & clippy cleanup (#96) 2025-08-06 15:57:14 +00:00
harmony_secret feat: Secret module works with infisical and local file storage backends 2025-08-19 11:59:21 -04:00
harmony_secret_derive feat: Secret module works with infisical and local file storage backends 2025-08-19 11:59:21 -04:00
harmony_tui fix: bring back to TUI 2025-08-15 12:47:36 -04:00
harmony_types feat: add serde derive to Score types 2025-04-05 14:36:08 -04:00
iobench chore(iobench-dash): Delete older revisions and rename to iobench-dash.py for clarity 2025-08-19 12:21:42 -04:00
k3d refactor: Remove InterpretStatus/Error & Outcome from Topology 2025-08-06 22:29:00 -04:00
opnsense-config chore: reformat & clippy cleanup (#96) 2025-08-06 15:57:14 +00:00
opnsense-config-xml feat: Secret module works with infisical and local file storage backends 2025-08-19 11:59:21 -04:00
private_repos/example chore: Fix more warnings 2025-04-24 13:14:35 -04:00
.dockerignore feat: create harmony_composer initial version + rework CI (#58) 2025-06-18 19:52:37 +00:00
.gitattributes Try out bifrost and see if we want to use it as bare metal provisionner 2024-08-28 16:16:36 -04:00
.gitignore chore: cleanup of unncessary files & adjust gitignores 2025-07-20 20:03:26 -04:00
Cargo.lock Merge remote-tracking branch 'origin/master' into feat/secrets 2025-08-19 12:00:19 -04:00
Cargo.toml Merge remote-tracking branch 'origin/master' into feat/secrets 2025-08-19 12:00:19 -04:00
check.sh chore: reformat & clippy cleanup (#96) 2025-08-06 15:57:14 +00:00
CONTRIBUTING.md docs: Add CONTRIBUTING.md guide 2025-05-29 10:47:38 -04:00
Dockerfile chore: reformat & clippy cleanup (#96) 2025-08-06 15:57:14 +00:00
LICENSE chore: Reorganize file tree for easier onboarding. Rust project now at the root for simple git clone && cargo run 2025-02-12 15:32:59 -05:00
README.md fix(cli): simplify running the CLI by hiding the maestro inside the implemtation (#93) 2025-08-04 20:59:07 +00:00

Harmony : Open-source infrastructure orchestration that treats your platform like first-class code

By NationTech

Build License

Unify

  • Project Scaffolding
  • Infrastructure Provisioning
  • Application Deployment
  • Day-2 operations

All in one strongly-typed Rust codebase.

Deploy anywhere

From a developer laptop to a global production cluster, a single source of truth drives the full software lifecycle.


1 · The Harmony Philosophy

Infrastructure is essential, but it shouldnt be your core business. Harmony is built on three guiding principles that make modern platforms reliable, repeatable, and easy to reason about.

Principle What it means for you
Infrastructure as Resilient Code Replace sprawling YAML and bash scripts with type-safe Rust. Test, refactor, and version your platform just like application code.
Prove It Works — Before You Deploy Harmony uses the compiler to verify that your applications needs match the target environments capabilities at compile-time, eliminating an entire class of runtime outages.
One Unified Model Software and infrastructure are a single system. Harmony models them together, enabling deep automation—from bare-metal servers to Kubernetes workloads—with zero context switching.

These principles surface as simple, ergonomic Rust APIs that let teams focus on their product while trusting the platform underneath.


2 · Quick Start

The snippet below spins up a complete production-grade LAMP stack with monitoring. Swap it for your own scores to deploy anything from microservices to machine-learning pipelines.

use harmony::{
    data::Version,
    inventory::Inventory,
    maestro::Maestro,
    modules::{
        lamp::{LAMPConfig, LAMPScore},
        monitoring::monitoring_alerting::MonitoringAlertingStackScore,
    },
    topology::{K8sAnywhereTopology, Url},
};

#[tokio::main]
async fn main() {
    // 1. Describe what you want
    let lamp_stack = LAMPScore {
        name: "harmony-lamp-demo".into(),
        domain: Url::Url(url::Url::parse("https://lampdemo.example.com").unwrap()),
        php_version: Version::from("8.3.0").unwrap(),
        config: LAMPConfig {
            project_root: "./php".into(),
            database_size: "4Gi".into(),
            ..Default::default()
        },
    };

    // 2. Enhance with extra scores (monitoring, CI/CD, …)
    let mut monitoring = MonitoringAlertingStackScore::new();
    monitoring.namespace = Some(lamp_stack.config.namespace.clone());

    // 3. Run your scores on the desired topology & inventory
    harmony_cli::run(
        Inventory::autoload(),                // auto-detect hardware / kube-config
        K8sAnywhereTopology::from_env(),      // local k3d, CI, staging, prod…
        vec![
          Box::new(lamp_stack),
          Box::new(monitoring)
        ],
        None
    ).await.unwrap();
}

Run it:

cargo run

Harmony analyses the code, shows an execution plan in a TUI, and applies it once you confirm. Same code, same binary—every environment.


3 · Core Concepts

Term One-liner
Score Declarative description of the desired state (e.g., LAMPScore).
Interpret Imperative logic that realises a Score on a specific environment.
Topology An environment (local k3d, AWS, bare-metal) exposing verified Capabilities (Kubernetes, DNS, …).
Maestro Orchestrator that compiles Scores + Topology, ensuring all capabilities line up at compile-time.
Inventory Optional catalogue of physical assets for bare-metal and edge deployments.

A visual overview is in the diagram below.

Harmony Core Architecture


4 · Install

Prerequisites:

  • Rust
  • Docker (if you deploy locally)
  • kubectl / helm for Kubernetes-based topologies
git clone https://git.nationtech.io/nationtech/harmony
cd harmony
cargo build --release          # builds the CLI, TUI and libraries

5 · Learning More


6 · License

Harmony is released under the GNU AGPL v3.

We choose a strong copyleft license to ensure the project—and every improvement to it—remains open and benefits the entire community. Fork it, enhance it, even out-innovate us; just keep it open.

See LICENSE for the full text.


Made with ❤️ & 🦀 by the NationTech and the Harmony community