Configuration Management

That Evolves With Your Infastructure

Pattern-Driven Configuration

Define your infrastructure as code with the expressive power of Jsonnet. Achieve consistency and reduce errors.

Robust Verification

Lint, test, and validate your Patterns before deployment, ensuring they function as intended. Prevent costly downtime.

Flexible Deployment Models

Choose deployment strategies that fit your needs. Push for centralized control, pull for decentralized environments.

Dynamic Automation

Trigger commands and Patterns based on webhooks and events. Streamline workflows and respond rapidly to changes.

Securely connect to any device via HTTP-based shell. Manage your entire infrastructure from a centralized interface.

Write Your Configurations Using Real Code

No more YAML, no more Jinja

local makeApp = import '../lib/myorg/makeApp.libsonnet';
local runApp = import '../lib/myorg/runApp.libsonnet';

{
  build: [
    makeApp(myapp1),
    makeApp(myapp2),
  ],
  run: [
    runApp(runApp1),
    runApp(runApp2),
  ]
}

Deploy Configurations Once, Read From Many

Manage thousands of devices quickly and efficiently

$ etcha build mypattern.jsonnet mypattern.jwt
$ s3 cp mypattern.jwt s3://mybucket/mypattern.jwt
$ etcha listen
INFO  Updating config for listen
INFO  Always changing write a file.

Event Driven Automation

Create bespoke webook integrations to quickly prototype or define new workflows

$ etcha listen
INFO  Always changing trigger event
INFO  Changing trigger event
INFO  Running source myapp for event trigger from ID trigger event