GitOps for Linux hosts · no Kubernetes

Your Linux fleet, reconciled to Git.

Detect drift, preview changes, and safely roll out Git-managed configuration across VMs and bare metal — without inbound agent ports or Kubernetes.

Self-hosted · Pull-based agents · Free for up to 10 hosts

web-1 · app/nginx OutOfSync
package nginx 1.24.0 — present
−file /etc/nginx.conf worker_processes 1; — drift on host
+file /etc/nginx.conf worker_processes auto; — from git
service nginx running — enabled
preview the diff → sync · roll back · prune
Reconciles fromGitLab/GitHub/Gitea ontoUbuntu · Debian/RHEL · Rocky tested & supported
Why hostcd

GitOps for the Linux fleet outside Kubernetes.

For teams that outgrew running Ansible by hand or on cron, but don't want Puppet, NixOS, or to pull plain servers into Kubernetes just to get a reviewed, reversible source of truth.

Detect and repair drift

Continuously compare each host with Git and, per app, restore the declared state or just alert.

Preview before rollout

Review the exact host-level diff before a change is applied — the way the demo above shows it.

Approve production changes Team

Require review before production syncs, with a second approver on gated projects.

Roll back to a commit

Return an application to an exact previously applied revision, from the web UI.

No inbound agent access

Agents pull over HTTPS. Regular operation needs no inbound SSH and no open agent ports.

Audit every operation Automation · Team

Record who approved, applied or rolled back each change. Automate audit delivery and SIEM integration on Team.

How it works

Desired state in Git. Everything else reconciles.

Point an app at a Git folder and the hosts it covers. The control plane renders each host's manifest; the agent dials out, pulls it, and keeps the host matching.

hostcd web UI: the nginx application reconciled across web-1, web-2 and web-3, showing per-host resources and which files differ from Git.
Real UI — one app reconciled across three hosts, with the files that drift from Git marked inline.
01

Declare

An app points at a Git folder and a set of hosts — packages, files, services, users, cron and more.

02

Render

One standalone control plane renders the desired state per host and tracks every revision.

03

Reconcile

Each agent dials out over HTTPS, pulls its manifest and applies it. Nothing inbound on the host.

04

Observe

Drift shows as a diff. Sync, roll back or prune from the web UI, with a full audit trail.

preview→ approve (Team)→ rollout→ audit
                 git (GitLab / GitHub / Gitea)
                            │  fetch, webhook
                ┌───────────▼───────────┐
                │     hostcd-server     │  UI + API · renders per host
                │     (one per fleet)    │  sync · history · rollback
                └───────────▲───────────┘
   long-poll HTTPS │   hosts only dial out — nothing inbound on them
        ┌──────────────┬────┴─────────┬──────────────┐
   hostcd-agent   hostcd-agent   hostcd-agent   hostcd-agent
      web-1          web-2           db-1         stg-web-1
Editions

One distribution. Three editions.

Static binaries, no runtime dependencies — server, agent, CLI and embedded web UI. Team and Enterprise are unlocked with a signed license token, verified offline.

Community

Free · BSL 1.1
  • Up to 10 managed hosts
  • Git-driven config, drift, sync, rollback, history
  • App sets, projects, backup & restore
  • Web UI, API, pull agent
Founding price · preview

Team

€99/mo
  • Up to 50 managed hosts
  • Approval gates on production syncs
  • Outbound notifications (Slack / webhooks)
  • Automated audit export & SIEM delivery
  • Email support · 2-business-day response target

Enterprise

Custom · volume host limits
  • Everything in Team
  • SSO — SAML 2.0 & OIDC · SCIM provisioning
  • Postgres HA · Vault sealing
  • SLA support

Offline license · no credit card · self-hosted. Founding Team — €99/mo, billed annually (up to 50 hosts), available during public preview; the price is locked for your initial 12-month subscription. Support at this tier is email with a two-business-day response target — no SLA.

CapabilityCommunityTeamEnterprise
PriceFree€99/mo · foundingCustom
Managed hosts receiving new revisions10up to 50Contracted
Git config · drift · sync · rollback✓✓✓
App sets · projects · backup & restore✓✓✓
Web UI · API · pull agent✓✓✓
Approval gates—✓✓
Outbound notifications—✓✓
Automated audit export / SIEM integration—✓✓
SSO — SAML 2.0 & OIDC——✓
SCIM provisioning——✓
Postgres HA · Vault sealing——✓
SupportCommunityEmail · 2-day targetSLA
Trust model

Built for a tool with root on your servers.

No inbound agent portsThe agent dials out; hostcd opens no port on the host.
Credentials protected at restPasswords hashed, secrets encrypted on disk.
Optional mutual TLSPin agents to the control plane with mTLS.
Signed releases & SBOMCosign provenance and a bill of materials.
Auditable changesWho approved, applied or rolled back each change.
Offline license checksSigned tokens verified locally — no phone-home.
Disclosure policySecurity policy and a reporting path.
Pull-based by defaultOptional SSH only at initial enrollment.

Regular operation is pull-based HTTPS; optional SSH is used only during initial host enrollment. Full details in the security policy & threat model ↗.

FAQ

Licensing, in plain terms.

How long is the Team trial?

A 14-day trial starts automatically when you enrol your first host — no key, no sign-up. Want longer? Request a free 30-day trial token (here): it's a signed, offline license — no phone-home — and it only ever unlocks the Team features, never Enterprise.

What happens when the Team trial ends?

Nothing is deleted. You keep up to 10 active hosts that keep reconciling; you choose which ones. Hosts above the Community limit stay visible and keep enforcing the revision they last accepted — hostcd still corrects drift back to that configuration — but they receive no newer Git revisions until a license is installed or a Community slot is freed.

Does a lapsed license lock me out?

No. A lapse never deletes data or stops the control plane. After the grace period, hosts above the Community limit stay visible and keep enforcing the revision they last accepted — hostcd still corrects drift back to it — but they receive no newer Git revisions until a license is installed or a slot is freed. Backup, full data export, the audit trail, local admin login and license installation stay available — always. (Automated audit integrations are the Team feature, not access to your own data.)

Is licensing really offline?

Yes. License tokens are signed and verified locally against an embedded key — there is no phone-home, so air-gapped deployments work the same.

Which operating systems are supported?

Ubuntu/Debian and RHEL/Rocky, tested and supported. A Windows Server agent is in development — see the docs for its status.

What is the licence?

The Community core is under the Business Source License 1.1 — a source-available licence that converts to Apache-2.0 on its change date. The public release ships signed binaries with cosign provenance and an SBOM you can verify independently; the code repository is not public yet. Enterprise modules are gated by a signed key.

What do I actually run?

A single control plane for the fleet and one lightweight agent per host — static binaries a small team can operate. Your desired state stays in your own Git repository.

Get started

Reconcile your fleet from Git.

Install the control plane, enroll a host, point it at a Git repo. Self-hosted and free for your first 10 hosts.

Install the control plane · Linux
curl -fsSL https://github.com/Inblade/hostcd-dist/releases/latest/download/install.sh \ | sudo env HOSTCD_RELEASE_BASE=https://github.com/Inblade/hostcd-dist/releases/latest/download sh -s -- server

A 14-day Team trial starts automatically on your first host — no key, no sign-up — and a free 30-day trial token (request it) extends it. The one-command install above always fetches the current latest release and verifies the download; for a reproducible production install, pin a specific version. Want expiry reminders and help reaching your first sync? Leave your email (optional).

Talk to us

Start Team or evaluate Enterprise.

To buy a Team licence, request an Enterprise evaluation or volume pricing, or get help taking a Team trial to its first sync. This goes straight to the maintainer — nothing is posted publicly.

Prefer email? write to us directly. Company name is never required.

We use what you send only to reply and to help with your trial — no third-party marketing. We keep it until the conversation is over, then delete it; ask us to remove it any time. Submissions are handled by Formspree, our form processor.