This guide is written so a new user can start from zero, but it also serves as an exact reference for agents and CI.
Command name: in dev builds the executable may be
omni-cli, but the command surface isomni.
cd /path/to/your/repo
# Pick a model once
omni model list
omni model use ollama:gemma3:1b
# Preview a plan (does not create commits)
omni commit --preview
# Apply the plan (creates real git commits)
omni commit --apply
# Optional: push the branch after applying
omni commit --apply --pushFor CI/CD you typically want the standalone CLI-only install (no GUI, no AFM sidecar).
curl -fsSL https://edgeleap.github.io/omni.sh | bash -s -- --cliWhy bash -s -- --cli?
bash -stells bash to read the script from stdin--ends bash’s own option parsing--clibecomes$1inside the installer script
GitHub (required for omni pr --apply and omni release --apply):
GITHUB_TOKEN(preferred in GitHub Actions)- or
GH_TOKEN
Remote model (bring-your-own-key; pick one):
- OpenAI:
OPENAI_API_KEY - Anthropic:
ANTHROPIC_API_KEY - Google/Gemini:
GOOGLE_API_KEY
export CI=true
export GITHUB_TOKEN="${GITHUB_TOKEN}"
export OPENAI_API_KEY="${OPENAI_API_KEY}"
omni model use remote:my-openai
omni commit --yes --split --push
omni pr --apply --jsonname: omni
on:
workflow_dispatch:
jobs:
omni:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v4
- name: Install omni (CLI-only)
run: |
curl -fsSL https://edgeleap.github.io/omni.sh | bash -s -- --cli
echo "$HOME/.local/bin" >> $GITHUB_PATH
- name: Run omni
env:
CI: "true"
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
run: |
omni model use remote:my-openai
omni commit --yes --split --push
omni pr --apply --json| File | Location | Purpose |
|---|---|---|
| Commit plan | <repo>/.omni/state/commit.json |
Generated commit(s) title/body + file list |
| PR plan | <repo>/.omni/state/pr.json |
Generated PR title/body |
| Release plan | <repo>/.omni/state/release.json |
Generated release tag/title/body |
Settings are per-user:
| OS | Path |
|---|---|
| macOS | ~/Library/Application Support/omni/settings.json |
| Linux | ~/.local/share/omni/settings.json |
| Windows | %APPDATA%\\omni\\settings.json |
| Model ref | Meaning | Notes |
|---|---|---|
afm |
Local AFM sidecar | macOS + Apple Silicon only |
ollama:<model> |
Local Ollama model | e.g. ollama:gemma3:1b |
remote:<id> |
Remote model configured in Omni settings | requires remote config + key |
--jsonprints machine-readable JSON to stdout.- Progress (spinner) and internal logs print to stderr.
| Command | What it does |
|---|---|
omni --help |
show CLI usage |
omni -h |
alias |
omni help |
alias |
| Command | What it does | Output |
|---|---|---|
omni model --current |
print current default model ref | text |
omni model --current --json |
print { "default_model": "..." } |
JSON |
omni model list |
list usable model refs | text |
omni model list --json |
list usable model refs | JSON |
omni model use afm |
set default model to AFM | ok |
omni model use ollama:<model> |
set default model to Ollama | ok |
omni model use remote:<id> |
set default model to remote model | ok |
| Command | What it does | Output |
|---|---|---|
omni remote list |
list configured remote models | text |
omni remote list --json |
list configured remote models | JSON |
omni remote add <id> <provider> <modelId> <name...> |
add/update remote model metadata | ok |
omni remote set-key <id> [apiKey] |
store key in OS keychain | ok |
OMNI_REMOTE_API_KEY=... omni remote set-key <id> |
same via env var | ok |
omni remote test <id> |
test key + modelId works | text |
omni remote test <id> --json |
same as JSON | JSON |
omni remote rm <id> |
remove remote model metadata | ok |
omni remote rm <id> --delete-key |
also delete key from keychain | ok |
Providers supported today: openai, anthropic, google.
Keychain entry name:
remote-model:<id>(service:com.omni.app)
By default, Omni uses the same file set as the GUI:
- tracked unstaged changes
- tracked staged changes
- untracked files (but not gitignored)
| Flag | Meaning |
|---|---|
--preview |
generate plan only (default behavior) |
--apply |
apply an existing saved plan |
--edit |
print the plan file path |
--yes |
one-shot: generate plan then apply immediately |
--split (alias --auto-split) |
auto-split into multiple commits (batch size = 3 files) |
--push |
after apply, push the current branch to origin |
--json |
print JSON to stdout |
| Command | What it does | Best for |
|---|---|---|
omni commit |
preview (generate plan) | humans |
omni commit --preview |
preview (explicit) | humans |
omni commit --preview --split |
preview multi-commit plan | humans |
omni commit --preview --json |
preview + plan JSON | agents |
omni commit --preview --split --json |
split + plan JSON | agents |
omni commit --edit |
print plan file path | humans/agents |
omni commit --apply |
apply saved plan | humans |
omni commit --apply --push |
apply + push | humans/CI |
omni commit --yes |
generate + apply | CI/agents |
omni commit --yes --split |
generate split plan + apply | CI/agents |
omni commit --yes --split --push |
generate + apply + push | CI/agents |
Human (review first):
omni commit --preview --split
omni commit --apply
omni commit --apply --pushAgent (capture plan JSON):
omni commit --preview --split --json > /tmp/commit-plan.jsonCI (one-shot):
omni commit --yes --split --pushPR has two phases:
- preview = generate a PR plan (title/body)
- apply = create the PR on GitHub using that plan
| Command | What it does | Best for |
|---|---|---|
omni pr |
preview (generate PR plan) | humans |
omni pr --preview |
preview (explicit) | humans |
omni pr --preview --json |
preview + plan JSON | agents |
omni pr --edit |
print PR plan path | humans/agents |
omni pr --apply |
create PR from saved plan | humans |
omni pr --apply --json |
create PR and print JSON response | CI/agents |
omni pr --yes |
apply-only alias for --apply |
CI |
Human:
omni pr --preview
omni pr --applyCI (two-step; pr --yes is apply-only today):
omni pr --preview --json > /tmp/pr-plan.json
omni pr --apply --jsonRelease also has two phases:
- preview = generate a release plan (tag/title/body)
- apply = create the GitHub release (or draft)
| Command | What it does | Best for |
|---|---|---|
omni release --preview --tag v1.2.3 |
preview using explicit tag | humans/CI |
omni release --preview --json |
preview + plan JSON | agents |
omni release --edit |
print plan path | humans/agents |
omni release --apply |
create GitHub release from saved plan | humans |
omni release --apply --draft |
create GitHub release draft | humans |
omni release --apply --json |
create release and print JSON response | CI/agents |
Human:
omni release --preview --tag v1.2.3
omni release --applyCI (two-step):
omni release --preview --tag v1.2.3 --json > /tmp/release-plan.json
omni release --apply --jsonNote: GitHub release creation requires
GITHUB_TOKEN/GH_TOKEN(GitHub Actions providesGITHUB_TOKENautomatically).
Omni maps common errors like “no files after gitignore filtering” / “nothing to commit” into actionable messages.
Typical fix:
git status
git add <files>
omni commit --previewIf GitHub returns 422 during PR creation, Omni shows a friendly “PR already exists” message.
| Env var | Purpose |
|---|---|
OMNI_DEBUG_PROMPTS=1 |
enable prompt tap (writes temp prompt files) |
OMNI_DEBUG_AFM=1 |
keep AFM payload temp file |
OMNI_AFM_SIDECAR_PATH=/abs/path/to/omni |
override AFM sidecar path |
OMNI_REMOTE_API_KEY=... |
provide key for omni remote set-key <id> |