Eden is a Rust-powered CLI tool that verifies required dependencies and configurations are properly installed before development begins. Run one command to ensure your dev environment is ready.
| Platform | Channel | Command / Link |
|---|---|---|
| All | GitHub Releases | Download from releases page |
| All | crates.io | cargo install eden-cli |
| macOS / Linux | Homebrew | brew install omnidotdev/tap/eden |
| Arch Linux | AUR / AUR (bin) | paru -S omnidotdev-eden or paru -S omnidotdev-eden-bin |
git clone https://github.com/omnidotdev/eden-cli
cd eden-cli
cargo build --release
# Binary will be at target/release/eden- Initialize a config file in your project root:
eden initOr create an eden.toml manually:
[checks]
binaries = ["docker", "node", "bun"]
environment = ["DATABASE_URL"]- Run the preflight check:
eden checkExample output:
π± Binary: docker - v29.1.3 (/usr/bin/docker)
π± Binary: node - v25.2.1 (/usr/bin/node)
π± Binary: bun - v1.3.5(/usr/bin/bun)
π₯ Env: DATABASE_URL - not set
π± 3 sprouted, π₯ 1 needs water
Eden supports multiple config formats:
- TOML:
eden.toml - YAML:
eden.yaml/eden.yml - JSON:
eden.json/eden.jsonc
Generate a starter config:
eden init
eden init --format yamlIf no --format is specified, Eden will default to TOML.
[checks]
# binaries that must be in PATH
binaries = [
"git",
"docker",
"node",
]
# environment variables that must be set
environment = [
"DATABASE_URL",
"API_KEY",
]eden check # run all checks (default)
eden check -c custom.toml # use custom config file
eden init # create starter config
eden --help # show help
eden --version # show version- New Developer Onboarding: Include in your README as the first setup step
- CI/CD Pipelines: Verify environments before running tests
- Pre-commit Hooks: Ensure environment consistency
- Documentation: Self-documenting project requirements
- Version constraints for binaries (
node >= 18) - Interactive fix mode (
eden fix) - Network connectivity checks
- Disk space checks
- Custom script validators
- Host JSON schema on the internet
Eden uses a dual-package setup (Rust crate + npm package) with automated version synchronization:
- Source of truth:
package.jsonholds the canonical version, and is used for Changesets - Sync script:
scripts/syncVersion.tspropagates the version toCargo.toml - Changesets: Manages version bumps and changelog generation
The sync script runs automatically during the release process via the version npm script:
bun run version # syncs `package.json` version β `Cargo.toml`| Workflow | Trigger | Purpose |
|---|---|---|
test.yml |
Push/PR to master |
Runs fmt, clippy, and tests |
sync.yml |
PR to master |
Validates version sync, fmt, clippy, test, build |
release.yml |
Push to master |
Creates releases via Changesets, builds multi-platform binaries |
The sync workflow will fail if package.json and Cargo.toml versions diverge.
- Create a changeset:
bun changeset - Push to
master - Changesets action creates a "Version Packages" PR
- Merge the PR to trigger a release with binaries for:
x86_64-unknown-linux-gnuaarch64-unknown-linux-gnux86_64-apple-darwinaarch64-apple-darwin
- Manually publish to crates.io:
cargo publish
- Omni CLI: Agentic CLI for the Omni ecosystem
- Omni Terminal: GPU-accelerated terminal emulator built to run everywhere
The code in this repository is licensed under MIT, Β© Omni LLC. See LICENSE.md for more information.
