Skip to main content

Getting Started

Installation​

Homebrew (macOS and Linux)​

brew install panbanda/brews/omen

Build from Source​

Requires a Rust toolchain (1.92+).

git clone https://github.com/panbanda/omen.git
cd omen
cargo build --release
# Binary at target/release/omen

Docker​

docker pull ghcr.io/panbanda/omen:latest

To analyze the current directory:

docker run --rm -v "$(pwd):/repo" ghcr.io/panbanda/omen:latest -p /repo all

To analyze a specific path inside the container:

docker run --rm -v "/path/to/project:/repo" ghcr.io/panbanda/omen:latest -p /repo complexity

Build from Source​

git clone https://github.com/panbanda/omen.git
cd omen
cargo build --release

The binary will be at target/release/omen. Move it to a directory on your PATH or run it directly.

Verifying the Installation​

omen --version
omen --help

Quick Start​

Run All Analyzers​

The simplest way to get a full picture of a codebase:

omen all

This runs every analyzer against the current directory and prints a summary to stdout.

Run a Single Analyzer​

Each analyzer is a top-level subcommand:

omen complexity
omen graph
omen clones
omen smells
omen deadcode
omen stubs

Check the Repository Score​

omen score

This produces a composite health score from 0 to 100 based on a weighted combination of analyzer results.

JSON Output​

All commands support JSON output for scripting and CI integration:

omen -f json score
omen -f json complexity
omen -f json all

Common Workflows​

Analyze a Remote Repository​

Omen can analyze any public Git repository directly. Pass the owner/repo shorthand with -p:

omen -p facebook/react complexity
omen -p rust-lang/rust score
omen -p expressjs/express all

Omen clones the repository to a temporary directory, runs the analysis, and cleans up afterward.

Analyze a Specific Directory​

omen -p ./src/api complexity
omen -p /absolute/path/to/project score

Create a Configuration File​

Omen supports project-level configuration through omen.toml. There is no omen init command to scaffold one; instead, copy the annotated example and customize it:

curl -O https://raw.githubusercontent.com/panbanda/omen/main/omen.example.toml
mv omen.example.toml omen.toml

If you use Claude Code, the setup-config skill can analyze your repository and generate an omen.toml with intelligent defaults for your tech stack instead. See Configuration for the full list of accepted sections.

Filter by Language​

omen complexity --language rust
omen clones --language typescript

Exclude Files From Analysis​

Most analyzers accept a repeatable -e/--exclude flag for glob patterns, in addition to whatever is configured in omen.toml:

omen complexity -e "**/vendor/**" -e "**/*.pb.go"

Pipeline Integration​

All commands support minified JSON with the global --compact flag, which pairs well with CI logging:

omen -f json score --compact

A typical CI step that fails if the repository score drops below 60:

SCORE=$(omen -f json score | jq '.overall_score')
if [ "$(echo "$SCORE < 60" | bc)" -eq 1 ]; then
echo "Repository score $SCORE is below threshold (60)"
exit 1
fi

What to Explore Next​