Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 1 addition & 44 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,22 +28,12 @@ jobs:
target: x86_64-unknown-linux-gnu
suffix: ""
prebuilt: llama-b9837-bin-ubuntu-x64.tar.gz
- name: Linux-x86_64-cuda
os: ubuntu-22.04
target: x86_64-unknown-linux-gnu
suffix: -cuda
cuda: true
- name: Linux-x86_64-vulkan
os: ubuntu-24.04
target: x86_64-unknown-linux-gnu
suffix: -vulkan
vulkan: true
prebuilt: llama-b9837-bin-ubuntu-vulkan-x64.tar.gz
- name: Linux-x86_64-sycl
os: ubuntu-22.04
target: x86_64-unknown-linux-gnu
suffix: -sycl
sycl: true
steps:
- uses: actions/checkout@v4
with:
Expand All @@ -64,44 +54,17 @@ jobs:
echo "LLAMA_CPP_PREBUILT_DIR=/tmp/llama-prebuilt/llama-b9837" >> "$GITHUB_ENV"
echo "LLAMA_PREBUILT_SRC=/tmp/llama-prebuilt/llama-b9837" >> "$GITHUB_ENV"

# Source build dependencies (only needed when no prebuilt archive is used)
- name: Install deps (Linux)
if: runner.os == 'Linux' && !matrix.prebuilt
run: sudo apt-get update && sudo apt-get install -y cmake libclang-dev pkg-config libssl-dev libopenblas-dev

- name: Install deps (Linux, prebuilt)
if: runner.os == 'Linux' && matrix.prebuilt
run: sudo apt-get update && sudo apt-get install -y libclang-dev libssl-dev

- name: Install CUDA toolkit
if: matrix.cuda
uses: Jimver/cuda-toolkit@v0.2.22
with:
cuda: "12.6.3"
method: network
sub-packages: '["nvcc", "cudart"]'
non-cuda-sub-packages: '["libcublas", "libcublas-dev"]'

# libvulkan-dev provides the unversioned libvulkan.so the linker needs
# (-lvulkan). Required even for the prebuilt Vulkan target: its archive
# ships libggml-vulkan but links against the system Vulkan loader.
- name: Install Vulkan SDK
if: matrix.vulkan
run: sudo apt-get update && sudo apt-get install -y glslc libvulkan-dev

- name: Add Intel oneAPI repository
if: matrix.sycl
run: |
cd /tmp
wget -qO- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | sudo gpg --dearmor -o /usr/share/keyrings/intel-oneapi-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/intel-oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/intel-oneapi.list

- name: Install Intel oneAPI
if: matrix.sycl
run: |
sudo apt-get update
sudo apt-get install -y intel-oneapi-compiler-dpcpp-cpp intel-oneapi-mkl-devel

- name: Install deps (macOS)
if: runner.os == 'macOS'
run: brew install openssl@3
Expand All @@ -117,14 +80,8 @@ jobs:

- name: Build release binary
env:
GGML_CUDA: ${{ matrix.cuda && 'ON' || '' }}
GGML_SYCL: ${{ matrix.sycl && 'ON' || '' }}
GGML_VULKAN: ${{ matrix.vulkan && 'ON' || '' }}
run: |
if [ "${{ matrix.sycl }}" = "true" ]; then
source /opt/intel/oneapi/setvars.sh
fi
cargo build --release --features llama-native -p autocommit-cli --target ${{ matrix.target }}
run: cargo build --release --features llama-native -p autocommit-cli --target ${{ matrix.target }}

- name: Package artifact
run: |
Expand Down
15 changes: 5 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ No API keys. No cloud. Fully local inference powered by [llama.cpp](https://gith
- **Commit generation** — analyzes staged/worktree diffs, generates conventional commit messages with interactive approve/edit/cancel flow
- **PR generation** — generates PR title and body, creates or updates pull requests via `gh`, with branch selection and optional push
- **Version bump recommendations** — detects manifest files (Cargo.toml, package.json, go.mod, etc.), suggests semver bumps, syncs lockfiles after applying
- **Local inference** — ships with llama.cpp compiled in, supports Metal (macOS), CUDA (NVIDIA), Vulkan (cross-vendor), and SYCL (Intel) GPU acceleration
- **Local inference** — ships with llama.cpp compiled in. Pre-built binaries cover CPU, Metal (macOS), and Vulkan (cross-vendor GPU); CUDA (NVIDIA) and SYCL (Intel) are supported when building from source
- **Per-repo config** — caches model state and runtime settings under `.git/autocommit/` for fast subsequent runs

## Installation
Expand All @@ -37,17 +37,9 @@ sudo mv autocommit /usr/local/bin/
curl -L https://github.com/MicroPerceptron/autocommit/releases/latest/download/autocommit-x86_64-unknown-linux-gnu.tar.gz | tar xz
sudo mv autocommit /usr/local/bin/

# Linux (CUDA — NVIDIA GPUs)
curl -L https://github.com/MicroPerceptron/autocommit/releases/latest/download/autocommit-x86_64-unknown-linux-gnu-cuda.tar.gz | tar xz
sudo mv autocommit /usr/local/bin/

# Linux (Vulkan — Intel/AMD/NVIDIA GPUs, requires Vulkan drivers)
curl -L https://github.com/MicroPerceptron/autocommit/releases/latest/download/autocommit-x86_64-unknown-linux-gnu-vulkan.tar.gz | tar xz
sudo mv autocommit /usr/local/bin/

# Linux (SYCL — Intel GPUs, requires Intel oneAPI runtime)
curl -L https://github.com/MicroPerceptron/autocommit/releases/latest/download/autocommit-x86_64-unknown-linux-gnu-sycl.tar.gz | tar xz
sudo mv autocommit /usr/local/bin/
```

### cargo binstall
Expand All @@ -68,12 +60,15 @@ cargo install --path crates/cli --locked --features llama-native

#### GPU backend selection

By default, Metal is used on macOS and CUDA is auto-detected on Linux. To build with a different GPU backend:
The default build (and every pre-built binary) uses CPU on Linux, Metal on macOS, and Vulkan when requested. CUDA and SYCL have no pre-built binaries — selecting them requires the matching toolkit and compiles llama.cpp from source:

```sh
# Vulkan (requires Vulkan SDK + glslc)
GGML_VULKAN=ON cargo install --path crates/cli --locked --features llama-native
Comment on lines +63 to 67

# CUDA / NVIDIA (requires CUDA Toolkit)
GGML_CUDA=ON cargo install --path crates/cli --locked --features llama-native

# SYCL / Intel oneAPI (requires oneAPI toolkit)
source /opt/intel/oneapi/setvars.sh
GGML_SYCL=ON cargo install --path crates/cli --locked --features llama-native
Expand Down
Loading