Earthly Lunar is a Guardrails Engine for your Engineering Stack
It continuously evaluates this data against your organization's engineering standards, and enforces them in developer workflows.
How Lunar Works
Automated engineering standards enforcement in minutes
Integration Points
Instrumentation
at Scale
Lunar instruments all your code repositories and CI/CD pipelines in a central manner.
No repo-by-repo integration needed.
Install the Lunar App to your GitHub organization with a single click.
Lunar monitors code changes, then provides automated feedback on pull requests based on your engineering standards.
Add the CI agent to any self-hosted runner by modifying the entrypoint to prepend lunar ci-agent --. The Lunar CI Agent starts up, launches and instruments your CI runner.
No root needed. Because it's the parent process, it has permission to instrument the syscalls of the runner's entire process tree.
Execution Flow
Once instrumented, Lunar automatically runs these steps on every code change
Automatic Data Collection
Collect application metadata from:
- • Code and configuration files
- • Tools used in CI/CD
- • Registries and Artifactories coming soon
Centralized SDLC data as JSON
A structured JSON document reflects the overall posture of each application in rich detail.
The normalized data is stored in a central database.
Real-time Guardrail Feedback
Guardrails define practices to enforce. Lunar's guardrails-as-code verifies that each application's JSON SDLC data abides by defined standards.
Real-time guardrail feedback is provided on every code change, directly in developer PRs.
The Result?
Standards that enforce themselves.
No manual checklists. No forever‑backlogged tickets.
No release‑day surprises.
Example Guardrails
Real standards you can enforce in minutes, not months
Code Coverage Standards Example
Step 1: Collect the data
- on: [all-services]
hook:
type: ci-after-command
pattern: ^codecov.*
runBash: |-
lunar collect "codecov.ran" true
Detect if the CodeCov process (pattern: ^codecov.*) is being run in a CI pipeline.
Step 2: Enforce the guardrail
- enforcement: block-pr
runPython: |-
with Check("codecov", "Test coverage") as c:
c.assert_exists(".codecov.ran")
Enforce that all services run CodeCov. Block the PR if not used.
100+ Guardrails Off the Shelf
Repository and Ownership
Deployment and Infrastructure
Testing and Quality
DevEx, Build and CI
Security and Compliance
Operational Readiness
100+ pre-built guardrails across Dockerfiles,
Kubernetes, Terraform, CI/CD, security, and compliance.
Plus: Custom guardrail builder to codify your
unique standards.
Gradual Enforcement
Roll out guardrails progressively with multiple enforcement levels.
Start gentle,
then tighten them as your teams adopt standards.
Configure Per Guardrail
policies: - name: "ensure-non-root-containers" enforcement: block-pr - name: "sbom-generation" enforcement: report-pr - name: "critical-vuln-fixes" enforcement: block-deploy - name: "new-experimental-check" enforcement: draft
Make a New Guardrail in 5 Minutes
See how you can develop a custom collector and guardrail from scratch.
Why Not Just Use CI?
CI is essential for repository-specific verification, such as building and testing.
But
for global standards enforcement, it falls
short.
CI Only
Earthly Lunar
Ready to Automate Your Standards?
See how Lunar can turn your engineering wiki, compliance docs, or postmortem action items into automated guardrails with our 100+ built-in policies.