Go to file
wjro 987f195e2f
Some checks are pending
Run Check Script / check (push) Waiting to run
Compile and package harmony_composer / package_harmony_composer (push) Waiting to run
feat(cert-manager): add cluster issuer to okd cluster score (#157)
added score to install okd cluster issuer

Reviewed-on: https://git.nationtech.io/NationTech/harmony/pulls/157
2025-10-21 15:55:55 +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
.sqlx feat(opnsense-config): dnsmasq dhcp static mappings (#130) 2025-09-08 19:06:17 +00:00
adr feat(opnsense-config): dnsmasq dhcp static mappings (#130) 2025-09-08 19:06:17 +00:00
brocade feat(host_network): configure bonds on the host and switch port channels 2025-10-16 14:23:41 -04:00
data feat(opnsense-config): dnsmasq dhcp static mappings (#130) 2025-09-08 19:06:17 +00:00
demos/cncf-k8s-quebec-meetup-september-2025 feat: Update readme with newer UX/DX Rust Leptos app, update slides and misc stuff 2025-09-10 15:40:32 -04:00
docs feat(opnsense-config): dnsmasq dhcp static mappings (#130) 2025-09-08 19:06:17 +00:00
examples fix: remove ceph osd deletes and purges osd from ceph osd tree\ (#120) 2025-10-21 15:54:51 +00:00
harmony feat(cert-manager): add cluster issuer to okd cluster score (#157) 2025-10-21 15:55:55 +00:00
harmony_cli report application deploy URL 2025-09-09 22:18:00 -04:00
harmony_composer feat(host_network): configure bonds on the host and switch port channels 2025-10-16 14:23:41 -04:00
harmony_inventory_agent feat: automatically discover inventory (#127) 2025-08-31 22:45:07 +00:00
harmony_macros feat: add hurl! and local_folder! macros to make Url easier to create (#135) 2025-09-08 14:43:41 +00:00
harmony_secret feat(opnsense-config): dnsmasq dhcp static mappings (#130) 2025-09-08 19:06:17 +00:00
harmony_secret_derive wip: rename harmony-secret* by harmony_secret* 2025-08-28 14:29:24 -04:00
harmony_tui make instrumentation sync instead of async to avoid concurrency issues 2025-08-29 06:03:59 -04:00
harmony_types feat(switch/brocade): Implement client to interact with Brocade Switch 2025-10-15 15:28:24 -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 fix: Multiple ingress fixes for localk3d, it works nicely now for Application and ntfy at least. Also fix k3d kubeconfig context by force switching to it every time. Not perfect but better and more intuitive for the user to view his resources. 2025-09-09 16:41:53 -04:00
migrations feat(opnsense-config): dnsmasq dhcp static mappings (#130) 2025-09-08 19:06:17 +00:00
opnsense-config fix(opnsense-config): ensure load balancer service configuration is idempotent (#129) 2025-10-20 19:18:49 +00:00
opnsense-config-xml fix(opnsense-config): ensure load balancer service configuration is idempotent (#129) 2025-10-20 19:18:49 +00: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 feat(opnsense-config): dnsmasq dhcp static mappings (#130) 2025-09-08 19:06:17 +00:00
.gitignore feat(opnsense-config): dnsmasq dhcp static mappings (#130) 2025-09-08 19:06:17 +00:00
.gitmodules feat(example): added an example of packaging a rust app from github (#124) 2025-09-08 13:52:25 +00:00
Cargo.lock fix: remove ceph osd deletes and purges osd from ceph osd tree\ (#120) 2025-10-21 15:54:51 +00:00
Cargo.toml fix(opnsense-config): ensure load balancer service configuration is idempotent (#129) 2025-10-20 19:18:49 +00:00
check.sh wip(inventory-agent): local presence advertisement and discovery using mdns almost working 2025-08-29 01:10:43 -04:00
CONTRIBUTING.md docs: Add CONTRIBUTING.md guide 2025-05-29 10:47:38 -04:00
Dockerfile feat: Bump harmony_composer rust version to 1.89 2025-08-23 16:27:04 -04: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 feat: Update readme with newer UX/DX Rust Leptos app, update slides and misc stuff 2025-09-10 15:40:32 -04: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 Rust + Leptos Webapp with monitoring. Swap it for your own scores to deploy anything from microservices to machine-learning pipelines.

use harmony::{
    inventory::Inventory,
    modules::{
        application::{
            ApplicationScore, RustWebFramework, RustWebapp,
            features::{PackagingDeployment, rhob_monitoring::Monitoring},
        },
        monitoring::alert_channel::discord_alert_channel::DiscordWebhook,
    },
    topology::K8sAnywhereTopology,
};
use harmony_macros::hurl;
use std::{path::PathBuf, sync::Arc};

#[tokio::main]
async fn main() {
    let application = Arc::new(RustWebapp {
        name: "harmony-example-leptos".to_string(),
        project_root: PathBuf::from(".."), // <== Your project root, usually .. if you use the standard `/harmony` folder
        framework: Some(RustWebFramework::Leptos),
        service_port: 8080,
    });

    // Define your Application deployment and the features you want
    let app = ApplicationScore {
        features: vec![
            Box::new(PackagingDeployment {
                application: application.clone(),
            }),
            Box::new(Monitoring {
                application: application.clone(),
                alert_receiver: vec![
                    Box::new(DiscordWebhook {
                        name: "test-discord".to_string(),
                        url: hurl!("https://discord.doesnt.exist.com"), // <== Get your discord webhook url
                    }),
                ],
            }),
        ],
        application,
    };

    harmony_cli::run(
        Inventory::autoload(),
        K8sAnywhereTopology::from_env(), // <== Deploy to local automatically provisioned local k3d by default or connect to any kubernetes cluster
        vec![Box::new(app)],
        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