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
28 changes: 14 additions & 14 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,19 +45,19 @@ jobs:
with:
path: FFAI

- name: Checkout sibling metaltile
- name: Checkout sibling ffai-kernels
# Pinned to `dev` for now because:
# - thewafflehaus/metaltile main is behind upstream's CLI rework.
# - upstream/metaltile main is a `gm` placeholder commit.
# - thewafflehaus/ffai-kernels main is behind upstream's CLI rework.
# - upstream/ffai-kernels main is a `gm` placeholder commit.
# - All the kernels FFAI's Ops.swift expects live on
# thewafflehaus/metaltile dev (post the ek/std-kernels merge).
# thewafflehaus/ffai-kernels dev (post the ek/std-kernels merge).
# Move back to `main` once we sync our org's main from upstream's
# post-CLI-rework main, or cut a metaltile release tag and pin to it.
# post-CLI-rework main, or cut a ffai-kernels release tag and pin to it.
uses: actions/checkout@v6
with:
repository: thewafflehaus/metaltile
repository: thewafflehaus/ffai-kernels
ref: dev
path: metaltile
path: ffai-kernels

- name: Show toolchain
run: |
Expand All @@ -70,14 +70,14 @@ jobs:
with:
toolchain: stable

- name: Cache cargo registry + metaltile build
- name: Cache cargo registry + ffai-kernels build
uses: actions/cache@v5
with:
path: |
~/.cargo/registry
~/.cargo/git
${{ github.workspace }}/metaltile/target
key: cargo-${{ runner.os }}-${{ hashFiles('metaltile/Cargo.lock', 'metaltile/Cargo.toml') }}
${{ github.workspace }}/ffai-kernels/target
key: cargo-${{ runner.os }}-${{ hashFiles('ffai-kernels/Cargo.lock', 'ffai-kernels/Cargo.toml') }}
restore-keys: |
cargo-${{ runner.os }}-

Expand All @@ -95,13 +95,13 @@ jobs:
run: swift package resolve

- name: Generate kernel artifacts (tile build --emit all)
# Compiles metaltile and produces kernels.metallib + manifest.json
# Compiles ffai-kernels and produces kernels.metallib + manifest.json
# + Generated/MetalTileKernels.swift into FFAI/Sources/MetalTileSwift/.
# Once the `tile` binary ships via Homebrew this no longer needs
# the sibling metaltile checkout. Run from metaltile/ so its
# the sibling ffai-kernels checkout. Run from ffai-kernels/ so its
# rust-toolchain.toml (nightly, 2024 edition) is picked up.
working-directory: metaltile
# `tile build` spawns the `__tile_runner` subprocess (a metaltile-std
working-directory: ffai-kernels
# `tile build` spawns the `__tile_runner` subprocess (a ffai-kernels-std
# bin) for kernel discovery, resolved by bare name via PATH. Build both
# binaries and put target/release on PATH so the spawn resolves —
# `cargo run --bin tile` alone never builds the sibling runner.
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ jobs:
# `make format-check` runs swift-format with --recursive .
# which will trip on `Sources/MetalTileSwift/Generated/MetalTileKernels.swift`.
# That file is normally regenerated by `tile build --emit` (sibling
# metaltile repo), which would prepend `// swift-format-ignore-file`.
# CI doesn't run the metaltile codegen — much faster to drop an
# ffai-kernels repo), which would prepend `// swift-format-ignore-file`.
# CI doesn't run the ffai-kernels codegen — much faster to drop an
# empty stub with the directive so the lint pass skips it.
run: |
mkdir -p Sources/MetalTileSwift/Generated
Expand Down
16 changes: 8 additions & 8 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,14 +72,14 @@ jobs:
path: FFAI
fetch-depth: 0 # full history so the release job can do tag math

- name: Checkout sibling metaltile
- name: Checkout sibling ffai-kernels
# Pinned to `dev`; see ci.yml for why. Bump to `main` (or a
# release tag) when upstream stabilizes.
uses: actions/checkout@v6
with:
repository: thewafflehaus/metaltile
repository: thewafflehaus/ffai-kernels
ref: dev
path: metaltile
path: ffai-kernels

- name: Show toolchain
run: |
Expand All @@ -92,14 +92,14 @@ jobs:
with:
toolchain: stable

- name: Cache cargo registry + metaltile build
- name: Cache cargo registry + ffai-kernels build
uses: actions/cache@v5
with:
path: |
~/.cargo/registry
~/.cargo/git
${{ github.workspace }}/metaltile/target
key: cargo-${{ runner.os }}-${{ hashFiles('metaltile/Cargo.lock', 'metaltile/Cargo.toml') }}
${{ github.workspace }}/ffai-kernels/target
key: cargo-${{ runner.os }}-${{ hashFiles('ffai-kernels/Cargo.lock', 'ffai-kernels/Cargo.toml') }}
restore-keys: cargo-${{ runner.os }}-

- name: Cache SwiftPM build artifacts
Expand Down Expand Up @@ -127,8 +127,8 @@ jobs:
run: swift package resolve

- name: Generate kernel artifacts (tile build --emit all)
working-directory: metaltile
# Build `__tile_runner` (metaltile-std bin) alongside `tile` and put it
working-directory: ffai-kernels
# Build `__tile_runner` (ffai-kernels-std bin) alongside `tile` and put it
# on PATH — `tile build` spawns it by bare name and `cargo run --bin
# tile` never builds the sibling runner.
run: |
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,12 @@ jobs:
key: rust-${{ runner.os }}-${{ hashFiles('rust/Cargo.lock') }}
restore-keys: rust-${{ runner.os }}-

- name: Sync metaltile to dev tip
# The metaltile crates are a `branch = "dev"` git dependency, which
- name: Sync ffai-kernels to dev tip
# The ffai-kernels crates are a `branch = "dev"` git dependency, which
# Cargo.lock pins to a specific rev. Re-resolve just those crates so
# CI tracks the live dev branch (the rest of the lock stays put), and
# picks up kernel fixes the moment they land on metaltile dev.
run: cargo update -p metaltile-core -p metaltile-codegen -p metaltile-runtime -p metaltile-std
# picks up kernel fixes the moment they land on ffai-kernels dev.
run: cargo update -p ffai-kernels-core -p ffai-kernels-codegen -p ffai-kernels-runtime -p ffai-kernels-std

- name: Build workspace (default = metal backend)
run: cargo build --workspace
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Package.resolved

# Generated kernel artifacts (regenerated on every build by SPM plugin).
# Ignore everything in Generated/ except .gitkeep so the directory
# survives a fresh clone before metaltile-emit runs.
# survives a fresh clone before ffai-kernels-emit runs.
Sources/MetalTileSwift/Resources/kernels.metallib
Sources/MetalTileSwift/Resources/manifest.json
Sources/MetalTileSwift/Resources/kernels/
Expand Down
2 changes: 1 addition & 1 deletion Package.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// swift-tools-version: 6.1
//
// FFAI — F*cking Fast Apple Inference
// FFAI — F*cking Fast AI
//
// Apple Silicon LLM inference library built on pre-compiled Metal kernels
// generated from the metaltile Rust DSL.
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# FFAI

**F*cking Fast Apple Inference.**
**F*cking Fast AI.**

A minimal, dependency-light LLM inference library for Apple Silicon, built on pre-compiled Metal kernels generated from the [metaltile](https://github.com/thewafflehaus/metaltile) DSL. No Python. No MLX. No C compilation. No JIT. No four-repo dependency chain.

Expand Down
2 changes: 1 addition & 1 deletion Sources/FFAI/FFAI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
//
// FFAI — F*cking Fast Apple Inference
// FFAI — F*cking Fast AI
//
// See planning/plan.md and planning/architecture.md.

Expand Down
2 changes: 1 addition & 1 deletion Sources/FFAICLI/FFAIRoot.swift
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import Foundation
struct FFAIRoot: AsyncParsableCommand {
static let configuration = CommandConfiguration(
commandName: "ffai",
abstract: "F*cking Fast Apple Inference — Apple Silicon LLM CLI.",
abstract: "F*cking Fast AI — Apple Silicon LLM CLI.",
// `--version` is auto-wired by swift-argument-parser when this is
// non-empty; it prints the string + exits 0 before any subcommand
// dispatches. Sourced from `FFAI.version` so there's one source of
Expand Down
Loading
Loading