flamingock-java is a free, open source compliance & risk management project written in Java and released under Apache-2.0. It has 500 GitHub stars, 66 forks and 11 open issues, and was last pushed 9 days ago. On this registry it ranks #56 of 57 tracked projects in Compliance & Risk Management, with 5 head-to-head comparisons available.

What is flamingock-java?

Flamingock is an Apache-2.0 Java library that brings Change-as-Code to an application's stack, applying versioned, auditable changes to the external systems an application depends on — database schemas, message queues, event and API schemas, configuration values, and cloud resources — at startup and in lockstep with the code release, for Java and Kotlin teams that need system evolution to be governed rather than run from manual scripts.

What it is

Flamingock is an open-source project written in Java and distributed through Maven Central, consumed as a Gradle plugin with the identifier io.flamingock and configured through a community() step. It implements Change-as-Code (CaC): every change to an external system is defined as code, versioned, reviewable, executable, and auditable, then applied in a strict, deterministic order when the application starts, verified before traffic is served, and recorded in an external audit log. If Flamingock cannot guarantee a safe outcome, it stops rather than proceeding, which prevents silent corruption and partial execution. The project carries topics such as changelog, database-schema, schema-evolution, event-schema, and springboot, and its documentation lives at docs.flamingock.io.

The concrete problem it solves is the gap between an application's code and the things outside that code which the application depends on. Keeping a schema, a queue, a feature flag, or a configuration value in sync across environments typically means manual scripts, tribal knowledge, and hoping nothing breaks during a deploy. Flamingock replaces those out-of-band scripts and runbooks with an ordered, auditable execution tied to the application lifecycle, so a deployment behaves as a single consistent unit. It is explicitly not Infrastructure-as-Code: it does not provision servers, clusters, or networks, which the project assigns to tools such as Terraform and Pulumi, and instead covers the evolution layer that provisioning tools leave untouched.

Key capabilities

  • Change-as-Code authoring: changes are defined as code in Java or Kotlin, or declaratively in YAML using official or custom templates, and remain versioned and reviewable.
  • Unified system evolution: database schemas and reference data, message queues, topics and event schemas, APIs and configuration values, cloud resources tied to application behaviour, and feature flags, permissions and runtime policies are orchestrated as one ordered evolution.
  • Startup-time synchronization: all required changes are applied when the application starts, so each environment is consistent before it serves traffic.
  • Safety by default: the tool refuses to proceed when a safe outcome cannot be guaranteed, requiring manual intervention instead of allowing hidden corruption or partial execution.
  • Audit logging: every execution is recorded externally with full traceability of what ran, when, by whom, and with what result.
  • Coordinated multi-environment execution: change execution is managed safely across multiple environments and multiple application instances.
  • Native GraalVM support: full compatibility with native image builds for fast startup and low memory usage.

Who uses it and how

  • Java and Kotlin teams running Spring Boot services that want schema, queue, and configuration changes to ship as part of the release instead of as a separate migration step with its own runbook.
  • Teams operating several environments and more than one application instance, who rely on coordinated execution so changes are applied once and consistently rather than raced by each instance.
  • Organisations with audit and compliance obligations that need an external record showing what ran, when, by whom, and with what result for every environment.
  • Platform teams that already provision infrastructure with Terraform or Pulumi and want an evolution layer for application-level systems without pushing application configuration into provisioning code.
  • Existing Mongock users assessing the transition, since the project presents itself as Mongock's evolution for changes that extend beyond the database.

Getting started

Add the Gradle plugin id("io.flamingock") version "[VERSION]" and configure flamingock { community() }, replacing the placeholder with the latest version published on Maven Central. The project points to a Quick Start guide on docs.flamingock.io and to a separate examples repository for working setups.

How it compares

Among the tools named in the project's own material, Flamingock positions itself as the evolution of Mongock, aimed at teams that used Mongock for database change management and now need the same ordered, auditable model applied to queues, APIs, configurations, and cloud resources. It is framed as complementary to infrastructure-as-code tools such as Terraform and Pulumi rather than a competitor: those define where systems run, while Flamingock defines how they evolve.

When to use it — and when not to

A self-hoster takes on the operation of the external audit log Flamingock writes to and must ensure that the databases, brokers, and cloud services being changed are reachable at application startup, because execution is bound to the application lifecycle rather than to a standalone deployment job. It is the wrong choice for provisioning servers, clusters, or networks, and for teams that want infrastructure definition and system evolution handled by one tool. A fair limitation is that the README lists the categories of systems it manages but does not enumerate the individual integrations or their maturity, and it does not detail what the enterprise offering adds beyond the Apache-2.0 core, so integration-specific verification against the documentation is worthwhile before committing.

project readme (upstream, from github) — read inline

Auditable, versioned changes across distributed systems.

Evolve queues, DBs, APIs, configs, resources and more — governed, auditable, applied at startup in lockstep.

Coming from <a href="https://github.com/flamingock/mongock-legacy#%EF%B8%8F-mongock-is-deprecated">Mongock</a>?  
Learn about the transition and why Flamingock is its evolution.

Maven Version Build License

🚀 Getting started

plugins {
    id("io.flamingock") version "[VERSION]"
}

flamingock {
    community()
}

Replace [VERSION] with the latest from Maven Central.


🧩 What is Flamingock?

When you deploy an app, it usually depends on things outside your code — a database schema, a queue, a feature flag, a config value.

Keeping all of that in sync across environments often means: manual scripts, tribal knowledge, and hoping nothing breaks.

Flamingock brings Change-as-Code (CaC) to your application stack.

It applies versioned, auditable changes to the external systems your application depends on — as part of the application lifecycle itself.

Changes are:

  • applied in a strict, deterministic order at startup
  • verified before serving traffic
  • recorded in an external audit log

If Flamingock cannot guarantee a safe outcome, it stops — preventing silent corruption or partial execution.

The result: every deployment behaves as a single, consistent unit — code and system evolution, moving forward together.


💡 What Flamingock manages

Flamingock handles application-level system changes, including:

  • Database schemas and reference data
  • Message queues, topics, and schemas
  • APIs and configuration values
  • Cloud resources directly tied to application behavior
  • Feature flags, permissions, and runtime policies

What Flamingock does not manage

Flamingock is not Infrastructure-as-Code.

It does not provision servers, clusters, or networks — those belong in tools like Terraform or Pulumi.

Infrastructure-as-Code defines where systems run.
Change-as-Code defines how systems evolve.

Flamingock complements IaC by managing the evolution layer IaC does not cover.


🔑 Key features

  • Unified system evolution
    Orchestrate changes across your full stack — databases, event schemas, queues, cloud resources, configs, and policies — as a single, ordered evolution.

  • Change-as-Code (CaC)
    Define every system change as code: versioned, reviewable, executable, and auditable.

  • Programmatic or declarative
    Author changes in Java/Kotlin or define them declaratively using YAML with official or custom templates.

  • Startup-time synchronization
    Apply all required changes when the application starts, ensuring every environment is consistent before serving traffic.

  • Safety by default
    Flamingock refuses to proceed when it cannot guarantee a safe outcome.
    No silent failures. No partial execution.
    Manual intervention is required instead of hidden corruption.

  • Audit logging
    Every execution is recorded externally with full traceability: what ran, when, by whom, and with what result.

  • OSS core, enterprise-ready
    A production-grade foundation you own and control.

  • Native GraalVM support
    Fully compatible with native image builds for fast startup and low memory usage.

  • Coordinated multi-environment execution
    Safely manage change execution across multiple environments and application instances.


📘 Learn more


🤝 Contributing

Flamingock is built in the open.

If you'd like to report a bug, suggest an improvement, or contribute code, please see CONTRIBUTING.md.


📢 Get involved

⭐ Star the project to show support


📜 License

Flamingock is open source under the Apache License 2.0.

Frequently asked questions

Is flamingock-java free to use?

flamingock-java is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does flamingock-java do?

Flamingock brings Change-as-Code (CaC) to your entire stack. It applies versioned, auditable changes to the external systems your application depends on — such

What is flamingock-java written in?

flamingock-java is primarily written in Java. Its source is publicly available at https://github.com/flamingock/flamingock-java, and it has 500 GitHub stars.